AcquireToken(string resource, string clientId, UserCredential userCredential) 不适用于 Azure 身份验证

Posted

技术标签:

【中文标题】AcquireToken(string resource, string clientId, UserCredential userCredential) 不适用于 Azure 身份验证【英文标题】:AcquireToken(string resource, string clientId, UserCredential userCredential) not working for Azure Authentication 【发布时间】:2019-10-07 01:17:31 【问题描述】:

使用 Microsoft.IdentityModel.Clients.ActiveDirectory(2.22.302111727) 我正在尝试通过 ADAL AcquireToken(resourceUri, new ClientCredential(clientId,clientSecret) 获取访问令牌和刷新令牌,但我能够获得唯一的访问权限仅令牌,但是当我将同一个应用程序与 AcquireToken(resourceUri, clientId, userCredential) 一起使用并将用户名和密码作为 userCredentials 传递时,我可以获得访问权和刷新令牌。

string resourceUri = "https://graph.microsoft.com";
string clientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string clientSecret = "xxxxxxxxxxxxxxxxxxxxxxxx";


 AuthenticationResult token = authContext.AcquireToken(resourceUri, new 
ClientCredential(clientId,clientSecret));

string resourceUri = "https://graph.microsoft.com";
string clientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string clientSecret = "xxxxxxxxxxxxxxxxxxxxxxxx";


AuthenticationResult token = authContext.AcquireToken(resourceUri, new 
ClientCredential(clientId,clientSecret));

我也尝试过使用 AcquireToken(clientId, resourceUri, new Uri(redirectUri)) 但它给了我错误“AADSTS7000218:请求正文必须包含以下参数:'client_assertion' 或 'client_secret'”,我尝试了 AcquireToken (resourceUri, clientId, 新 Uri(redirectUri), PromptBehavior.RefreshSession ,new UserIdentifier("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", UserIdentifierType.UniqueId)) 它给了我错误“AADSTS650057: Invalid resource. 客户端已请求访问未在请求中列出的资源客户端应用程序注册中的权限。客户端应用程序 ID:00000003-0000-0000-c000-000000000000(Microsoft Graph)。 请解释错误 AADSTS650057 中此处缺少的确切资源值。

【问题讨论】:

【参考方案1】:

您可能会遇到几个不同的错误。 OAuth2 客户端凭据授予不会返回刷新令牌 (enter link description here),因为您可以使用现有凭据获取新令牌。涉及用户凭据的请求确实会返回刷新令牌,因为您可能希望更新访问令牌而无需提示用户输入凭据。

AADSTS650057 很可能是由于您的应用程序在 AAD 中注册而没有调用 MS Graph 的权限。应用程序必须具有应用程序权限(使用客户端凭据时)或委托权限(使用用户凭据时)才能获取此资源的令牌。

【讨论】:

以上是关于AcquireToken(string resource, string clientId, UserCredential userCredential) 不适用于 Azure 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

返回令牌之前的 AcquireToken Observable 错误

ADAL AcquireToken Windows 身份验证 UWP

13 死锁

使用 AVAudioPlayer 控制锁定屏幕上的音频

使用idea maven打包项目 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resou

Flask-Restful解决跨域问题No 'Access-Control-Allow-Origin' header is present on the requested resou