1

Je dois obtenir une liste de groupes et d'utilisateurs à partir de Office 365 AD à partir d'une application console.Accéder aux utilisateurs et aux groupes à partir d'une application console

Je pensais que je devrais être en mesure d'utiliser Microsoft Graph pour cela. J'ai donc essayé d'abord d'aller chercher un jeton:

curl -H "Content-Type: application/x-www-form-urlencoded" --data "grant_type=client_credentials&client_id=<hidden uuid>&client_secret=<hidden secret>&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" https://login.microsoftonline.com/testdirectory.onmicrosoft.com/oauth2/v2.0/token 

Je reçois avec succès un jeton ici

J'essaie d'obtenir une liste de tous les utilisateurs

curl -H "Accept: application/json" -H "Authorization: Bearer <hidden bearer token>" https://graph.microsoft.com/v1.0/users 

Mais la réponse que je reçois est

{ 
    "error": { 
    "code": "Authorization_IdentityNotFound", 
    "message": "The identity of the calling application could not be established.", 
    "innerError": { 
     "request-id": "<hiden-uuid>", 
     "date": "2017-07-11T12:47:17" 
    } 
    } 
} 

Il convient de noter que j'ai une application enregistrée à https://apps.dev.microsoft.com/. J'ai également affecté des autorisations Group.Read.All et User.Read.All à la fois en tant qu'autorisations déléguées et autorisations d'application. Le problème est que c'est une application console, je suppose que je ne peux pas demander le consentement des utilisateurs. Mais puisque l'application est enregistrée sur notre compte de domaine, je pense que cela devrait fonctionner de toute façon? Ou comment puis-je donner un accès au service ou à l'application de la console à l'AD?

EDIT demande de @juunas voici le contenu décodée:

{ 
    "typ": "JWT", 
    "alg": "RS256", 
    "x5t": "<hidden>", 
    "kid": "<hidden>" 
} 

{ 
    "aud": "https://graph.microsoft.com", 
    "iss": "https://sts.windows.net/<hidden_uuid>/", 
    "iat": 1499718180, 
    "nbf": 1499718180, 
    "exp": 1499722080, 
    "aio": "<hidden>", 
    "app_displayname": "<hidden>", 
    "appid": "<hidden>", 
    "appidacr": "1", 
    "idp": "https://sts.windows.net/<hidden_uuid_same_as_above>/", 
    "tid": "<hidden>", 
    "uti": "<hidden>", 
    "ver": "1.0" 
} 
+0

Pouvez-vous décoder le jeton d'accès par exemple à https://jwt.io et collez-le ici? N'hésitez pas à en expulser des informations personnelles, bien sûr. Quoi qu'il en soit, il devrait au moins contenir la bonne audience (MS Graph), et les bonnes portées. – juunas

Répondre

1

En général, lors de la construction d'une application qui utilise des autorisations d'application, l'application nécessite une page ou vue sur laquelle l'administrateur approuve les autorisations de l'application. Si vous créez une application de service, vous pouvez accéder manuellement au navigateur Web au https://login.microsoftonline.com/{tenant name}/adminconsent?client_id={application id}&state={some state data}&redirect_uri={redirect uri}.

Avant d'utiliser cette application, l'administrateur locataire doit se connecter et permettre d'utiliser cette application une seule fois, et le login (autorisation d'administrateur) n'est plus nécessaire .Après le processus de consentement administratif, lors de l'utilisation du flux d'informations client. graphique API, si vous décoder le jeton d'accès à online tool, vous pouvez trouver Group.Read.All et User.Read.All demandes d'autorisation dans roles revendication.

S'il vous plaît cliquer here et here pour plus de détails sur la façon d'utiliser l'autorisation d'application avec point final v2 Azure AD et Microsoft Graph