Oauth 2.0 使用密钥斗篷刷新令牌

Oauth 2.0 使用密钥斗篷刷新令牌,oauth-2.0,openid,openid-connect,keycloak,Oauth 2.0,Openid,Openid Connect,Keycloak,我用在: 我得到: assess_token refresh_token token_type expires_in 当我尝试刷新令牌时,我发送refresh\u-token自身,授予类型refresh\u-token并获取: { “错误”:“未经授权的\u客户端”, “错误\u说明”:“无效的\u凭据:无效的客户端凭据” } 当我指定client\u id时,我得到: { “错误”:“无效的\u客户端”, “错误描述”:“缺少参数客户端断言类型” } 如果我指定client\u-assert

我用在:

我得到:

assess_token
refresh_token
token_type
expires_in
当我尝试刷新令牌时,我发送
refresh\u-token
自身,授予类型
refresh\u-token
并获取:

{
“错误”:“未经授权的\u客户端”,
“错误\u说明”:“无效的\u凭据:无效的客户端凭据”
}

当我指定
client\u id
时,我得到:

{
“错误”:“无效的\u客户端”,
“错误描述”:“缺少参数客户端断言类型”
}

如果我指定
client\u-assertion\u-type
我会得到一个错误,即
client\u-assertion
本身丢失,因此我必须提供检索访问令牌时提供的参数


该刷新过程实际上应该如何工作?

这很可能是KeyClope定义的限制或策略。RFC7523(JWT用于客户端身份验证)不允许在存在JWT身份验证时启用客户端凭据。这是从中突出显示的

JWT授权授权可与客户一起使用,也可不与客户一起使用 认证或识别。是否为客户 身份验证需要与JWT授权结合使用 grant以及受支持的客户端身份验证类型如下: 授权服务器自行决定策略决策。 但是,如果请求中存在客户端凭据,则 授权服务器必须验证它们

因此,即使如此,它也可能要求刷新令牌请求中存在客户端凭据。但同时,这也可能是他们最终的局限


此外,令牌刷新是通过定义的。根据它的定义,当客户端是机密客户端(简单地说是使用id和密码创建的客户端)时,刷新令牌请求必须包含客户端凭据。如果您看到的不是限制,那么guess Key斗篷将遵守RFC6749,并要求您在令牌刷新请求中发送客户端凭据。

是,不幸的是,客户端类型是保密的,并强制我们发送所有凭据。谢谢!
assess_token
refresh_token
token_type
expires_in