我有一个带有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会话是否仍然有效?
1条答案
按热度按时间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