@azure/msal-browser 2.14.1 @azure/msal-react 1.0.0-beta.2
我们使用的是自定义b2c策略
当我使用PublicClientApplication的一个实例调用acquireTokenSilent时,它并没有从缓存中获得访问令牌,但是我可以看到一个访问令牌存储在sessionStorage中,看起来类似于{homeAccountId}-{tenantSubdomain}.b2clogin.com-AccessToken-{aud}-{tid}。以及类似格式的refreshToken、clientInfo和idToken。它确实如预期的那样成功地从端点返回令牌。
在B2C重定向中,uri被设置为SPA,且隐式流被禁用
配置:
const config = {
auth: {
clientId: applicationID,
authority: signInAuthority,
knownAuthorities: [
`${tenantSubdomain}.b2clogin.com`,
],
redirectUri: reactRedirectUri,
validateAuthority: false,
navigateToLoginRequestUrl: false,
postLogoutRedirectUri: reactRedirectUri,
},
system: {
loggerOptions: {
loggerCallback: (level, message, containsPii) => {
if (containsPii) {
return;
}
switch (level) {
case LogLevel.Error:
console.error(message);
return;
case LogLevel.Info:
console.info(message);
return;
case LogLevel.Verbose:
console.debug(message);
return;
case LogLevel.Warning:
console.warn(message);
return;
}
},
piiLoggingEnabled: false,
},
windowHashTimeout: 60000,
iframeHashTimeout: 6000,
loadFrameTimeout: 0,
tokenRenewalOffsetSeconds: 1,
// allowRedirectInIframe: true,
},
cache: {
cacheLocation: "sessionStorage",
storeAuthStateInCookie: true,
},
};请求:
const signInRequest = {
scopes: [
msalInstance.config.auth.clientId,
],
};
const silentRefreshRequest = {
scopes: [
msalInstance.config.auth.clientId,
],
};offline_access、openid和profile会自动添加到请求中,我在这些作用域上尝试了许多不同的变体。
acquireTokenSilent:
const res = await msalInstance.acquireTokenSilent({
...silentRefreshRequest,
account: msalInstance.getActiveAccount(),
});我再一次尝试了几种不同的变体。有没有我遗漏的东西可以解决从缓存中获取它的问题,或者我只是需要解决它?
发布于 2021-05-01 00:15:18
当在使用B2C时请求自己的clientId作为作用域时,这是一个已知问题。B2C服务返回"scope“值"/”,而不是中断缓存的clientId。他们正在努力修复,但现在要解决这个问题,你应该在你的应用注册上创建一个自定义作用域,并使用它。您可以跟踪this issue,以便在修复程序推出时收到通知。
发布于 2021-05-03 09:28:00
对于任何有相同问题的人,Thomas是正确的,请查看此article以创建自定义作用域,然后将该作用域放入请求中:
const signInRequest = {
scopes: ["xxx/api/user.read"],
};
const silentRefreshRequest = {
scopes: ["xxx/api/user.read"],
};它似乎修复了从缓存中检索令牌时的作用域问题
https://stackoverflow.com/questions/67327004
复制相似问题