Référence:Solution d'échantillonnage Power BI
J'ai déplacé le code nécessaire de l'exemple de solution vers ma solution et me donne l'erreur suivante lors de l'authentification:
AADSTS90002: Autorisation du locataire introuvable. Cela peut arriver s'il y a aucun abonnement actif pour le locataire. Vérifiez auprès de votre abonnement administrateur.
Je m'authentifie avec ces 2 lignes:
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ApplicationId, credential);
L'erreur se produit sur la dernière ligne. Ci-dessous, les valeurs de mon web.config:
<add key="authorityUrl" value="https://login.windows.net/common/oauth2/authorize/" />
<add key="resourceUrl" value="https://analysis.windows.net/powerbi/api" />
Encore une fois, cela fonctionne à 100% dans l'exemple d'application, mais pas lorsque je passe à mon application. Des idées pourquoi?
Merci d'avance pour votre aide.
Donc, après quelques recherches, j'ai découvert que cela avait à voir avec la version des paquets de nuget suivants:
Microsoft.IdentityModel.Clients.ActiveDirectory
Microsoft.PowerBI.Api
Les versions suivantes devaient être utilisées:
Microsoft.IdentityModel.Clients.ActiveDirectory v3.13.9
Microsoft.PowerBI.Api V2.0.12
Il semble que cela ait quelque chose à voir avec les points de terminaison utilisés. Si vous rétrogradez vers les versions ci-dessus (qui sont les mêmes que celles utilisées dans l'exemple d'outils fourni), cela fonctionne.
Les dernières versions utilisent quelque chose comme ceci: https://login.microsoftonline.com/common/
où les versions fournies dans les mêmes utilisent: https://login.windows.net/common/oauth2/authorize/
Une fois que j'ai "déclassé" mes versions, il s'est authentifié!
J'espère que ceci aide quelqu'un d'autre.
Dans mon cas, au lieu de rétrograder Microsoft.IdentityModel.Clients.ActiveDirectory
, j’ai changé le point de terminaison d’authentification de https://login.windows.net/{My tenant}/oauth2/token
à https://login.microsoftonline.com/{My tenant}
, ce qui a résolu le problème.
Résolu en rétablissant l'assembly " Microsoft.IdentityModel.Clients.ActiveDirectory " à Version = 3.13.9.1126.
L'utilisation de la dernière version de cette assemblée a soulevé ce problème. Version = 4.4.0.0
Oui, toutes les réponses sont correctes, je veux juste mettre un peu de lumière sur les choses comme par exemple pourquoi ça marche en version basse et non en nouvelle version
Selon le document officiel ceci est une meilleure mise à jour de validation d'autorité de Microsoft
ADAL.NET 4.x est également moins tolérant qu’ADAL 3.x lorsqu’il définit le paramètre autorité dans le constructeur de AuthenticationContext. Valide les autorités doivent être, dans le cas d’Azure AD v1.0:
- https://login.microsoftonline.com/ {Guid}, où Guid correspond à l'ID du locataire
- https://login.microsoftonline.com/domainName , où le nom de domaine est un domaine associé à votre locataire
https://login.microsoftonline.com/common qui, dans le cas de ADAL.NET, désigne tout locataire Azure AD (notez que la signification est
différent dans MSAL.NET)Ce ne peut pas être https://login.microsoftonline.com/common/OAuth2/endpoint même si cela aurait pu être accepté à tort dans ADAL 3.x