GitLab 刷新 oAuth 令牌

Dre*_*ejc 4 oauth gitlab

阅读http://docs.gitlab.com/ce/api/oauth2.html 上的文档,但没有关于如何撤销和刷新 OAuth 令牌的信息。

刷新令牌可能是必要的,因为令牌响应也会获得刷新令牌。

{
  "access_token": "de6780bc506a0446309bd9362820ba8aed28aa506c71eedbe1c5c4f9dd350e54",
  "token_type": "bearer",
  "scope": "api",
  "created_at": 1372559331
  "refresh_token": "8257e65c97202ed1726cf9571600918f3bffb2544b26e00a61df9897668c33a1"
}
Run Code Online (Sandbox Code Playgroud)

Dre*_*ejc 7

好的,经过一番摸索,我找到了:

Map<String, String> parameters = new HashMap<>();
parameters.put("grant_type", "refresh_token");
parameters.put("refresh_token", refreshToken);
parameters.put("scope", "api");

return post("https://gitlab.com/oauth/token", parameters, ...
Run Code Online (Sandbox Code Playgroud)

注意在最近的 GitLab 版本中不需要刷新令牌,因为如果请求失败(响应未到达您)但令牌已更改,您可能会锁定自己。


Von*_*onC 3

您现在可以使用GitLab 14.3(2021 年 9 月):

默认情况下颁发的 OAuth 访问令牌会过期

默认情况下,此版本之后颁发的任何 OAuth 访问令牌都将有 2 小时的到期窗口。

以前,OAuth 访问令牌永不过期,这是不安全的。

您可以通过取消选中OAuth 应用程序 UI 上的“使访问令牌过期”复选框来禁用此选项。

请参阅文档和问题。


正如Javanshir Huseynli在评论中指出的

无法再禁用过期功能。访问令牌必须每 2 小时使用刷新令牌刷新一次。

请参阅访问令牌过期