ADAL身份验证令牌与Postman令牌OAuth2不同

3
我正在尝试将我的API连接到Dynamics 365 CRM。 当我使用postman获取令牌时,我可以访问,但是当我使用ADAL获取令牌时,请求返回401未经授权。 如果我在应用程序中硬编码使用postman获得的令牌,则可以正常工作。 我看到postman返回给我的信息,ADAL没有(例如refresh_token,token_id)。
string resource = "https://******.crm2.dynamics.com/";
string clientId = "**************";
string clientSecret = "************"; 
string authority = "https://login.microsoftonline.com/*****/oauth2/authorize";

ClientCredential credential = new ClientCredential(clientId, clientSecret);
AuthenticationContext authContext = new AuthenticationContext(authority, true);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, credential);

你解决了这个问题吗?我也遇到了同样的问题,虽然我想责怪 Dynamics 团队,但我怀疑真正的罪魁祸首是 Azure AD 和 ADAL 团队。 - m12lrpv
1个回答

0

使用Postman,您可以使用OAuth 2.0授权代码流获取令牌。Azure AD将在成功响应后返回访问令牌、刷新令牌和ID令牌。

使用ADAL authContext.AcquireTokenAsync(resource, credential);函数,您可以使用客户端凭据流获取令牌。使用此流程,应用程序向OAuth2令牌发行终端呈现其客户端凭据,并获得代表应用程序本身而没有任何用户信息的访问令牌,因此您将不会获得id_token,因为不存在任何用户信息。此外,应用程序无需获取刷新令牌。当访问令牌过期时,它只需返回OAuth2令牌发行终端以获取新的令牌。

您可以使用ADAL使用授权代码流获取令牌,请单击此处查看代码示例。


你会如何建议从ADAL获取授权令牌,以便在不收到401错误的情况下使用? - Shobhit Kumar
@ShobhitKumar,你能具体说明你的问题吗? - Nan Yu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接