通过 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 可以找到示例
我们可以使用 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 可以找到示例