Azure AD B2C 继续提供 v1 令牌而不是 v2 令牌
Azure AD B2C keeps providing v1 tokens not v2 tokens
Azure 的 AD B2C 继续颁发 v1 令牌,即使在已注册的 SPA 应用程序的清单中配置了 v2 令牌:
{
"id": "XXX",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": null,
...
}
客户端使用@azure/msal-angular v2.0.5(以及@azure/msal-browser v2.19.0)通过普通 MSAL 拦截器请求令牌:
export const protectedResourceMap: Map<string, Array<string>> = new Map([
[
urlJoin(configs.apiUri, 'screen'),
[configs.authConfig.scope.screen_access],
],
]);
@NgModule({
imports: [
MsalModule.forRoot(
new PublicClientApplication({
auth: {
clientId: '...',
authority: 'https://login.microsoftonline.com/XXX.onmicrosoft.com',
postLogoutRedirectUri: '.../logout',
navigateToLoginRequestUrl: true,
redirectUri: '.../auth',
},
cache: {
cacheLocation: 'sessionStorage',
},
}),
{
interactionType: InteractionType.Redirect, // Popup or Redirect
loginFailedRoute: '/login-failed'
},
{
interactionType: InteractionType.Redirect, // Popup or Redirect
protectedResourceMap,
})
...
这看起来不错,尤其是 "accessTokenAcceptedVersion": 2
。
令牌仍然是 v1 的根本原因可能是什么?
{
"aud": "00000003-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"iss": "https://sts.windows.net/7dcXX-XXXXX.../",
...
"ver": "1.0",
...
}
不胜感激。
Azure AD B2C 仅在使用 v2.0 发出 OIDC 身份验证请求时使用过端点,v1.0 从未存在过。所以它一直发行 v1.0 代币(v2 是第一个也是唯一的版本)。这是完全正常的。
只有 Azure AD 具有 v1.0 和 v2.0 OIDC 端点,因此映射基于 accessTokenAcceptedVersion
。
你不需要在 AAD B2C 应用程序注册中弄乱这个 属性 除非你有 SAML 信赖方。
Azure 的 AD B2C 继续颁发 v1 令牌,即使在已注册的 SPA 应用程序的清单中配置了 v2 令牌:
{
"id": "XXX",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": null,
...
}
客户端使用@azure/msal-angular v2.0.5(以及@azure/msal-browser v2.19.0)通过普通 MSAL 拦截器请求令牌:
export const protectedResourceMap: Map<string, Array<string>> = new Map([
[
urlJoin(configs.apiUri, 'screen'),
[configs.authConfig.scope.screen_access],
],
]);
@NgModule({
imports: [
MsalModule.forRoot(
new PublicClientApplication({
auth: {
clientId: '...',
authority: 'https://login.microsoftonline.com/XXX.onmicrosoft.com',
postLogoutRedirectUri: '.../logout',
navigateToLoginRequestUrl: true,
redirectUri: '.../auth',
},
cache: {
cacheLocation: 'sessionStorage',
},
}),
{
interactionType: InteractionType.Redirect, // Popup or Redirect
loginFailedRoute: '/login-failed'
},
{
interactionType: InteractionType.Redirect, // Popup or Redirect
protectedResourceMap,
})
...
这看起来不错,尤其是 "accessTokenAcceptedVersion": 2
。
令牌仍然是 v1 的根本原因可能是什么?
{
"aud": "00000003-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"iss": "https://sts.windows.net/7dcXX-XXXXX.../",
...
"ver": "1.0",
...
}
不胜感激。
Azure AD B2C 仅在使用 v2.0 发出 OIDC 身份验证请求时使用过端点,v1.0 从未存在过。所以它一直发行 v1.0 代币(v2 是第一个也是唯一的版本)。这是完全正常的。
只有 Azure AD 具有 v1.0 和 v2.0 OIDC 端点,因此映射基于 accessTokenAcceptedVersion
。
你不需要在 AAD B2C 应用程序注册中弄乱这个 属性 除非你有 SAML 信赖方。