Adfs oauth2 token
Concepts AD FS OpenID Connect/OAuth
S’applique aux services de fédération Active Directory (AD FS) 2016 et versions ultérieures
Acteurs de l’authentification moderne
Acteur | Description |
---|---|
Utilisateur final Principal | de sécurité (utilisateurs, applications, services et groupes) qui accède à la ressource. |
Client | Votre application web, identifiée par son ID client. Le client est généralement la partie avec laquelle l’utilisateur final interagit, et le client demande des jetons au serveur d’autorisation. |
Serveur d’autorisation/fournisseur d’identité (IdP) | Votre serveur AD FS. Il est chargé de vérifier l’identité des principaux de sécurité qui existent dans le répertoire. Il émet des jetons de sécurité (jeton d’accès au porteur, jeton d’ID et jeton d’actualisation) lors de l’authentification réussie de ces entités de sécurité. |
Serveur de ressources/Fournisseur de ressources/Partie utilisatrice | Où réside la ressource ou les données. Il fait confiance au serveur d’autorisation pour authentifier et autoriser en toute sécurité le client et utilise des jetons d’accès au porteur pour s’assurer que l’accès à une ressource peut être accordé. |
Le diagramme suivant fournit la relation la plus basique entre les acteurs :
Types d’applications
Type d’application | Description Rôle | |
---|---|---|
Application native | Parfois appelée client public . Il s’agit d’une application cliente qui s’exécute sur un PC ou un appareil et avec lesquels l’utilisateur interagit. | Demande des jetons au serveur d’autorisation (AD FS) pour l’accès des utilisateurs aux ressources. Envoie des requêtes HTTP aux ressources protégées, en utilisant les jetons comme en-têtes HTTP. |
Application serveur (application web) | Application web qui s’exécute sur un serveur et qui est accessible aux utilisateurs via un navigateur. Étant donné qu’il est capable de conserver sa propre clé secrète client ou ses propres informations d’identification, il est parfois appelé client confidentiel . | Demande des jetons au serveur d’autorisation (AD FS) pour l’accès des utilisateurs aux ressources. Avant de demander un jeton, le client (application web) doit s’authentifier à l’aide de son secret. |
API web | La ressource finale à laquelle l’utilisateur accède. Pensez-y comme à la nouvelle représentation des parties qui se fient. | Consomme les jetons d’accès au porteur obtenus par les clients. |
Groupe d’applications
Vous devez associer un groupe d’applications à chaque client OAuth d’application native ou web ou ressource d’API web configurée avec AD FS. Configurez les clients d’un groupe d’applications pour accéder aux ressources du même groupe. Un groupe d’applications peut avoir plusieurs clients et ressources.
Jetons de sécurité
L’authentification moderne utilise les types de jetons suivants :
- id_token : jeton JWT émis par le serveur d’autorisation (AD FS) et consommé par le client. Les revendications dans le jeton d’ID contiennent des informations sur l’utilisateur afin que le client puisse les utiliser.
- access_token : Jeton JWT émis par le serveur d’autorisation (AD FS) et destiné à être consommé par la ressource. La revendication « aud » ou d’audience de ce jeton doit correspondre à l’identifiant de la ressource ou de l’API web.
- refresh_token : Émis par AD FS pour que le client puisse l’utiliser lorsqu’il a besoin de rafraîchir le id_token et le access_token. Le jeton est opaque pour le client et n’est consommé que par AD FS.
Durée de vie des jetons d’actualisation
- Ouverture de session simple, pas de KMSI, appareil non enregistré : AD FS s’applique et . Le premier jeton d’actualisation a ou , en fonction du champ qui est inférieur, mais aucun autre jeton d’actualisation n’est émis.
- Connexion KMSI, dans la conf AD FS et passée en paramètre : AD FS s’applique avec . Le premier jeton d’actualisation et chaque demande suivante reçoit un nouveau jeton d’actualisation. Ce processus ne se produit qu’avec les clients natifs ou l’authentification des clients confidentiels et des appareils.
- Appareils enregistrés, authentification de l’appareil : AD FS utilise et similaire à KMSI. Les clients natifs et confidentiels doivent Obtenez de nouveaux jetons d’actualisation, en fonction de l’authentification de l’appareil.
Pour plus d’informations, consultez la documentation sur l’authentification unique AD FS.
Lorsque
vous inscrivez une ressource dans AD FS, vous pouvez configurer des étendues pour permettre à AD FS d’effectuer des actions spécifiques. En plus de la configuration de l’étendue, vous devez envoyer la valeur de l’étendue dans la demande pour qu’AD FS effectue l’action. Par exemple, un administrateur configure l’étendue lors de l’inscription de la ressource et l’application (client) doit envoyer la demande d’authentification pour qu’AD FS émette le jeton d’ID. Voici des détails sur les étendues disponibles dans AD FS :
- - Si vous utilisez des extensions de protocole OAuth 2.0 pour les clients Broker et si le paramètre scope contient l’étendue, le serveur émet un nouveau jeton d’actualisation principal. Il définit le jeton dans le champ de la réponse et définit la durée de vie du nouveau jeton d’actualisation principal s’il est appliqué.
- - Permet à l’application de demander l’utilisation du protocole d’authentification Connect.
- - Permet à une application de demander des certificats de connexion que vous pouvez utiliser pour vous connecter de manière interactive aux utilisateurs authentifiés. Le serveur AD FS omet le paramètre de la réponse et fournit à la place une chaîne de certificats CMS codée en base64 ou une réponse PKI complète CMC. Pour plus d’informations, consultez MS-OAPX : Extensions de protocole OAuth 2.0.
- - Demande un jeton d’accès de la part de AD FS. Pour plus d’informations sur l’utilisation de cette étendue, consultez Créer une application multiniveau à l’aide d’OBO (On-Behalf-Of) à l’aide d’OAuth avec AD FS 2016.
- – Permet à l’application de demander que les revendications du jeton d’accès soient également ajoutées au jeton d’ID.
- - Permet à une application de demander des certificats VPN, qui établissent des connexions VPN à l’aide de l’authentification EAP-TLS. Cette fonctionnalité n’est plus prise en charge.
- - Permet l’application Demandez une réclamation par e-mail pour l’utilisateur connecté.
- - Permet à l’application de demander des revendications liées au profil pour l’utilisateur connecté.
Revendications
Les jetons de sécurité (jetons d’accès et d’ID) émis par AD FS contiennent des revendications ou des affirmations d’informations sur l’objet qui ont été authentifiées. Les applications peuvent utiliser des revendications pour diverses tâches, notamment :
- Valider le jeton Identifier
- le locataire de l’annuaire du sujet
- Afficher les informations sur
- l’utilisateur Déterminer l’autorisation du sujet
Les revendications présentes dans un jeton de sécurité donné dépendent du type de jeton, du type d’informations d’identification utilisé pour authentifier l’utilisateur et de la configuration de l’application.
Flux d’authentification AD FS de haut niveau
Un schéma du flux de haut niveau est présenté ci-dessous.
-
annonce FS reçoit la demande d’authentification du client.
-
AD FS valide l’ID client dans la demande d’authentification avec l’ID client obtenu lors de l’inscription du client et de la ressource dans AD FS. Si vous utilisez un client confidentiel, AD FS valide également la clé secrète client fournie dans la demande d’authentification. AD FS valide également l’URI de redirection du Client.
-
AD FS identifie la ressource à laquelle le client souhaite accéder via le paramètre de ressource transmis dans la demande d’authentification. Si vous utilisez la bibliothèque cliente MSAL, le paramètre de ressource n’est pas envoyé. Au lieu de cela, l’URL de la ressource est envoyée dans le cadre du paramètre scope : scope = [URL de la ressource]/[valeurs de la portée, par exemple, openid] .
Si la ressource n’est pas transmise à l’aide des paramètres de ressource ou d’étendue, AD FS utilise une ressource par défaut dont les stratégies, telles que MFA, émission ou autorisation, sont définies policy, ne peut pas être configurée.
-
Ensuite, AD FS vérifie si le client dispose des autorisations nécessaires pour accéder à la ressource. AD FS vérifie également si les étendues transmises dans la demande d’authentification correspondent aux étendues configurées lors de l’inscription de la ressource. Si le client ne dispose pas des autorisations nécessaires ou si les étendues appropriées ne sont pas envoyées dans la demande d’authentification, le flux d’authentification se termine.
-
Une fois les autorisations et les étendues validées, AD FS authentifie l’utilisateur à l’aide de la méthode d’authentification configurée.
-
Si une autre méthode d’authentification est requise conformément à la stratégie de ressource ou à la stratégie d’authentification globale, AD FS déclenche l’authentification supplémentaire.
-
AD FS utilise l’authentification multifacteur Microsoft Entra ou l’authentification multifacteur tierce pour effectuer l’authentification.
-
Une fois que l’utilisateur est authentifié, AD FS applique les règles de réclamation. Les règles de revendication déterminent les revendications envoyées à la ressource dans le cadre des jetons de sécurité. AD FS applique également les stratégies de contrôle d’accès qui confirment que l’utilisateur remplit les conditions requises pour accéder à la ressource.
-
Ensuite, AD FS génère l’accès et actualise les jetons. AD FS génère également le jeton d’ID.
-
AD FS reçoit la demande d’authentification.
-
Si vous incluez le dans la demande d’authentification, il personnalise le jeton d’ID pour inclure les revendications dans le jeton d’accès en fonction des règles de revendication définies.
-
Une fois les jetons requis générés et personnalisés, AD FS répond au client et inclut les jetons. La réponse du jeton d’ID n’est incluse dans la réponse que si la demande d’authentification inclut . Le client peut toujours obtenir le jeton d’ID après l’authentification à l’aide de la commande point de terminaison de jeton.
Types de bibliothèques
Utilisez deux types de bibliothèques avec AD FS :
-
Bibliothèques clientes : les applications clientes et clientes natives utilisent les bibliothèques clientes pour obtenir des jetons d’accès afin d’appeler une ressource telle qu’une API web. La bibliothèque d’authentification Microsoft (MSAL) est la bibliothèque cliente la plus récente et recommandée lorsque vous utilisez AD FS 2019.
-
Bibliothèques d’intergiciel de serveur : les applications Web utilisent les bibliothèques d’intergiciel de serveur pour la connexion de l’utilisateur. Les API Web utilisent des bibliothèques middleware de serveur pour valider les jetons envoyés par les clients natifs ou par d’autres serveurs. Open Web Interface for .NET (OWIN) est la bibliothèque middleware recommandée.
Dans certains scénarios, il est possible que le client de l’application web ait besoin de revendications supplémentaires dans un jeton d’ID pour faciliter la fonctionnalité. Configurez des revendications supplémentaires dans un jeton d’ID à l’aide de l’une des options suivantes :
Option 1 : utilisez cette option lorsque vous disposez d’un client public et que l’application web n’a pas de ressource à laquelle elle tente d’accéder. Cette option nécessite :
- est définie comme l’identificateur de
- la partie de confiance (l’identificateur de l’API web) est identique à l’identificateur
du client
Option 2 : utilisez cette option lorsque l’application web dispose d’une ressource à laquelle elle tente d’accéder et doit transmettre des revendications supplémentaires via le jeton d’ID. Vous pouvez utiliser des clients publics et confidentiels. Cette option nécessite :
-
est définie comme
-
KB4019472 est installée sur vos serveurs AD FS
-
L’étendue est attribuée à la paire client-RP. Vous pouvez attribuer l’étendue à l’aide de la commande . À utiliser s’il a déjà été accordé une fois. L’applet de commande PowerShell est indiquée dans ce qui suit exemple :
Pour mieux comprendre comment configurer une application web dans AD FS pour obtenir un jeton d’ID personnalisé, consultez Jetons d’ID personnalisés dans AD FS 2016 ou version ultérieure.
La déconnexion unique
met fin à toutes les sessions client qui utilisent l’ID de session. AD FS 2016 et versions ultérieures prend en charge la déconnexion unique pour OpenID Connect/OAuth. Pour plus d’informations, consultez Déconnexion unique pour OpenID Connect avec AD FS.
Points de terminaison AD FS
Point de terminaison AD FS | Description |
---|---|
/authorize | AD FS Renvoie un code d’autorisation que vous pouvez utiliser pour obtenir le jeton d’accès. |
/token | AD FS renvoie un jeton d’accès que vous pouvez utiliser pour accéder à la ressource, par exemple dans l’API Web. |
/userinfo | AD FS Renvoie la revendication de l’objet. |
/devicecode | AD FS renvoie le code de l’appareil et le code utilisateur. |
/logout | AD FS déconnecte l’utilisateur. |
/keys | Clés publiques AD FS utilisées pour signer les réponses. |
/.well-known/openid-configuration | AD FS renvoie les métadonnées OAuth/OpenID Connect. |