Publié à l’origine par Sarah-Beth Bianchi (8 décembre 2014)
Comment puis-je déterminer l’URL de confiance de mon application ?
L’URL de confiance est simplement une URL de votre infrastructure que vous utiliserez pour recevoir des paires ID utilisateur\clé. Le paramètre x_target que vous ajoutez à vos appels API doit apparier cette valeur pour que l’authentification se poursuive. Vous devriez avoir une bonne idée de l’emplacement de ce point de terminaison au moment où vous inscrivez l’application, car l’URL de confiance est un champ obligatoire dans le formulaire de demande d’inscription de l’application.
Le champ URL approuvée est modifiable à partir de l' Gérer l’extensibilité pour toute application existante à domaine limité.
Remarque : Les applications universelles doivent être modifiées dans le keytool D2L par un administrateur D2L Keytool.
Si la valeur de l’URL approuvée change, ou si vous ne savez pas ce que ce sera au moment de l’enregistrement de votre application, vous pouvez mettre une valeur d’espace réservé (par exemple, https://apitesttool.desire2learnvalence.com/index.php) en place, puis revenir en arrière et modifier cette valeur dans l’outil Gérer l’extensibilité.
Pourquoi est-ce que je reçois l’erreur « La valeur 'x_target' de la demande ne correspond pas aux valeurs autorisées pour cette application. Contacter votre administrateur » ?
Ce message d’erreur indique que votre application tente d’envoyer des jetons d’authentification à un emplacement qui ne correspond pas à celui spécifié dans votre URL de confiance. Pour résoudre ce problème, vous devez mettre à jour la valeur URL approuvée de votre application. Si nécessaire, vous pouvez créer plusieurs applications, chacune avec sa propre valeur d’URL approuvée.
Comment puis-je mettre à jour mon URL de confiance ?
Vous pouvez facilement mettre à jour la valeur URL approuvée en modifiant l’enregistrement de l’application dans l’outil Gérer l’extensibilité :
- Trouvez votre application dans le Gérer l’extensibilité Liste.
- Cliquez sur le nom de l’application pour afficher l’écran des détails de l’application.
- Cliquez sur Modifier.
- Modifiez le URL de confiance et cliquez sur Mise à jour.
Figure : Vous pouvez modifier le URL de confiance pour votre application dans le Modifier l’enregistrement de la demande page.
L’URL approuvée doit-elle être l’emplacement complet qui reçoit les informations d’identification de l’utilisateur ou le domaine est-il suffisant ?
TrustedUrl doit être l’URL complète.
Et nous voulons vraiment dire l’URL complète ; la chaîne de requête, fragment, tout cela. Si vous devez maintenir l’état avant et après la connexion (ce qui est généralement le cas), vous devrez définir un cookie sur le navigateur de l’utilisateur avant de l’envoyer se connecter avec D2L.
Pourquoi l’URL approuvée n’est-elle pas par domaine (ou préfixe, etc.) ?
La raison en est subtile. Prenons un exemple de l’URL https://mysite.com/randomOtherFeature?returnUrl=<...>. Étant donné que ce domaine a une redirection ouverte (c’est-à-dire une URL qui prend une autre URL dans le cadre de la requête et y envoie l’utilisateur avec un 302, etc.), cela permet à un attaquant de définir le x_target sur https://mysite.com/randomOtherFeature?returnUrl=http://evil.com/foo.</...>
Lorsque Brightspace redirige l’utilisateur vers « mysite » après la connexion, il l’envoie à https://mysite.com/randomOtherFeature?returnUrl=http://evil.com/foo&x_a = &x_b = qui redirigerait ensuite l’utilisateur vers . Les navigateurs définissent souvent un en-tête Référent qui est l’adresse de la page qui les a envoyés. Dans ce cas, cet en-tête a l’id utilisateur\clé, ainsi les obtient de l’en-tête de référent.
En pratique, les redirecteurs ouverts sont très courants. Nous avons fait le choix d’être très stricts ici.
L’URL de confiance est-elle uniquement requise pour obtenir la paire Id utilisateur-Clé du contexte utilisateur ?
TrustedUrl n’est pertinent que pour le processus de connexion. C’est tout ce que vous envoyez dans le x_target à Brightspace. Par exemple, dans l’exemple C#, la valeur de returnUrl ici :
https://github.com/Brightspace/valence-sdk-dotnet/blob/master/samples/Basic/Basic/Controllers/HomeController.cs#L63