Table des matières

Introduction

Informations générales

Conditions préalables

Exigences

Composants utilisés

Configurer

Présentation des flux de haut niveau

Configurer Azure AD pour l'intégration

Configurer ISE pour l'intégration

Exemples de politiques ISE pour différents cas d'utilisation

Vérifier

Dépannage

Problèmes avec le service d'authentification REST

Problèmes d'authentification REST ID

Utiliser les fichiers journaux

Introduction

Ce document décrit l'intégration de Cisco ISE 3.0 avec Azure AD implémentée via le service d'identité REST avec les informations d'identification du mot de passe du propriétaire de la ressource.

Informations générales

Ce document décrit comment configurer et dépanner l'intégration d'Identity Services Engine (ISE) 3.0 avec Microsoft (MS) Azure Active Directory (AD) implémentée via le service d'identité (ID) de transfert d'état de représentation (REST) à l'aide des informations d'identification de mot de passe de propriétaire de ressource (ROPC).

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- ISE

- MS Azure AD

- Compréhension de la mise en oeuvre et des limites du protocole ROPC ; lien

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- Cisco ISE version 3.0

- MS Azure AD

- WS-C3850-24P avec logiciel 16.9.2

- ASAv avec 9.10 (1)

- Windows 10.0.18363

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Configurer

La fonctionnalité ISE REST ID est basée sur le nouveau service introduit dans ISE 3.0 - Service d'authentification REST. Ce service est responsable de la communication avec Azure AD sur les échanges ROPC OAuth (Open Authorization) afin d'effectuer l'authentification des utilisateurs et la récupération des groupes. Le service d'authentification REST est désactivé par défaut et, une fois que l'administrateur l'a activé, il s'exécute sur tous les noeuds ISE du déploiement. Puisque la communication du service d'authentification REST avec le cloud se produit au moment de l'authentification de l'utilisateur, tout retard sur le chemin apporte une latence supplémentaire dans le flux d'authentification/autorisation. Cette latence échappe au contrôle d'ISE et toute implémentation de l'authentification REST doit être soigneusement planifiée et testée afin d'éviter tout impact sur les autres services ISE.

Présentation des flux de haut niveau

1. L'administrateur du cloud Azure crée une nouvelle inscription d'application (App). Les détails de cette application sont utilisés ultérieurement sur ISE afin d'établir une connexion avec Azure AD.

2. L'administrateur du cloud Azure doit configurer l'application avec :

- Créer une clé secrète client

- Activer ROPC

- Ajouter des revendications de groupe

- Définir les autorisations API (Application Programming Interface)

3. L'administrateur ISE active le service d'authentification REST. Il doit être effectué avant que toute autre action puisse être exécutée.

4. Les modifications sont écrites dans la base de données de configuration et répliquées sur l'ensemble du déploiement ISE.

5. Le service d'authentification REST démarre sur tous les noeuds.

6. L'administrateur ISE configure le magasin d'ID REST avec les détails de l'étape 2.

7. Les modifications sont écrites dans la base de données de configuration et répliquées sur l'ensemble du déploiement ISE.

8. L'administrateur ISE crée une nouvelle séquence de magasin d'identités ou modifie celle qui existe déjà et configure les stratégies d'authentification/d'autorisation.

9. Les modifications sont écrites dans la base de données de configuration et répliquées sur l'ensemble du déploiement ISE.

10. Le terminal initie l’authentification. Conformément à la spécification du protocole ROPC, le mot de passe utilisateur doit être fourni à la plate-forme d'identité Microsoft en texte clair sur une connexion HTTP chiffrée. Pour cette raison, les seules options d'authentification disponibles prises en charge par ISE à ce jour sont les suivantes :

- EAP-TTLS (Extensible Authentication Protocol-Tunneled Transport Layer Security) avec PAP (Password Authentication Protocol) comme méthode interne

- Authentification VPN SSL AnyConnect avec PAP

11. Échange avec le noeud de service de stratégie ISE (PSN) sur Radius.

12. Process Runtime (PrRT) envoie une demande au service REST ID avec les détails de l'utilisateur (nom d'utilisateur/mot de passe) via l'API interne.

13. Le service d'ID REST envoie une requête ROPC OAuth à Azure AD via HyperText Transfer Protocol Secure (HTTPS).

14. Azure AD effectue l'authentification des utilisateurs et récupère les groupes d'utilisateurs.

15. Résultat d’authentification/autorisation renvoyé à ISE.

Après le point 15, le résultat de l'authentification et les groupes récupérés sont retournés à PrRT, ce qui implique un flux d'évaluation de stratégie et l'attribution du résultat final de l'authentification/autorisation. Access-Accept avec les attributs du profil d'autorisation ou Access-Reject renvoyé au périphérique d'accès réseau (NAD).

Configurer Azure AD pour l'intégration

1. Localisez AppRegistration Service comme indiqué dans l'image.

Figure 2.

a. Tapez AppRegistration dans la barre de recherche globale.

b. Cliquez sur le service d'enregistrement des applications.

2. Créez un enregistrement d'application.

Figure 3.

3. Enregistrez une nouvelle application.

Figure 4.

a. Définissez le nom de l'application.

b. Définissez quels comptes peuvent utiliser de nouvelles applications.

c. Appuyez sur le bouton Register.

4. Accédez à Certificat et secrets.

Figure 5.

5. Créer  New client secret  comme illustré dans l'image.

Figure 6.

6. Configurez le  client secretcomme illustré dans l'image.

Figure 7.

a. Définissez la description d'un nouveau secret.

b. Choisissez la période d'expiration.

c. Cliquez sur le boutonAdd s'affiche.

7. Copiez et enregistrez la valeur secrète (elle doit être utilisée ultérieurement sur ISE au moment de la configuration de l'intégration).

Figure 8.

8. Revenez à la page Overview  afin de copier le fichier App ID  et.

Figure 9.

9. Activez ROPC pour l'application.

Figure 10.

a. Accédez à la pageAuthentication s'affiche.

b. Recherchez la section Advanced settings (Paramètres avancés).

c. SélectionnezYes for : traite l'application comme un client public.

d. Cliquez sur le boutonSave s'affiche.

10. Add group claims  à l'application.

Figure 11.

a. Accédez à la configuration de jeton.

b. Appuyez sur - Add groups claim .

11. Définissez les types de groupe à ajouter

Figure 12.

a. Sélectionnez - Tous les groupes.

b. Cliquez sur le boutonAdd s'affiche.

12. Ajouter API permissions .

Figure 13.

a. Accédez à API permissions .

b. Cliquez sur Add permission .

13. Ajouter Microsoft Graph  autorisations.

Figure 14.

14. Ajouter Application permissions .

Figure 15.

15. Ajouter Group.Read.All  autorisation.

Figure 16.

a. Localisez le type d'API - Groupe.

b. Sélectionnez le Group.Read.All .

c. Cliquez sur le bouton Add permissions  s'affiche.

Remarque : les données de groupe d'utilisateurs peuvent être extraites d'Azure AD de plusieurs manières à l'aide d'une autorisation API différente. La méthode décrite dans cet exemple s'est révélée efficace dans le laboratoire du centre d'assistance technique Cisco. Utilisez d'autres autorisations API au cas où votre administrateur Azure AD le recommande.

16. Grant admin consent  pour les autorisations API.

Figure 17.

17. Confirmer l'autorisation de l'administrateur

Figure 18.

À ce stade, vous pouvez envisager une intégration entièrement configurée du côté d'Azure AD.

Configurer ISE pour l'intégration

1. Accédez aux paramètres de gestion des identités.

Figure 19.

Naviguez jusqu'à Administration > Identity Management> Settings .

2. Activez le service REST ID (désactivé par défaut).

Figure 20.

Naviguez jusqu'àREST ID Store Settings et de modifier l'état des paramètres de stockage d'ID REST afin deEnable, puis Submit  vos modifications.

3. Créez un magasin REST ID.

Figure 21.

Basculez vers le External Identity Sources  , cliquez sur REST (ROPC)  , puis cliquez sur Ajouter.

4. Configurez le magasin REST ID.

Figure 22.

a. Définissez le nom du magasin d'ID. Plus tard, ce nom se trouve dans la liste des dictionnaires ISE lorsque vous configurez les stratégies d'autorisation. En outre, ce nom est affiché dans la liste des magasins d'ID disponibles dans les paramètres de stratégie d'authentification et dans la liste des magasins d'ID disponibles dans la configuration de séquence de magasin d'identités.

b. Fournissez l'ID client (extrait d'Azure AD à l'étape 8. de la section de configuration de l'intégration Azure AD).

c. Fournissez le secret client (extrait d'Azure AD à l'étape 7. de la section de configuration de l'intégration Azure AD).

d. Fournissez l'ID de locataire (extrait d'Azure AD à l'étape 8. de la section de configuration de l'intégration Azure AD).

e. Configurer le suffixe du nom d'utilisateur - par défaut, ISE PSN utilise un nom d'utilisateur fourni par l'utilisateur final, qui est fourni au format sAMAccountName (nom d'utilisateur court, par exemple, bob) ; dans ce cas, Azure AD ne peut pas localiser l'utilisateur. Le suffixe du nom d'utilisateur est la valeur ajoutée au nom d'utilisateur fourni par l'utilisateur afin d'amener le nom d'utilisateur au format UPN.

Remarque : le protocole ROPC est limité à l'authentification utilisateur, car il repose sur l'attribut Nom d'utilisateur lors de l'authentification. Les objets de périphérique dans Azure AD n'ont pas d'attributs de nom d'utilisateur.

f. Appuyez sur Tester la connexion afin de confirmer qu'ISE peut utiliser les détails d'application fournis afin d'établir une connexion avec Azure AD.

g. Appuyez sur Load Groups afin d'ajouter des groupes disponibles dans le magasin d'ID REST d'Azure AD. L'exemple ci-dessous montre à quoi ressemble l'expérience administrateur.

Remarque : veuillez noter l'ID de bogue Cisco CSCvx00345 défectueux, car il empêche le chargement des groupes. Le défaut est corrigé dans le correctif 2 d'ISE 3.0.

Figure 23.

h. Soumettez vos modifications.

5. À cette étape, envisagez la création d'une nouvelle séquence de magasin d'identités, qui inclut un magasin d'ID REST nouvellement créé.

6. Au moment où le magasin d'ID REST ou la séquence de magasin d'identités qui le contient est affecté à la stratégie d'authentification, remplacez une action par défaut pour Échec du processus de DROP par REJECT, comme indiqué dans l'image.

Figure 24.

a. Localisez la stratégie d'authentification qui utilise le magasin d'ID REST.

b. Ouvrez la liste déroulante Options.

c. L'action de modification par défaut pour le processus a échoué de DROP à REJECT.

Ceci est nécessaire afin d'éviter que PSN soit marqué comme mort du côté des NAD à un moment où des défaillances spécifiques se produisent dans le magasin d'ID REST comme :

- L'utilisateur n'est membre d'aucun groupe dans Azure AD.

- Le mot de passe utilisateur doit être modifié.

7. Ajoutez le dictionnaire du magasin d'ID REST à la stratégie d'autorisation.

Figure 25.

a. Ouvrez la liste déroulante Tous les dictionnaires.

b. Localisez le dictionnaire nommé de la même manière que votre magasin REST ID.

8. Ajoutez des groupes d'identités externes (depuis ISE 3.0, le seul attribut disponible dans le dictionnaire du magasin d'ID REST est un groupe externe).

Figure 26.

Exemples de politiques ISE pour différents cas d'utilisation

Dans le cas de l'authentification Dot1x, la condition de tunnel EAP du dictionnaire d'accès réseau peut être utilisée pour faire correspondre les tentatives EAP-TTLS comme illustré dans l'image.

Figure 27.

a. Définissez EAP Tunnel EQUAL à EAP-TTLS pour faire correspondre les tentatives qui doivent être transmises au magasin d'ID REST.

b. Sélectionnez directement dans le magasin d'ID REST ou dans la séquence de magasin d'identités, qui le contient dans la colonne Utiliser.

Au sein des stratégies d'autorisation individuelles, les groupes externes d'Azure AD peuvent être utilisés avec le type de tunnel EAP :

Figure 28.

Pour un flux basé sur VPN, vous pouvez utiliser un nom de groupe de tunnels comme différenciateur :

Stratégie d'authentification :

Stratégies d'autorisation :

Figure 29.

Vérifier

Référez-vous à cette section pour vous assurer du bon fonctionnement de votre configuration.

1. Vérifiez que le service d'authentification REST s'exécute sur le noeud ISE.

Pour vérifier cela, vous devez exécuter la commande show application status ise dans l'interpréteur de commandes Secure Shell (SSH) d'un noeud ISE cible :

skuchere-ise30-1/admin# show application status ise

ISE PROCESS NAME STATE PROCESS ID

--------------------------------------------------------------------

Database Listener running 101790

Database Server running 92 PROCESSES

Application Server running 39355

Profiler Database running 107909

ISE Indexing Engine running 115132

AD Connector running 116376

M&T Session Database running 107694

M&T Log Processor running 112553

Certificate Authority Service running 116226

EST Service running 119875

SXP Engine Service disabled

Docker Daemon running 104217

TC-NAC Service disabled

pxGrid Infrastructure Service disabled

pxGrid Publisher Subscriber Service disabled

pxGrid Connection Manager disabled

pxGrid Controller disabled

PassiveID WMI Service disabled

PassiveID Syslog Service disabled

PassiveID API Service disabled

PassiveID Agent Service disabled

PassiveID Endpoint Service disabled

PassiveID SPAN Service disabled

DHCP Server (dhcpd) disabled

DNS Server (named) disabled

ISE Messaging Service running 104876

ISE API Gateway Database Service running 106853

ISE API Gateway Service running 110426

Segmentation Policy Service disabled

REST Auth Service running 63052

SSE Connector disabled

2. Vérifiez que le magasin d'ID REST est utilisé au moment de l'authentification (consultez la section Étapes. du rapport d'authentification détaillé).

a. PSN démarre l'authentification en texte brut avec le magasin d'ID REST sélectionné.

b. Connexion établie avec le cloud Azure.

c. Étape d'authentification réelle - tenez compte de la valeur de latence présentée ici. Dans le cas où toutes vos authentifications avec le cloud Azure rencontreraient des problèmes de latence significative, cela affecterait l'autre flux ISE et, par conséquent, l'ensemble du déploiement ISE deviendrait instable.

d. Confirmation de l'authentification réussie.

e. Confirmation des données de groupe présentées en réponse.

f. Contexte de session renseigné avec les données du groupe d'utilisateurs. Pour plus d'informations sur le processus de gestion des sessions ISE, consultez cet article (lien).

3. Confirmez que les stratégies d'authentification/autorisation attendues sont sélectionnées (pour ce sujet, examinez la section Vue d'ensemble du rapport d'authentification détaillé).

Figure 30.

Dépannage

Cette section fournit les informations que vous pouvez utiliser pour dépanner votre configuration.

Problèmes avec le service d'authentification REST

Afin de dépanner tout problème avec le service d'authentification REST, vous devez commencer par la révision du fichier ADE.log. Emplacement du bundle de support - /support/adeos/ade

Un mot clé de recherche pour le service d'authentification REST est - ROPC-control.

Cet exemple montre comment le service d'authentification REST démarre :

2020-08-30T11:15:38.624197+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Starting

2020-08-30T11:15:39.217794+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] inside docker_image_exists

2020-08-30T11:15:39.290301+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Image exist with ID =

2020-08-30T11:15:39.291858+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Docker image doesn't exist

2020-08-30T11:15:39.293768+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Load docker image ROPC

2020-08-30T11:15:39.359490+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Error: No such image: ROPC

2020-08-30T11:15:42.789242+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Loaded image: ROPC:latest

2020-08-30T11:15:42.830411+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Docker image ROPC successfully loaded.

2020-08-30T11:15:42.832131+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Setting up REST Auth Service

2020-08-30T11:15:42.844051+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] inside docker_create_container

2020-08-30T11:15:53.479968+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Copying binaries to the docker container...

2020-08-30T11:15:55.325973+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status false

2020-08-30T11:15:57.103245+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status true

2020-08-30T11:15:57.105752+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Creating ROPC pid file

2020-08-30T11:15:57.278374+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status true

Dans les cas où le service ne démarre pas ou s'arrête de façon inattendue, il est toujours logique de commencer par consulter le fichier ADE.log autour d'une période problématique.

Problèmes d'authentification REST ID

Dans le cas d'échecs d'authentification lorsque le magasin d'ID REST est utilisé, vous devez toujours commencer à partir d'un rapport d'authentification détaillé. Dans la zone Autres attributs, vous pouvez voir une section - RestAuthErrorMsg qui contient une erreur renvoyée par le cloud Azure :

Figure 31.

Utiliser les fichiers journaux

Dans ISE 3.0, en raison de la fonctionnalité Controlled Introduction of REST ID, les débogages pour cette fonctionnalité sont activés par défaut. Tous les journaux associés à l'ID REST sont stockés dans des fichiers ROPC qui peuvent être consultés via l'interface de ligne de commande :

skuchere-ise30-1/admin# sh logging application | i ropc

755573 Oct 04 2020 09:10:29 ropc/ropc.log

skuchere-ise30-1/admin# sh logging application ropc/ropc.log

23:49:31.449 [http-nio-9601-exec-6] DEBUG c.c.i.r.c.ROPCController - Starting ROPC auth flow

23:49:31.788 [http-nio-9601-exec-6] DEBUG c.c.i.r.u.ScimUtility - Found user and pass in the SCIM filter

Sur ISE 3.0 avec le correctif installé, notez que le nom du fichier est rest-id-store.log et non ropc.log. L'exemple de recherche précédent fourni fonctionne car le nom du dossier n'a pas changé.

Ces fichiers peuvent également être extraits du bundle de support ISE.

Voici quelques exemples de journaux qui montrent différents scénarios de travail et de non-travail :

1. Erreur de certificat lorsque Azure Graph n'est pas approuvé par le noeud ISE. Cette erreur est visible lorsque les groupes ne se chargent pas dans le paramètre du magasin d'ID REST.

20:44:54.420 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start proxy load for URI 'https://graph.microsoft.com/v1.0/groups'

20:44:54.805 [http-nio-9601-exec-7] ERROR c.c.i.r.p.a.AzureIdentityProviderFacade - Couldn't fetch application groups, REST error

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)

at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)

at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)

Ce problème indique que le certificat de l'API graphique Microsoft n'est pas approuvé par ISE. ISE 3.0.0.458 n'a pas d'autorité de certification DigiCert Global Root G2 installée dans le magasin de confiance. Ceci est documenté dans le défaut

- ID de bogue Cisco CSCv80297 Pour résoudre ce problème, vous devez installer DigiCert Global Root G2 CA dans le magasin de confiance ISE et le marquer comme approuvé pour les services Cisco.

Le certificat peut être téléchargé à l'adresse suivante : https://www.digicert.com/kb/digicert-root-certificates.htm

2. Code secret d'application incorrect.

10:57:53.200 [http-nio-9601-exec-1] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

10:57:54.205 [http-nio-9601-exec-1] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_client","error_description":"AADSTS7000215: Invalid client secret is provided.\r\nTrace ID: 99cc29f7-502a-4aaa-b2cf-1daeb071b900\r\nCorrelation ID: a697714b-5ab2-4bd1-8896-f9ad40d625e5\r\nTimestamp: 2020-09-29 09:01:36Z","error_codes":[7000215],"timestamp":"2020-09-29 09:01:36Z","trace_id":"99cc29f7-502a-4aaa-b2cf-1daeb071b900","correlation_id":"a697714b-5ab2-4bd1-8896-f9ad40d625e5","error_uri":"https://login.microsoftonline.com/error?code=7000215"}'

10:57:54.206 [http-nio-9601-exec-1] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.InvalidApplicationAuthException: AADSTS7000215: Invalid client secret is provided.

Trace ID: 99cc29f7-502a-4aaa-b2cf-1daeb071b900

Correlation ID: a697714b-5ab2-4bd1-8896-f9ad40d625e5

Timestamp: 2020-09-29 09:01:36Z - Error Codes: [7000215]

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateApplication(AzureIdentityProviderFacade.java:117)

3. ID d'application incorrect.

21:34:36.090 [http-nio-9601-exec-4] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

21:34:36.878 [http-nio-9601-exec-4] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '400'. Error - '{"error":"unauthorized_client","error_description":"AADSTS700016: Application with identifier '825aab1f-be45-4d53-92fe-bb756' was not found in the directory '83cc4b2c-c608-4563-b6bd-dc8e83977ff6'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You have sent your authentication request to the wrong tenant.\r\nTrace ID: 6dbd0fdd-0128-4ea8-b06a-5e78f37c0100\r\nCorrelation ID: eced0c34-fcc1-40b9-b033-70e5abe75985\r\nTimestamp: 2020-08-31 19:38:34Z","error_codes":[700016],"timestamp":"2020-08-31 19:38:34Z","trace_id":"6dbd0fdd-0128-4ea8-b06a-5e78f37c0100","correlation_id":"eced0c34-fcc1-40b9-b033-70e5abe75985","error_uri":"https://login.microsoftonline.com/error?code=700016"}'

21:34:36.879 [http-nio-9601-exec-4] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.InvalidApplicationAuthException: AADSTS700016: Application with identifier '825aab1f-be45-4d53-92fe-bb756' was not found in the directory '83cc4b2c-c608-4563-b6bd-dc8e83977ff6'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You have sent your authentication request to the wrong tenant.

Trace ID: 6dbd0fdd-0128-4ea8-b06a-5e78f37c0100

Correlation ID: eced0c34-fcc1-40b9-b033-70e5abe75985

Timestamp: 2020-08-31 19:38:34Z - Error Codes: [700016]

4. Utilisateur introuvable.

10:43:01.351 [http-nio-9601-exec-2] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '400'. Error - '{"error":"invalid_grant","error_description":"AADSTS50034: The user account bob does not exist in the 83cc4b2c-c608-4563-b6bd-dc8e83977ff6 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 9417a19e-66f8-4887-ab7a-a9ee268b1a00\r\nCorrelation ID: df3722ff-cd29-4ea2-98fc-fff0117a8db9\r\nTimestamp: 2020-08-31 08:46:57Z","error_codes":[50034],"timestamp":"2020-08-31 08:46:57Z","trace_id":"9417a19e-66f8-4887-ab7a-a9ee268b1a00","correlation_id":"df3722ff-cd29-4ea2-98fc-fff0117a8db9","error_uri":"https://login.microsoftonline.com/error?code=50034"}'

10:43:01.352 [http-nio-9601-exec-2] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_grant","error_description":"AADSTS50034: The user account bob does not exist in the 83cc4b2c-c608-4563-b6bd-dc8e83977ff6 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 9417a19e-66f8-4887-ab7a-a9ee268b1a00\r\nCorrelation ID: df3722ff-cd29-4ea2-98fc-fff0117a8db9\r\nTimestamp: 2020-08-31 08:46:57Z","error_codes":[50034],"timestamp":"2020-08-31 08:46:57Z","trace_id":"9417a19e-66f8-4887-ab7a-a9ee268b1a00","correlation_id":"df3722ff-cd29-4ea2-98fc-fff0117a8db9","error_uri":"https://login.microsoftonline.com/error?code=50034"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

5. Le mot de passe utilisateur a expiré. En général, cela peut se produire pour l'utilisateur nouvellement créé, car le mot de passe défini par l'administrateur Azure doit être modifié au moment de la connexion à Office365.

10:50:55.096 [http-nio-9601-exec-4] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_grant","error_description":"AADSTS50055: The password is expired.\r\nTrace ID: 776120b2-9687-4f88-bf93-822a4d019c00\r\nCorrelation ID: 5defbdc6-3a7f-425f-91e9-ba3c10fcc410\r\nTimestamp: 2020-08-31 08:54:51Z","error_codes":[50055],"timestamp":"2020-08-31 08:54:51Z","trace_id":"776120b2-9687-4f88-bf93-822a4d019c00","correlation_id":"5defbdc6-3a7f-425f-91e9-ba3c10fcc410","error_uri":"https://login.microsoftonline.com/error?code=50055","suberror":"user_password_expired"}'

10:50:55.097 [http-nio-9601-exec-4] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_grant","error_description":"AADSTS50055: The password is expired.\r\nTrace ID: 776120b2-9687-4f88-bf93-822a4d019c00\r\nCorrelation ID: 5defbdc6-3a7f-425f-91e9-ba3c10fcc410\r\nTimestamp: 2020-08-31 08:54:51Z","error_codes":[50055],"timestamp":"2020-08-31 08:54:51Z","trace_id":"776120b2-9687-4f88-bf93-822a4d019c00","correlation_id":"5defbdc6-3a7f-425f-91e9-ba3c10fcc410","error_uri":"https://login.microsoftonline.com/error?code=50055","suberror":"user_password_expired"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

6. Impossible de charger les groupes en raison d'autorisations API incorrectes.

12:40:06.624 [http-nio-9601-exec-9] ERROR c.c.i.r.u.RestUtility - Error response in 'GET' request. Status - '403'. Error - '{

"error": {

"code": "Authorization_RequestDenied",

"message": "Insufficient privileges to complete the operation.",

"innerError": {

"date": "2020-08-30T10:43:59",

"request-id": "da458fa4-cc8a-4ae8-9720-b5370ad45297"

}

}

}'

7. L'authentification échoue lorsque le ROPC n'est pas autorisé côté Azure.

11:23:10.824 [http-nio-9601-exec-2] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

11:23:11.776 [http-nio-9601-exec-2] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_client","error_description":"AADSTS7000218: The request body must contain the parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: 856d1ced-06c3-4446-a856-813789579b00\r\nCorrelation ID: b0a9cb82-4f37-46b3-abf5-361d8ce34094\r\nTimestamp: 2020-08-31 09:27:08Z","error_codes":[7000218],"timestamp":"2020-08-31 09:27:08Z","trace_id":"856d1ced-06c3-4446-a856-813789579b00","correlation_id":"b0a9cb82-4f37-46b3-abf5-361d8ce34094","error_uri":"https://login.microsoftonline.com/error?code=7000218"}'

11:23:11.777 [http-nio-9601-exec-2] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_client","error_description":"AADSTS7000218: The request body must contain the parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: 856d1ced-06c3-4446-a856-813789579b00\r\nCorrelation ID: b0a9cb82-4f37-46b3-abf5-361d8ce34094\r\nTimestamp: 2020-08-31 09:27:08Z","error_codes":[7000218],"timestamp":"2020-08-31 09:27:08Z","trace_id":"856d1ced-06c3-4446-a856-813789579b00","correlation_id":"b0a9cb82-4f37-46b3-abf5-361d8ce34094","error_uri":"https://login.microsoftonline.com/error?code=7000218"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

8. L'authentification échoue car l'utilisateur n'appartient à aucun groupe du côté Azure.

21:54:55.976 [http-nio-9601-exec-5] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

21:54:57.312 [http-nio-9601-exec-5] ERROR c.c.i.r.p.a.AzureROPCFlow - Missing claims in the id token: "name" or "groups"

21:54:57.313 [http-nio-9601-exec-5] ERROR c.c.i.r.c.ROPCController - Server Error

com.cisco.ise.ROPC.entities.exceptions.JsonParseException: Json exception: Missing claims in the id token: "name" or "groups"

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.validateIdTokenPayload(AzureROPCFlow.java:93)

9. Authentification des utilisateurs et récupération des groupes réussies.

11:46:03.035 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Starting ROPC auth flow

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.ScimUtility - Found user and pass in the SCIM filter

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Getting the right ROPC handler for the request IDPType AZURE

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Getting user groups from handler

11:46:03.038 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start building http client

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start proxy load for URI 'https://login.microsoftonline.com/83cc4b2c-c608-4563-b6bd-dc8e83977ff6/oauth2/v2.0/token'

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start check if host is bypass

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Iterating bypass hosts '192.168.1.10,10.201.228.98,10.62.145.72,172.16.201.204,172.16.201.203' to find host 'login.microsoftonline.com'

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Proxy server found with address '192.168.255.40' and port '8080', load to httpclient

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start adding proxy credentials to builder

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - No credentials found for proxy

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.e.c.CertificateCache - Created SSLContext with TLSv1.2 algorithm

11:46:03.041 [http-nio-9601-exec-7] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

11:46:04.160 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - The ROPCHandlerResponse is: {

"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User" ],

"userName" : "username",

"name" : {

"formatted" : "bob"

},

"displayName" : "bob",

"groups" : [ {

"value" : "17db2c79-fb87-4027-ae13-88eb5467f25b"

} ],

"roles" : [ ]

}