我需要来自AAD的访问令牌(以非交互方式)才能访问PowerBI服务。
这就是我所拥有的:
Native application
中创建的Azure Active Directory
client_id
和client_secret
Console application
我正在传递client_id
,user_email
和user_password
。我尝试过不同用户的凭证,
总而言之,我在获取令牌时遇到以下错误
其他信息:AADSTS65001:用户或管理员尚未 同意使用ID为''的应用程序。发送一个 此用户和资源的交互式授权请求。
以下是我使用https://msdn.microsoft.com/en-in/library/partnercenter/dn974935.aspx
的参考资料可能的原因是什么?
答案 0 :(得分:0)
虽然可以以非交互方式为用户获取访问令牌,但重要的是要注意,至少要开始,必须为用户提供某种程度的交互式体验。
为了使客户端应用程序能够访问Resource API,用户必须同意允许Resource 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”。
我希望这有帮助!