reactjs Next-当Keycloak会话注销时,Auth保留自己的会话

sxpgvts3  于 2023-05-17  发布在  React
关注(0)|答案(1)|浏览(159)

我有一个带有next-auth的nextjs应用程序来管理Keycloak身份验证。下面是我如何配置它

const keycloak = KeycloakProvider({
    clientId: process.env.KEYCLOAK_ID,
    clientSecret: process.env.KEYCLOAK_SECRET,
    issuer: process.env.KEYCLOAK_ISSUER,
});

export const authOptions: NextAuthOptions = {
    secret: process.env.NEXTAUTH_SECRET,
    providers: [
        keycloak
    ],
    callbacks: {
        jwt: async({ token, account }) => {/*Extra logic for sign-out keycloak session*/}
    },
    events: {
        signOut: async({ token }) => {/*Extra logic for sign-out keycloak session*/}
    },
}

我可以成功地登录和注销(与一些调整keycloak)。

**问题:**当我从它的管理面板中删除Keycloak会话时,Next-auth不会检查并保留自己的会话。一旦API服务尝试从Keycloak验证该令牌,验证就会失败,因为会话已被丢弃。但是Next-auth保持自己的会话有效。

如何强制下一个验证来检查Keycloak会话是否仍然有效?

sqxo8psd

sqxo8psd1#

我已经找到了解决方案来控制这与令牌轮换
https://authjs.dev/guides/basics/refresh-token-rotation
还有一个关于Keycloak的解决方案的链接,只是为了检查是否有任何问题
https://gist.github.com/degitgitagitya/db5c4385fc549f317eac64d8e5702f74
我还在验证时使用了id_token,并在刷新令牌时重用它。id_token需要执行Sign-out。我已经使用了这个解决方案,在事件中触发额外的keycloak注销:
https://stackoverflow.com/a/75178127/7147231

相关问题