リファレンス:Power BIサンプルソリューション
必要なコードをサンプルソリューションから自分のソリューションに移動しました。認証時に次のエラーが表示されました。
AADSTS90002:テナント許可が見つかりません。これは、テナントのアクティブなサブスクリプションがない場合に発生する可能性があります。サブスクリプション管理者に確認してください。
私はこれらの2行で認証しています:
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ApplicationId, credential);
エラーは最後の行で発生しています。以下は私のweb.configの値です。
<add key="authorityUrl" value="https://login.windows.net/common/oauth2/authorize/" />
<add key="resourceUrl" value="https://analysis.windows.net/powerbi/api" />
繰り返しますが、これはサンプルアプリでは100%動作しますが、アプリに移動しても動作しません。なぜアイデアがありますか?
助けてくれてありがとう。
いくつかの調査の結果、次のnugetパッケージのバージョンに関係していることがわかりました。
Microsoft.IdentityModel.Clients.ActiveDirectory
Microsoft.PowerBI.Api
次のバージョンを使用する必要がありました。
Microsoft.IdentityModel.Clients.ActiveDirectory v3.13.9
Microsoft.PowerBI.Api V2.0.12
使用されているエンドポイントと関係があるようです。上記のバージョン(提供されているサンプルツールで使用されているものと同じバージョン)にダウングレードすると、動作します。
最新バージョンは次のようなものを使用します:https://login.microsoftonline.com/common/
ここで、同じ用途で提供されるバージョン:https://login.windows.net/common/oauth2/authorize/
バージョンを「ダウングレード」すると、認証されました!
これが他の人の助けになることを願っています。
私の場合、Microsoft.IdentityModel.Clients.ActiveDirectory
、認証エンドポイントをhttps://login.windows.net/{My tenant}/oauth2/token
to https://login.microsoftonline.com/{My tenant}
問題を解決しました。
アセンブリ「Microsoft.IdentityModel.Clients.ActiveDirectory」をバージョン= 3.13.9.1126に戻すことで解決しました。
このアセンブリの最新バージョンを使用すると、この問題が発生しました。バージョン= 4.4.0.0
はい、すべての答えは正しいです。新しいバージョンではなく、低いバージョンで動作している理由など、いくつかの点に注目したいだけです。
公式ドキュメント に従って、これはMicrosoftからのより良い権限検証アップデートです
ADAL.NET 4.xは、AuthenticationContextのコンストラクターで権限を設定するときにADAL 3.xよりも寛容ではありません。有効な機関は、Azure AD v1.0の場合:
- https://login.microsoftonline.com/ {Guid}、GuidはテナントIDです
- https://login.microsoftonline.com/domainName 、ドメイン名はテナントに関連付けられたドメインです
https://login.microsoftonline.com/common これは、ADAL.NETの場合、任意のAzure ADテナントを意味します(意味は
MSAL.NETでは異なります)https://login.microsoftonline.com/common/OAuth2/endpoint にすることはできません。これがADAL 3.xで誤って受け入れられたとしても