azure - ADAL 身份验证 token 与 Postman token Oauth2 不同

标签 azure authentication token postman adal

我正在尝试将我的 api 连接到 Dynamics 365 crm。当我通过 postman 获取 token 时,我可以访问,但是当我通过 ADAL 获取 token 时,请求返回 401 未经授权。 如果我在我的应用程序上对 postman 获得的 token 进行硬编码,它就可以正常工作。 我看到 postman 返回给我的信息不是 ADAL(例如刷新 token 、 token ID)

Get token with postman

使用 ADAL 获取 token

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);

最佳答案

通过 postman ,您可以使用 OAuth 2.0 authorization code flow 获取 token 。成功响应后,Azure AD 将返回访问 token 、刷新 token 、id token 。

使用 ADAL authContext.AcquireTokenAsync(resource, credential); 函数,您可以使用 client credentials flow 获取 token 。通过此流程,应用程序向 OAuth2 token 发布端点提供其客户端凭据,并作为返回获取代表应用程序本身的访问 token ,而无需任何用户信息,因此您将无法获取 id_token,因为不存在用户信息。此外,应用程序不需要获取刷新 token 。当访问 token 过期时,它只是返回到 OAuth2 token 颁发端点以获取新的 token 。

您可以通过ADAL使用授权码流程获取 token ,请点击here代码示例。

关于azure - ADAL 身份验证 token 与 Postman token Oauth2 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45615996/

相关文章:

authentication - Wildfly 8 基本身份验证

apache - 在 tomcat 7 中登录管理器 webapp 显示错误

ios - Adobe PhoneGap Build (iOS) 和 PushWoosh

javascript - 如何使用外部登录从 Web API 2 获取 token

azure - 使用 Azure 函数从 Azure Blob 存储中删除早于 X 天的文件

Azure 数据工厂本地文件跳过标题行

java - 如何在 Java 中通过身份验证连接到 Cassandra 集群?

python - databricks Rest api 奇怪的缺少参数

c# - 如何根据函数触发器中的属性绑定(bind) azure 函数输入?

java - 为什么当我将元素从一维数组传输到二维数组时,在获取上一个循环生成的最后一个一维数组时