dev*_*123 8 access-token oauth-2.0 openid-connect keycloak refresh-token
我在 keycloak (7.0.0) 中有一个具有给定配置的客户端 - 突出显示选项“启用对‘客户端凭据授予’的支持”:
当我获取该客户端的令牌 (POST /auth/realms/{my-realm}/protocol/openid-connect/token) 时,我收到以下 json 响应:
{
"access_token": "xxx",
"expires_in": 600,
"refresh_expires_in": 1800,
"refresh_token": "xxx",
"token_type": "bearer",
"not-before-policy": 1572415518,
"session_state": "xxx",
"scope": "xxx xxx"
}
Run Code Online (Sandbox Code Playgroud)
我想将它与OAuth2FeignRequestInterceptor集成,默认情况下它会忽略刷新令牌并每秒创建一个新会话 :access_tokenexpires_in
if (accessToken == null || accessToken.isExpired()) {
try {
// no refresh token usage here
accessToken = acquireAccessToken();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
client_credentials,它是后端 -> 后端通信的授予类型?OAuth2 文档链接明确指出对于授权类型“不应包含刷新令牌” client_credentials。client_credentials授予类型的客户端发送刷新令牌?offline_access-refresh_expires_in则0根据我的理解,刷新令牌是离线令牌。这里是keycloak 邮件列表的链接,其中 keycloak 团队的某人建议使用离线令牌 - 这是否与 OIDC 授予client_credentials类型规范相冲突?小智 6
我的回答可能有点太晚了,但 Keycloak 最近添加了在client_credentials授权情况下禁用刷新令牌的支持。这是12.0.0在 2020 年 12 月发布的版本中实现的。
以下是指向该内容的文档部分:https://www.keycloak.org/docs/12.0/release_notes/#other-improvements
在此版本之前,不可能禁用刷新令牌,因此您确实必须编写自己的版本,OAuth2FeignRequestInterceptor该版本要么忽略刷新令牌(并尝试获取新的访问令牌),要么使用刷新令牌来获取更新的访问令牌。我会选择第一个解决方案,因为它更接近 OAUTH2规范。
| 归档时间: |
|
| 查看次数: |
11310 次 |
| 最近记录: |