通过 Java 生成 Oauth Bearer 令牌

Generate Oauth Bearer token via Java

我们可以使用 Java 使用客户端 ID / 密码刷新/重新生成 OAuth 令牌吗?如果可以,有人可以指导我找到正确的 link 吗?如果不是,已注册的应用程序如何自动刷新过期的不记名令牌?

我对这个问题有三个命题:

  • 您可以kill/remove/revoke当前访问令牌并要求另一个。检查 TokenStore 的文档:http://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/token/TokenStore.html。这里有一个示例代码:

    @Autowired
    private TokenStore tokenStore;
    
    @RequestMapping(value = "/oauth/revoke-token", method = RequestMethod.GET)
    public void revoke(HttpServletRequest request) {
        String authHeader = request.getHeader("Authorization");
        if (authHeader != null) {
            String tokenValue = authHeader.replace("Bearer", "").trim();
            OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
            tokenStore.removeAccessToken(accessToken);
        }
    }
    
  • 或者您可以在请求访问令牌时请求刷新令牌。使用此刷新令牌,您可以 demand/refresh 一个新的访问令牌。这是令牌的示例代码:

    clients.inMemory() .withClient("123456") .authorizedGrantTypes("password", "refresh_token") 范围("scopes") .resourceIds("restapi") .secret("654321") .accessTokenValiditySeconds(60) .refreshTokenValiditySeconds(60)

干杯

向 /token 请求 POST 请求正文 "grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA&client_id=xxx&client_secret=xxxxx" 。您可以使用像 apache HttpClient 这样的库来执行 post 请求,如果您 google 可以找到示例