Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous montre comment utiliser les jetons OAuth lorsque vous utilisez l’authentification et l’autorisation intégrées dans Azure App Service.
Récupérer les jetons dans le code de l'application
À partir de votre code serveur, les jetons spécifiques au fournisseur sont injectés dans l'en-tête de la requête afin que vous puissiez y accéder facilement.
Le tableau suivant répertorie les noms d’en-tête de jeton possibles :
Fournisseur | Noms des en-têtes |
---|---|
Microsoft Entra | X-MS-TOKEN-AAD-ID-TOKEN X-MS-TOKEN-AAD-ACCESS-TOKEN X-MS-TOKEN-AAD-EXPIRES-ON X-MS-TOKEN-AAD-REFRESH-TOKEN |
Jeton Facebook | X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN X-MS-TOKEN-FACEBOOK-EXPIRES-ON |
X-MS-TOKEN-GOOGLE-ID-TOKEN X-MS-TOKEN-GOOGLE-ACCESS-TOKEN X-MS-TOKEN-GOOGLE-EXPIRES-ON X-MS-TOKEN-GOOGLE-REFRESH-TOKEN |
|
X | X-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
Remarque
Différentes infrastructures de langage peuvent présenter ces en-têtes au code d’application dans différents formats, tels que en minuscule ou en utilisant des lettres majuscules.
À partir de votre code client (par exemple, une application mobile ou un navigateur JavaScript), envoyez une requête GET
HTTP à /.auth/me
(le magasin de jetons doit être activé). La réponse JSON retournée contient les jetons spécifiques au fournisseur.
Remarque
Les jetons d'accès servent à accéder aux ressources du fournisseur. Ils ne sont donc présents que si vous configurez votre fournisseur avec un secret client.
Actualiser les jetons d’authentification
Lorsque le jeton d'accès de votre fournisseur (et non le jeton de session) expire, vous devez réauthentifier l’utilisateur avant de réutiliser ce jeton. Vous pouvez éviter l’expiration du jeton en effectuant un appel GET
au point de terminaison /.auth/refresh
de votre application. Lorsqu’il est appelé, App Service actualise automatiquement les jetons d’accès dans le magasin de jetons pour l’utilisateur authentifié. Les demandes de jeton suivantes effectuées via le code de votre application permettent d’obtenir les jetons actualisés. Toutefois, pour que l’actualisation des jetons soit effective, le magasin de jetons doit contenir les jetons d’actualisation pour votre fournisseur. La manière d'obtenir des jetons d'actualisation est documentée par chaque fournisseur, mais la liste suivante est un bref résumé :
Google : ajouter un paramètre de chaîne de requête
access_type=offline
à votre appel d’API/.auth/login/google
. Pour plus d’informations, consultez Jetons d’actualisation Google.Facebook : ne fournit pas de jetons d’actualisation. Les jetons de longue durée expirent dans 60 jours (voir Jetons d’accès de longue durée).
X : Les jetons d'accès n'expirent pas (voir la FAQ OAuth).
Microsoft : Dans https://resources.azure.com, effectuez les étapes suivantes :
En haut du volet, sélectionnez Lecture/écriture.
Dans le menu de l’explorateur, accédez à abonnements>nom d’abonnement>resourceGroups>nom de groupe de ressources>fournisseurs>Microsoft.Web>sites>nom de l’application>config>authsettingsV2.
Sélectionnez Modifier.
Modifiez la propriété suivante :
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
Sélectionnez Mettre.
Remarque
L’étendue qui vous donne un jeton d’actualisation est offline_access. Découvrez comment il est utilisé dans le Didacticiel : Authentifier et autoriser les utilisateurs de bout en bout dans Azure App Service. Les autres étendues sont déjà demandées par App Service par défaut. Pour plus d’informations sur ces étendues par défaut, consultez Étendues OpenID Connect.
Une fois votre fournisseur configuré, vous pouvez trouver le jeton d'actualisation et le délai d'expiration du jeton d'accès dans le magasin de jetons.
Pour actualiser votre jeton d'accès à tout moment, appelez /.auth/refresh
dans n'importe quelle langue. L’extrait de code suivant utilise jQuery pour actualiser vos jetons d’accès à partir d’un client JavaScript.
function refreshTokens() {
let refreshUrl = "/.auth/refresh";
$.ajax(refreshUrl) .done(function() {
console.log("Token refresh completed successfully.");
}) .fail(function() {
console.log("Token refresh failed. See application logs for details.");
});
}
Si un utilisateur révoque les autorisations accordées à votre application, votre appel à /.auth/me
peut échouer avec une réponse 403 Forbidden
. Pour diagnostiquer les erreurs, consultez vos journaux d’activité d’application pour obtenir des informations supplémentaires.
Étendre la période de grâce d’expiration de jeton de session
La session authentifiée expire au bout de 8 heures. Après l'expiration d'une session authentifiée, une période de grâce de 72 heures suit par défaut. Au cours de cette période de grâce, vous pouvez actualiser le jeton de session via App Service sans réauthentifier l’utilisateur. Vous pouvez simplement appeler /.auth/refresh
lorsque jeton de session n’est plus valide. Vous n’avez pas besoin de vérifier vous-même les dates d’expiration des jetons. Une fois le délai de grâce de 72 heures expiré, l'utilisateur doit se reconnecter pour obtenir un jeton de session valide.
Si le délai de 72 heures n’est pas suffisamment long pour vous, vous pouvez étendre cette fenêtre d’expiration. Étendre la fenêtre d’expiration sur une longue période peut avoir une incidence majeure sur la sécurité (par exemple lorsqu’un jeton d’authentification est divulgué ou volé). Nous vous recommandons de laisser le paramètre par défaut de 72 heures ou de définir la période d'extension sur la valeur la plus petite.
Pour prolonger la fenêtre d’expiration par défaut, exécutez la commande suivante dans Azure Cloud Shell.
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Remarque
La période de grâce s'applique uniquement à la session authentifiée App Service, et non aux jetons des fournisseurs d'identité. Il n’existe pas de période de grâce pour les jetons de fournisseur expirés.