Nous faisons this projet API Web CRM. Le projet se connecte à l'instance en ligne Dynamics CRM et obtient la liste des comptes.
Le login semble bien se passer . Cependant, la liste des comptes donne l'erreur ci-dessous:
AADSTS65001: l'utilisateur ou l'administrateur n'a pas consenti à utiliser l'application avec l'ID 'xxxx-xxxxx-xxxx-xxx'. Envoyez une demande d'autorisation interactive pour cet utilisateur et cette ressource . ID de trace: e3b360d6-39fb-4e61-87d9-26531f30fd7b ID de corrélation: 9b2cff0c-074e-44fe-a169-77c8061a7312 Horodatage: 2016-10-18 10: 12: 49Z
Les permissions sont correctement définies :
Quel est le problème?
Un administrateur doit consentir aux autorisations. Vous devez faire une demande d'autorisation à Azure AD qui inclut le paramètre Prompt=admin_consent
.
Comme dans la documentation ici , le paramètre Prompt peut avoir 3 valeurs: login, consent ou admin_consent.
Donc, vous devriez aller à une URL telle que https://login.microsoftonline.com/tenant-id/oauth2/authorize?client_id=app-client-id&redirect_uri=encoded-reply-url&response_type=code&Prompt=admin_consent .
Remplacez tenant-id par votre identifiant/nom de domaine Azure AD ou common si votre application est multi-locataire. Remplacez app-client-id par l'identifiant client de votre application. Remplacez encoded-reply-url par une URL de réponse codée par URL de votre application.
Un moyen plus simple de construire l’URL dont vous avez besoin est de passer par l’authentification et de simplement saisir l’URL dans la barre d’adresse lorsque vous appuyez sur Azure AD. Ensuite, ajoutez simplement &Prompt=admin_consent
à l'URL.
ÉDITER: la dernière mise à jour du portail Azure permettait d’accorder directement des autorisations à partir du portail.
Si vous accédez à Azure Active Directory dans le nouveau portail, recherchez l'enregistrement de votre application à cet emplacement et cliquez sur Accorder des autorisations sous le panneau Autorisations requises.
Pour moi, cette erreur est survenue soudainement et cela aussi pour quelques utilisateurs seulement.
Ma configuration était, application SPA essayant d'accéder à l'API. J'ai supprimé l'autorisation d'API de l'enregistrement de l'application SPA et l'ai ajoutée à nouveau. Ça a marché.
Je recevais cette erreur dans une application native utilisant ADAL. J'avais donné toutes les autorisations correctes, mais j'avais déjà reçu un jeton provenant d'une connexion précédente. Mon problème était que le jeton précédent était périmé et ne contenait pas les revendications mises à jour. Pour moi, la solution consistait à utiliser PromptBehavior.RefreshSession conformément au code ci-dessous.
AuthenticationResult result = await authenticationContext.AcquireTokenAsync(resourceId, clientId, redirectURI, new PlatformParameters(PromptBehavior.RefreshSession, false));
Selon MSDN , PromptBehavior.RefreshSession "réautorise (via l'affichage de la vue Web) l'utilisation des ressources, en s'assurant que le jeton d'accès obtenu contient des revendications mises à jour. Si des cookies de connexion utilisateur sont disponibles, l'utilisateur ne sera pas invité pour les informations d'identification à nouveau et la boîte de dialogue de connexion sera automatiquement fermer. "
Donne _ tous _ les autorisations. Vous trouverez plusieurs listes déroulantes (comme celle que vous montrez dans la capture d'écran).
Chaque élément déroulant aura plusieurs cases à cocher faisant référence à des informations d'identification différentes. Vérifiez chacun et tout va bien.