gpt4 book ai didi

reactjs - 带有 msal-react 包装器 acquireTokenSilent 的 msal-browser 无法从缓存获取访问 token

转载 作者:行者123 更新时间:2023-12-02 06:14:29 28 4
gpt4 key购买 nike

@azure/msal-browser 2.14.1@azure/msal-react 1.0.0-beta.2

我们正在使用自定义 B2C 政策

当我使用 PublicClientApplication 的实例调用 acquireTokenSilent 时,它没有从缓存中获取访问 token ,但我可以看到访问 token 存储在 sessionStorage 中,看起来类似于 {homeAccountId}-{tenantSubdomain}.b2clogin .com-AccessToken-{aud}-{tid}。以及具有类似格式的refreshToken、clientInfo 和idToken。它确实按预期从端点成功返回了 token 。

在 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 和配置文件会自动添加到请求中,并且我在这些范围上尝试了许多不同的变体。

获取TokenSilent:

const res = await msalInstance.acquireTokenSilent({
...silentRefreshRequest,
account: msalInstance.getActiveAccount(),
});

我再次尝试了一些不同的变体。我是否缺少一些可以解决从缓存获取它的问题,或者我只需要解决它?

最佳答案

在使用 B2C 时请求您自己的 clientId 作为范围时,这是一个已知问题。 B2C 服务返回“范围”值“/”,而不是您的 clientId,这会破坏缓存。他们正在修复该问题,但现在要解决这个问题,您应该在应用程序注册上创建一个自定义范围并使用它。您可以追踪this issue当修复程序推出时收到通知。

关于reactjs - 带有 msal-react 包装器 acquireTokenSilent 的 msal-browser 无法从缓存获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67327004/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com