Azure AD 令牌验证失败,"level":30,"msg":"authentication failed due to: invalid signature"
Azure AD token verification failed , "level":30,"msg":"authentication failed due to: invalid signature"
我正在从前端调用后端-api,出于身份验证的目的,我使用 azure-ad onfronted 和后端,当我第一次获取 API 时,请求得到验证,但对于下一个 api调用,前面是调用方法
const checkAccessTokenandGenerateIfExpired = () => {
const account = msalInstance.getAllAccounts()[0];
const accessTokenRequest = {
scopes: ["User.Read"],
account: account
}
msalInstance.acquireTokenSilent(accessTokenRequest).then(function (accessTokenResponse) {
let accessToken = accessTokenResponse.accessToken;
localStorage.removeItem("token");
localStorage.setItem("token", accessToken);
return toString(accessToken)
}).catch(function (error) {
if (error instanceof InteractionRequiredAuthError) {
msalInstance.acquireTokenPopup(accessTokenRequest).then(function (accessTokenResponse) {
console.log(accessTokenResponse)
let accessToken = accessTokenResponse.accessToken;
localStorage.removeItem("token");
localStorage.setItem("token", accessToken);
}).catch(function (error) {
console.log(error);
});
}
console.log(error);
});
};
后端 returns : - 身份验证失败
不知道上面的代码有什么错误,因为上面的代码块在第二次 API 调用期间生成了新令牌
这是因为您在 accessTokenRequest (User.Read) 中使用了 Microsoft Graph API 范围。您需要为 API 使用范围,而不是 MS Graph。您可以在 API 应用注册的“公开 API”页面中定义它们。
我正在从前端调用后端-api,出于身份验证的目的,我使用 azure-ad onfronted 和后端,当我第一次获取 API 时,请求得到验证,但对于下一个 api调用,前面是调用方法
const checkAccessTokenandGenerateIfExpired = () => {
const account = msalInstance.getAllAccounts()[0];
const accessTokenRequest = {
scopes: ["User.Read"],
account: account
}
msalInstance.acquireTokenSilent(accessTokenRequest).then(function (accessTokenResponse) {
let accessToken = accessTokenResponse.accessToken;
localStorage.removeItem("token");
localStorage.setItem("token", accessToken);
return toString(accessToken)
}).catch(function (error) {
if (error instanceof InteractionRequiredAuthError) {
msalInstance.acquireTokenPopup(accessTokenRequest).then(function (accessTokenResponse) {
console.log(accessTokenResponse)
let accessToken = accessTokenResponse.accessToken;
localStorage.removeItem("token");
localStorage.setItem("token", accessToken);
}).catch(function (error) {
console.log(error);
});
}
console.log(error);
});
};
后端 returns : - 身份验证失败
不知道上面的代码有什么错误,因为上面的代码块在第二次 API 调用期间生成了新令牌
这是因为您在 accessTokenRequest (User.Read) 中使用了 Microsoft Graph API 范围。您需要为 API 使用范围,而不是 MS Graph。您可以在 API 应用注册的“公开 API”页面中定义它们。