【问题标题】:Error while getting access token for PowerBI service from AAD application从 AAD 应用程序获取 PowerBI 服务的访问令牌时出错
【发布时间】:2017-05-17 12:14:34
【问题描述】:

我需要来自 AAD 的访问令牌(以非交互方式)来访问 PowerBI 服务。

这是我所拥有的:

  1. Native applicationAzure Active Directory 中创建,具有 PowerBI 权限
  2. Native 应用程序的 client_idclient_secret
  3. Console application 我正在传递client_iduser_emailuser_password

我尝试过不同用户的凭据,

  1. 普通用户的凭据
  2. 管理员凭据
  3. 服务帐号的凭据

总之,我在获取令牌时遇到以下错误

附加信息:AADSTS65001:用户或管理员尚未 同意使用 ID 为“”的应用程序。发送一个 对此用户和资源的交互式授权请求。

这是我使用的参考https://msdn.microsoft.com/en-in/library/partnercenter/dn974935.aspx

这可能是什么原因?

【问题讨论】:

标签: c# azure access-token azure-active-directory


【解决方案1】:

虽然可以通过非交互式方式为用户获取访问令牌,但重要的是要注意,至少在开始时,必须为用户提供某种程度的交互式体验。

为了让客户端应用程序访问资源 API,用户必须同意允许资源 API 向客户端应用程序提供数据。即使只是为了登录,客户端应用程序也会收到带有用户 UPN、安全组、角色、名字/姓氏等的令牌...... AAD 本身必须觉得可以将此个人数据提供给客户端应用程序,这意味着用户必须同意该应用的“登录并阅读基本资料”。这意味着所有基于用户的应用程序总是需要获得一些同意。

一旦建立了同意信任,就可以以非交互方式进行后续调用,但只能在记录同意后进行。

整个同意体验都是通过我们的登录体验来处理的,它托管在我们的服务器上,不需要您编写任何代码或托管任何东西。只需使用您的配置信息生成一个 url,让用户登录并同意您的应用程序:

https://login.microsoftonline.com/<TenantID>/oauth2/authorize?client_id=<AppID>&response_type=code&redirect_uri=<RedirectURI>&resource=<ResourceURI>&prompt=admin_consent

请注意,我们在此处添加了“prompt=admin_consent”,这是租户管理员可以执行的一种特殊形式的同意,它将代表租户中的所有用户同意客户端应用程序所需的权限。 如果您希望您的同意基于每个用户,请将其更改为“prompt=consent”。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2020-05-10
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多