Utiliser le flux d’octroi implicite OAuth 2.0 dans votre site Power Pages
Cette fonctionnalité permet à un client de passer des appels côté client aux API externes et de les sécuriser à l’aide de flux d’octroi implicite OAuth. Elle fournit un point de terminaison pour obtenir des jetons d’ID sécurisés. Ces jetons d’accès sécurisés qui contiendront les informations d’identité utilisateur à utiliser par des API externes pour l’autorisation selon le flux d’octroi implicite OAuth 2.0. Les informations d’identité d’un utilisateur connecté sont transmises de manière sécurisée aux appels AJAX externes, ce qui aide les développeurs à transmettre le contexte d’authentification et aidera également les utilisateurs à sécuriser leurs API.
Certificats personnalisés
Utilisez le centre d’administration Power Platform pour charger le certificat personnalisé. Après avoir chargé le certificat personnalisé, vous devez mettre à jour les paramètres du site comme ci-dessous :
Accédez à l’application Gestion du portail et, dans la section Site web, sélectionnez Paramètres du site.
Pour créer un paramètre, sélectionnez Nouveau.
Pour modifier un paramètre existant, sélectionnez CustomCertificates/ImplicitGrantflow.
Spécifier des valeurs :
- Nom :CustomCertificates/ImplicitGrantflow
- Site Web : site Web associé
- Valeur : copiez l’empreinte du certificat personnalisé chargé à partir de l’écran Gérer le certificat personnalisé et collez-la ici. La valeur indiquera quel certificat sera utilisé pour le flux d’octroi implicite.
Cliquez sur Enregistrer et fermer.
Détails du point de terminaison du jeton
Vous pouvez également obtenir un jeton en faisant une requête Post au point de terminaison <portal_url>/_services/auth/token
. Le point de terminaison de jeton prend en charge les paramètres suivants :
Paramètre | Obligatoire ? | Description |
---|---|---|
client_id | Non | Chaîne transmise lord d’un appel au point de terminaison. Vous devez vous assurer que l’ID client est enregistré. Sinon, une erreur s’affiche. L’ID client est ajouté dans les revendications dans le jeton en tant que paramètre aud et appid et peut être utilisé par les clients pour confirmer que le jeton retourné est pour leur application.La longueur maximale est de 36 caractères. Seuls les caractères alphanumériques et les traits d’union sont pris en charge. |
département | Non | Valeur incluse dans la demande qui également renvoyée dans la réponse du jeton. Il peut s’agir d’une chaîne de n’importe quel contenu que vous souhaitez utiliser. En règle générale, une valeur unique généré de manière aléatoire est utilisée pour empêcher une attaque de contrefaçon de demande entre sites. La longueur maximale est de 20 caractères. |
nonce | Non | Valeur de chaîne envoyée par le client incluse dans le jeton d’ID obtenu tant que revendication. Le client peut ensuite vérifier cette valeur pour corriger les attaques de relecture de jeton. La longueur maximale est de 20 caractères. |
response_type | Non | Ce paramètre prend en charge uniquement token en tant que valeur, ce qui permet à votre application de recevoir immédiatement un jeton d’ID pour le point de terminaison, sans faire une deuxième demande au point de terminaison. |
Note
Bien que les paramètres client_id
, state
et nonce
soient optionnels, il est recommandé de les utiliser afin de vous assurer que vos intégrations sont sécurisées.
Réponse réussie
Le point de terminaison de jeton renvoie state et expires_in comme en-têtes de réponse, et le jeton dans le corps du formulaire.
Réponse d’erreur
L’erreur dans un point de terminaison de jeton est renvoyée comme document JSON avec les valeurs suivantes :
- ID erreur : Identificateur unique de l’erreur.
- Message d’erreur : Message d’erreur spécifique qui peut vous aider à identifier la cause principale d’une erreur d’authentification.
- ID de corrélation : GUID utilisé pour le débogage. Si vous avez activé la journalisation diagnostique, l’ID de corrélation sera présent dans les journaux d’erreurs de serveur.
- Horodatage : Date et heure auxquelles l’erreur est générée.
Le message d’erreur s’affiche dans la langue par défaut de l’utilisateur connecté. Si l’utilisateur n’est pas connecté, une page de connexion est affichée pour que l’utilisateur se connecte. Par exemple, une réponse d’erreur ressemble à ce qui suit :
{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "aaaa0000-bb11-2222-33cc-444444dddddd" }
Valider le jeton d’ID
Obtenir un jeton d’ID uniquement n’est pas suffisant pour authentifier l’utilisateur ; vous devez également valider la signature du jeton et vérifier les revendications dans le jeton selon les besoins de votre application. Le point de terminaison du jeton public fournit la clé publique du site, qui peut être utilisée pour valider la signature du jeton fourni par le site web. L’URL du point de terminaison de jeton public est : <portal_url>/_services/auth/publickey
.
Activer ou désactiver le flux d’octroi implicite
Par défaut, le flux d’octroi implicite est activé. Si vous souhaitez désactiver le flux d’octroi implicite, définissez la valeur du paramètre du site Connector/ImplicitGrantFlowEnabled sur False.
Si ce paramètre du site n’est pas disponible dans votre site web, vous devez créer un paramètre de site avec la valeur appropriée.
Configurer la validité du jeton
Par défaut, le jeton est valide pendant 15 minutes. Si vous souhaitez modifier la validité du jeton, définissez le paramètre du site ImplicitGrantFlow/TokenExpirationTime sur la valeur requise. La valeur doit être spécifiée en secondes. La valeur maximale peut être de 1 heure, et la valeur minimale doit être de 1 minute. Si une valeur incorrecte est spécifiée (par exemple, des caractères alphanumériques), la valeur par défaut de 15 minutes est utilisée. Si vous définissez une valeur supérieure à la valeur maximale ou inférieure à la valeur minimale, les maximale et minimale sont utilisées, respectivement, par défaut.
Par exemple, pour définir la validité du jeton sur 30 minutes, définissez le paramètre du site ImplicitGrantFlow/TokenExpirationTime sur 1800. Pour définir la validité du jeton sur 1 heure, définissez la valeur du paramètre du site ImplicitGrantFlow/TokenExpirationTime sur 3600.
Enregistrer l’ID client pour le flux d’octroi implicite
Vous devez enregistrer l’ID client avec le site web pour lequel ce flux est autorisé. Pour enregistrer un ID client, vous devez créer les paramètres de site suivants :
Paramètre du site | Value |
---|---|
ImplicitGrantFlow/RegisteredClientId | Valeurs d’ID client valides autorisées pour ce site. Les valeurs doivent être séparées par un point-virgule et peuvent contenir des caractères alphanumériques et des traits d’union. La longueur maximale est de 36 caractères. |
Exemple de code
Vous pouvez utiliser l’exemple de code suivant pour commencer à utiliser l’octroi implicite OAuth 2.0 avec les API Power Pages.
Utiliser le jeton OAuth Power Pages avec une API web externe
Cet exemple est un projet basé sur ASP.NET et est utilisé pour valider le jeton d’ID émis par Power Pages. L’exemple complet se trouve ici : Utiliser le jeton OAuth Power Pages avec une API web externe.
Exemple de point de terminaison de jeton
Cet exemple illustre comment utiliser la fonction getAuthenticationToken pour extraire un jeton d’ID à l’aide du point de terminaison du jeton dans Power Pages. L’exemple se trouve ici : Exemple de point de terminaison de jeton.