【发布时间】:2018-10-18 10:50:11
【问题描述】:
我们有一个大型的微服务架构。所有服务都使用 JwtBearer 针对 Azure AD 1.0 端点。
现在我们要访问 Azure AD 的用户架构扩展。在这种情况下,推荐的方法是 Microsoft Graph。但我们现在不想将所有服务和身份验证端点移至 2.0。
但问题是,Azure AD 1.0 的令牌对于获取 Azure AD 2.0 的代表令牌无效:
Microsoft.Identity.Client.MsalUiRequiredException:AADSTS70002: 验证凭据时出错。 AADSTS50013:令牌发行者不 匹配 api 版本:版本 1 令牌不能与 v2 一起使用 端点
我们使用这个代码知道吗
// create instance to read cca with a user token cache
ConfidentialClientApplication cca =
new ConfidentialClientApplication(_azureOptions.ClientId, _azureOptions.RedirectUri,
new ClientCredential(_azureOptions.ClientSecret),
userTokenCache, null);
// try to get an on behalf token
AuthenticationResult result;
try
{
result = await cca.AcquireTokenOnBehalfOfAsync(
_graphOptions.GetScopesCollection(),
new UserAssertion(accessToken.RawData), _graphOptions.Authority);
}
catch (Exception exc)
{
// ...
throw;
}
在这种情况下,_azureOptions 适用于 Azure AD 1.0,_graphOptions 适用于 2.0(/v2.0 端点)
异常发生在AcquireTokenOnBehalfOfAsync
谢谢,本
【问题讨论】:
-
为什么需要使用v2.0?不能用 v1.0 访问 MS Graph 吗?
-
@juunas 如果我将
_graphOptions.Authority从 2.0 更改为 1.0,我会得到同样的异常 -
@juunas 看起来这种代码(MSAL 库)仅支持 Azure AD 2.0。问题是带有 ADAL 的 Graph 1.0 不支持用户扩展。但是我们能否使用 V2 令牌访问 V1 API?或者如何与我们不操作但使用 V1 的应用程序进行通信?
-
啊.. 您可能需要使用 v1 手动执行 HTTP 请求
-
@juunas 我从 MSAL 中删除了所有依赖项并恢复为 ADAL。可惜目前没有有效的迁移策略 :-( 感谢您的帮助!
标签: azure-active-directory microsoft-graph-api