如何在Keycloak中重复获取Google返回的Refresh Token?
Keycloak存储外部IDP Refresh Token及重复获取方法
1. Keycloak是否存储Google的Refresh Token?
是的,Keycloak会将Google这类外部身份提供商返回的Refresh Token持久化存储在用户与该IDP的关联记录中。只要用户完成过一次与Google的身份认证关联,这个Refresh Token就会被保留,除非用户解除关联或Google端主动撤销该令牌。
2. 如何重复获取该Refresh Token?
你之前使用的/broker/google/token接口并非仅能在首次登录时调用——只要用户已经与Google IDP建立关联,同一Realm下任意客户端获取的用户有效Keycloak Access Token,都可以用来调用该接口,获取对应的Google Refresh Token和Access Token。
注意事项:
- 调用接口时需使用当前用户的有效Keycloak Access Token,默认情况下用户自身的AccessToken已具备访问该端点的权限,无需额外配置特殊客户端权限。
- 若Google的Refresh Token已过期或被用户在Google端撤销,调用该接口会返回错误,此时需要用户重新完成与Google的身份认证。
适用重复调用的示例代码:
const config = { headers: { Authorization: `Bearer ${keycloakAccessToken}` } } let response = await axios.get(`${process.env.KEYCLOAK_ISSUER}/broker/google/token`, config)
关于Exchange Token方法的说明
你尝试的Exchange Token方法仅能获取Keycloak自身的Access Token,无法获取外部IDP的令牌,因此不适用你的场景。
内容的提问来源于stack exchange,提问作者Lora Lameh
相关产品推荐
相关产品推荐

