通过钥匙斗篷中的refresh_token刷新access_token

2022-08-31 22:19:07

如果用户过期并且用户想要保持登录,我需要让用户在系统中保持登录。如何使用钥匙斗篷进行最新更新?access_tokenaccess_tokenrefresh_token

我正在使用vertx-auth来实现vert.x上的Keycloak。是否可以使用 vertx-authKeycloak 的 REST API 本身进行刷新?或者这将是另一个实现?access_token


答案 1

keycloak 具有 REST API,用于创建 using .这是一个access_tokenrefresh_tokenPOST endpoint with application/x-www-form-urlencoded

以下是它的外观:

Method: POST
URL: https://keycloak.example.com/auth/realms/myrealm/protocol/openid-connect/token
Body type: x-www-form-urlencoded
Form fields:    
client_id : <my-client-name>
grant_type : refresh_token
refresh_token: <my-refresh-token>

这将为你提供使用刷新令牌的新访问令牌。

注意:如果您的刷新令牌已过期,它将引发 400 异常,因为您可以再次进行用户登录。

查看Postman中的一个示例,您可以使用它开发和相应的API。

Sample in Postman


答案 2

@maslick是正确的,你也必须提供客户端密钥,在这种情况下不需要授权标头:

http://localhost:8080/auth/realms/{realm}/protocol/openid-connect/token

enter image description here

如果刷新令牌过期,它将返回:

enter image description here

如果不添加机密,即使刷新令牌正确,也会获得未经授权的 401

enter image description here


推荐