【发布时间】:2018-02-25 15:13:51
【问题描述】:
我必须更改我的代码才能获得一个有效令牌,该令牌允许我使用 Graph API 访问 AAD 用户的详细个人资料信息
但令我沮丧的是,我最终意识到此令牌不允许访问我的 API,该 API 也托管在 AAD 后面的 Azure 上?
有没有一种方法可以两者兼得?
注意问题在于我在标头中传递的资源 - 它是用于我的 API 或用于 Graph,但我肯定不能要求用户登录两次?
解决方案是什么,除了在 Graph Token 用于登录时嵌入客户端密码 ..?
代码示例使用 Microsoft.IdentityModel.Clients.ActiveDirectory
示例 1 - 这将返回一个我可以用于我的 API 但不能用于 Graph 的令牌
authContext = new AuthenticationContext(authority);
PlatformParameters p = new PlatformParameters(PromptBehavior.Auto, hwnd);
AuthenticationResult result = null;
result = await authContext.AcquireTokenAsync(todoListResourceId, clientId, redirectURI, p);
Resource = https://[mywebsite].azurewebsites.net/api/Timekeeper
示例 2 - 这给了我一个可用于 GraphAPI 的令牌,但不是我的 AAD API
Resource = https://graph.windows.net/
【问题讨论】:
标签: azure active-directory azure-active-directory adal