Keycloak 具有刷新令牌的KeyClope客户端凭据授予类型

Keycloak 具有刷新令牌的KeyClope客户端凭据授予类型,keycloak,spring-security-oauth2,openid-connect,spring-cloud-feign,Keycloak,Spring Security Oauth2,Openid Connect,Spring Cloud Feign,我有一个客户机在KeyClope(7.0.0)中,具有给定的配置-突出显示的选项“启用对‘客户机凭据授予’的支持”: 当我获得该客户端的令牌(POST/auth/realms/{my realm}/protocol/openid connect/token)时,我会收到以下json响应: { “访问令牌”:“xxx”, “expires_in”:600, “刷新到期时间”:1800, “刷新令牌”:“xxx”, “令牌类型”:“承载者”, “不在政策之前”:1572415518, “会话状态”

我有一个客户机在KeyClope(7.0.0)中,具有给定的配置-突出显示的选项“启用对‘客户机凭据授予’的支持”:

当我获得该客户端的令牌(POST/auth/realms/{my realm}/protocol/openid connect/token)时,我会收到以下json响应:

{
“访问令牌”:“xxx”,
“expires_in”:600,
“刷新到期时间”:1800,
“刷新令牌”:“xxx”,
“令牌类型”:“承载者”,
“不在政策之前”:1572415518,
“会话状态”:“xxx”,
“范围”:“xxx xxx”
}
我想将其与集成,默认情况下,它会忽略刷新令牌,并在每
访问令牌
在秒内过期时创建一个新会话:

if(accessToken==null | | accessToken.isExpired()){
试一试{
//此处不使用刷新令牌
accessToken=acquireAccessToken();
}
...
}
我的问题是:

  • 为什么我会收到
    客户端\u凭据
    的刷新令牌,这是后端->后端通信的授权类型?OAuth2文档明确指出,
    client\u凭证
    grant类型“不应包括刷新令牌”
  • 是否可以配置keydape,使其不会为具有
    client\u凭据的客户端发送刷新令牌
    grant type
  • 如果答案是2。是“否”-我是否必须使用刷新令牌支持实现我自己的伪请求拦截器
  • 如果客户端范围包括
    offline\u访问
    ,中的
    refresh\u expires\u是
    0
    ,据我所知,refresh令牌是一个脱机令牌。这是一个to Key斗篷邮件列表,其中Key斗篷团队的人员建议使用离线令牌-这是否与
    客户端\u凭据的OIDC规范冲突

  • 我的回答可能有点晚了,但Key斗篷最近增加了对在
    client\u凭证
    grants的情况下禁用刷新令牌的支持。这是在2020年12月发布的版本
    12.0.0
    中实现的

    以下是文档中指向以下内容的部分:


    在此版本之前,不可能禁用刷新令牌,因此您必须编写自己版本的
    OAuth2FeignRequestInterceptor
    ,该版本要么忽略刷新令牌(并尝试获取新的访问令牌),要么使用刷新令牌获取更新的访问令牌。我会选择第一个解决方案,因为它更接近OAUTH2。

    您正在引用OneLogin。您是否将它们用作您的IDP?如果没有,不要依赖他们的文档。客户端凭据的详细信息是特定于实现的。这用于双方都受信任的安全服务器到服务器。当您使用为您管理的库时,为什么要关心刷新令牌?令牌刷新的最终结果与新令牌相同。对于客户端凭据,不需要刷新令牌,因为双方都知道机密(客户端ID、客户端机密)。如果希望提高安全性,请不要使用客户端凭据。“当您使用为您管理刷新令牌的库时,为什么要关心刷新令牌?”-不幸的是,前面提到的
    OAuth2FeignRequestInterceptor
    没有管理刷新令牌。拦截器只是忽略刷新令牌,并使用客户机id和secret获取新的访问令牌,这将每次创建一个新会话。我不知道是否可以使用KeyClope的
    机密
    访问类型客户端仅获取访问令牌,而不使用刷新令牌。如果这是不可能的,我想到的唯一方法就是定制一个支持刷新令牌的拦截器实现。会话是什么意思?OAuth不创建会话。刷新访问令牌将创建新的访问令牌,旧的访问令牌将失效。创建新的访问令牌与在应用程序视图中刷新现有的访问令牌是一样的。OAuth规范规定不应包括刷新令牌。代码将忽略刷新令牌。这会导致什么问题?如果这是一个KeyClope库错误,StackOverflow不是正确的位置。-看看这里,这就是我的意思