访问令牌的版本错误(预期为V2,收到的是V1)



我正试图使用@Azure/msal-angular从Azure Active directory注册用户,更准确地说,我尝试了以下教程

这些是我对项目所做的更改

export function MSALInstanceFactory(): IPublicClientApplication {
return new PublicClientApplication({
auth: {
clientId: 'my_real_client_id,
redirectUri: 'http://localhost:4200',
authority: 'https://login.microsoftonline.com/my_real_tenant_id',
postLogoutRedirectUri: '/'
},
cache: {
cacheLocation: BrowserCacheLocation.LocalStorage,
storeAuthStateInCookie: isIE, // set to true for IE 11
},
system: {
loggerOptions: {
loggerCallback,
logLevel: LogLevel.Info,
piiLoggingEnabled: false
}
}
});
}
export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
const protectedResourceMap = new Map<string, Array<string>>();
protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);
protectedResourceMap.set('http://localhost:5000/', ['profile']);
return {
interactionType: InteractionType.Redirect,
protectedResourceMap
};
}

问题是MsalInterceptor将V1令牌添加到我的API请求的URL中,该请求需要V2

Azure被配置为访问TokenAcceptedVersion:2

如果需要,我可以提供更多信息

更新

在我的情况下,问题是由于指定的范围,API对于";user.read">";配置文件">需要V1访问令牌

虽然您已经解决了这个问题,但我想澄清更多细节。

事实上,这不是"权限";user.read";以及";配置文件";需要V1 accessToken。实际原因是:

访问令牌版本由清单中应用程序/API的配置决定。如果您想要V2访问令牌,则必须将清单的accessTokenAcceptedVersion部分更改为2。这也是为什么当您请求访问令牌时,您无法控制将从客户端应用程序获得哪个版本的访问令牌的原因。

我们无法从Microsoft Graph端修改accessTokenAcceptedVersion

因此得出的结论是,MS Graph的一个访问令牌和那些总是V1访问令牌。

最新更新