【问题标题】:ADAL Authentication Token different of Postman Token Oauth2ADAL Authentication Token 与 Postman Token Oauth2 不同
【发布时间】:2018-01-18 20:06:27
【问题描述】:

我正在尝试将我的 api 连接到 dynamics 365 crm。当我使用邮递员获取令牌时,我可以访问,但是当我使用 ADAL 获取令牌时,请求返回 401 未授权。 如果我在我的应用程序上对邮递员获得的令牌进行硬编码,它就可以正常工作。 我看到邮递员返回给我 ADALnot 的信息(如 refresh_token、token_id)

Get token with postman

使用 ADAL 获取令牌

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 团队

标签: azure authentication token postman adal


【解决方案1】:

使用邮递员,您可以使用 OAuth 2.0 authorization code flow 获取令牌。 Azure AD 将在成功响应后返回访问令牌、刷新令牌、id 令牌。

使用 ADAL authContext.AcquireTokenAsync(resource, credential); 函数,您正在使用 client credentials flow 获取令牌。使用此流程,应用程序将其客户端凭据提供给 OAuth2 令牌颁发端点,并作为回报获得一个访问令牌,该令牌代表应用程序本身而没有任何用户信息,因此您将不会获得 id_token,因为不存在用户信息。此外,应用程序无需获取刷新令牌。当访问令牌过期时,它会简单地返回 OAuth2 令牌颁发端点以获取新的。

您可以通过 ADAL 的授权代码流获取令牌,请点击here 获取代码示例。

【讨论】:

  • 那么您会建议如何从 ADAL 获取无需获得 401 即可使用的授权令牌?
  • @ShobhitKumar,你能具体说明你的问题吗?
猜你喜欢
  • 2015-06-02
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 2021-10-29
  • 2014-07-31
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多