【问题标题】:How to make a call to oauth API from java code to generate access token?如何从 java 代码调用 oauth API 以生成访问令牌?
【发布时间】:2017-11-18 09:16:37
【问题描述】:
我是 oauth 的新手,在我的项目中,我有一个用于生成访问令牌的 api,到目前为止,项目使用 curl 来生成访问令牌,但现在我们决定使用 java 来做同样的事情。
卷曲命令
curl -k https:/monkeyman/oauth/oauth20/token -d client_id=<client_id> -d client_secret=<client_secret> -d grant_type=client_credentials
我创建了一个小型 Spring Boot 项目,现在我正在尝试创建一个模板,用户可以直接点击我的 Spring Boot 端点并获取访问令牌,而不是使用 curl。
【问题讨论】:
标签:
java
spring
curl
oauth
【解决方案1】:
所以经过一些更详尽的研究后,我能够破解它 -
这个函数将为我生成访问令牌,我可以将这个 bean 自动连接到我的实际服务中
public OAuth2RestTemplate monkeymanRestTemplate() {
ClientCredentialsResourceDetails clientCredentialsResourceDetails = new ClientCredentialsResourceDetails();
clientCredentialsResourceDetails.setAccessTokenUri(env.getRequiredProperty("monkeyman.api.accessToken.url"));
clientCredentialsResourceDetails.setClientId(env.getRequiredProperty("monkeyman.api.client.id"));
clientCredentialsResourceDetails.setClientSecret(env.getRequiredProperty("monkeyman.api.client.secret"));
return new OAuth2RestTemplate(clientCredentialsResourceDetails);
}
我可以将上面的 bean 自动装配到我的服务类中,
@Autowired
@Qualifier("monkeymanRestTemplate")
private RestTemplate monkeymanRestTemplate;
并通过服务调用传递它,作为回报,它也会通过调用传递 oauth 访问令牌。
ResponseEntity<MonkeyManSiting> report = monkeymanRestTemplate.report(fullApiUrl, HttpMethod.GET, entity,
MonkeyManSiting.class);