【问题标题】:PowerBI AADSTS90002: Tenant authorize not foundPowerBI AADSTS90002:未找到租户授权
【发布时间】:2019-04-29 08:59:06
【问题描述】:

参考:Power BI Sample Solution

我已将示例解决方案中的必要代码移至我的解决方案,并在验证时出现以下错误:

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% 有效,但在我移至我的应用程序时无效。任何想法为什么?

提前感谢您的帮助。

【问题讨论】:

    标签: c# powerbi-embedded


    【解决方案1】:

    就我而言,我没有降级Microsoft.IdentityModel.Clients.ActiveDirectory,而是将身份验证端点从https://login.windows.net/{My tenant}/oauth2/token更改为https://login.microsoftonline.com/{My tenant},从而解决了问题。

    【讨论】:

    • 我不得不将我的更改为https://login.windows.net/common/,但它的工作原理是一样的。谢谢。
    【解决方案2】:

    所以经过一番研究,我发现这与以下 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/

    一旦我“降级”了我的版本,它就通过了身份验证!

    希望这对其他人有所帮助。

    【讨论】:

    【解决方案3】:

    是的,所有答案都是正确的,我只是想说明一下为什么它在低版本而不是新版本中工作的原因

    根据official doc,这是来自微软的更好的权威验证更新

    ADAL.NET 4.x 在设置 AuthenticationContext 的构造函数中的权限。有效的 对于 Azure AD v1.0,权限应该是:

    【讨论】:

      【解决方案4】:

      通过将程序集“Microsoft.IdentityModel.Clients.ActiveDirectory”恢复为 Version=3.13.9.1126 解决。

      使用此程序集的最新版本会引发此问题。版本 = 4.4.0.0

      【讨论】:

        【解决方案5】:

        修复非常简单,但很难从 Microsoft Docs 中找到它,因为它们非常庞大。所以我在分享什么对我们有用。

        请注意,我们使用AuthenticationContext 结合ClientCredential 来获取令牌。

        3.x 版本的 AuthorityUrl 是 - https://login.windows.net/{yourOrg}/oauth2/token

        升级到 4.x 或更高版本后,应更改为 - https://login.microsoftonline.com/{yourOrg}

        如果您想知道完整的代码只有 2 行代码

        var authenticationContext = new AuthenticationContext(AppSettings.AuthorityUri);
        var token = authenticationContext.AcquireTokenAsync(AppSettings.ResourceUri, new ClientCredential(AppSettings.ClientId, AppSettings.ClientSecret)).GetAwaiter().GetResult();
        

        【讨论】:

          猜你喜欢
          • 2018-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-08
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          • 2021-09-27
          相关资源
          最近更新 更多