【发布时间】:2018-10-14 16:51:15
【问题描述】:
目前,我们用于对需要 OAuth2 的服务器进行身份验证的机制是编写一个包含 main() 方法的 Java 程序,该方法运行 HttpClient 以使用此调用生成 OAuth2 访问令牌:
https://api.externalsite.com/v1/oauth/token?clientId=iLHuXeULFBdW4B1dmRY0MhFILRQnlfeK&clientSecret=RG3JanXEq2R1GhRvIQ2d2AKRx0SORvb3&grant_type=client_credentials
这将返回以下 JSON 负载:
{
"access_token": "eyJhbGciOi786I1NiJ9.eyJ1c2VybmFtZSI6bnVsbCwiZGV2aWNlSWQiOm51bGwsImNsaWVudElkIjoiaUxIdVhlVUxGQmRXNEIxZG1SWTBNaFJPTVJRbmxmZUsiLCJhZElkIjpudWxsLCJleHAiOjE1MjU0MjY4LMYsImlhdCI6MTUyNTQyMzE0Nn0.Zz_uhXqOF2ykC24mNBWHnQ_Vmx-jfQs3X4qcmmN0-Sk",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": null,
"scope": null
}
获取访问令牌后,我们可以使用 JSON 对授权的网站/服务运行查询。
问题:
在 Spring Boot 微服务 (2.0.1.RELEASE) 中,如何使用 Spring Security 或仅使用 HttpClient 来使用 clientId、clientSecret 和 grant_type 在每个 REST 调用中自动提供全局访问令牌(这可能是来自 REST 控制器层的 HTTP Post)?
谁能展示如何使用 Spring Security 或其他库仅发送 clientId、clientSecret 和 grant_type 以获取 OAuth2 访问令牌的代码示例?
如果 OAuth2 令牌过期怎么办(使用问题 #2 中的库)?
【问题讨论】:
标签: java spring spring-boot oauth-2.0 spring-security-oauth2