3

J'ai une application client native qui obtient un jeton OAuth2 pour l'autorisation Active Directory. Il utilisera ensuite ce jeton pour communiquer avec un serveur d'API Web sécurisé où certaines zones de l'API sont sécurisées à l'aide de l'attribut [Authorize]. Le serveur est également enregistré auprès d'Azure AD et peut autoriser correctement les demandes via AD.Exception d'authentification Active Directory (AADSTS90027) avec Azure AD

Lorsque je tente d'obtenir le jeton, je reçois l'exception suivante sur la ligne 2 du code ci-dessous:

Informations complémentaires: invalid_request: AADSTS90027: Le client '< GUID client >' et des ressources »https://abccompany.com/MyApplication.Server 'identifier la même application.

Voici mon code que je suis en cours d'exécution dans le client natif (juste sur un bouton de presse comme un test, pour l'instant). De toute évidence, le GUID et les noms de sociétés ont été obscurcis.

AuthenticationContext ac = new AuthenticationContext("https://login.windows.net/abccompany.com"); 
AuthenticationResult ar = ac.AcquireToken("https://abccompany.com/MyApplication.Server", "<Client GUID>", new Uri("https://localhost:44300/secure"), PromptBehavior.Auto); 

Je me suis assuré le redirect existait dans Azure dans la configuration de l'application (sinon il y aurait eu une erreur de redirection à la place). Que signifie l'erreur?

Répondre

5

Vous semblez utiliser le clientId du WebAPI dans lequel vous devez fournir le clientId de l'application cliente. Veuillez enregistrer une 'application client native' distincte dans Azure AD représentant l'application cliente.

La rubrique suivante explique le flux de protocole et comment enregistrer WebAPIs dans AD Azure tels que les utilisateurs de plusieurs locataires AD peuvent utiliser cette API: http://msdn.microsoft.com/en-us/library/azure/dn499820.aspx#BKMK_Native Les exemples suivants devraient vous voir à travers:

Hope this helps. Ps: Azure AD n'émet pas de jeton lorsque le client et la ressource sont la même application. Dans votre cas, ils doivent être différents et le client de ressource (délivré à un client confidentiel) ne doit pas être utilisé comme client public - cependant pour les scénarios de service à service, on peut soutenir que l'émission de jetons devrait être autorisée - ceci est quelque chose nous étudions.