我们使用KeyCloak身份代理将身份验证联合到外部IDP。身份提供程序的类型为OpenID连接v1.0。此外,我们在PKCE中使用OIDC授权代码流。
根据以下文档,我们能够成功地从外部IDP检索令牌:https://www.keycloak.org/docs/latest/server_admin/#retrieving-external-idp-tokens
但是,当用户代理使用"refresh_token“授权刷新KeyCloak令牌时,来自外部IDP的令牌不会刷新。KeyCloak提供的有关此主题的文档非常少。
有人知道如何从外部IDP刷新令牌吗?
更新:我已经向KeyCloak社区https://github.com/keycloak/keycloak-community/issues/277提出了一个问题
发布于 2021-10-20 13:17:12
密钥罩保留来自上游IdP的访问令牌和刷新令牌。执行令牌交换时,如果访问令牌已过期但刷新令牌尚未过期,则会刷新令牌,如下所示:https://github.com/keycloak/keycloak/blob/master/services/src/main/java/org/keycloak/broker/oidc/OIDCIdentityProvider.java#L186-L187
重要的是,您需要比外部刷新令牌过期更频繁地调用令牌交换端点。根据您的实现,您可以通过多种方式利用这一点。例如,我将我的访问令牌ttl设置得比外部IdP的刷新令牌ttl短,并且我有一个机密客户端,每当它看到新的访问令牌时,它都会调用令牌交换端点,这不是最好的解决方案,但它比眼中钉要好。
我不知道为什么当您执行Keycloak-minted令牌的令牌刷新时,Keycloak开发人员不直接刷新任何外部令牌。他们是聪明人,所以我相信这是有原因的,但到目前为止我还没能弄清楚。我一直在考虑扩展现有的OIDCIdentityProvider来做到这一点,但在我明白我要做的是什么之前,我宁愿不要打开这个蠕虫罐头。如果任何人有任何见解,我将不胜感激。
https://stackoverflow.com/questions/66130404
复制相似问题