-
客户端模式:源码在client分支:https://github.com/heartsuit/demo-springboot-oauth2/tree/client/in-memory
-
OAuth2. 0客户端信息存储在MySQL数据库,access_token存储在内存、MySQL、Redis,源码路径:https://github.com/heartsuit/demo-springboot-oauth2/tree/master/in-db
-
OAuth2. 0客户端信息存储在MySQL数据库,access_token存储在JWT,源码路径:https://github.com/heartsuit/demo-springboot-oauth2/tree/master/in-db-jwt/springboot-oauth2-authorization-server
四种授权方式
| 模式 | 名称 | 是否支持refresh_token | 是否需要结合浏览器测试 |
| — | — | — | — |
| authorization_code | 授权码模式 | 支持 | 是 |
| implicit | 简化模式 | 不支持 | 是 |
| password | 密码模式 | 支持 | 否 |
| client_credentials | 客户端模式 | 不支持 | 否 |
authorization_code 授权码模式 需结合浏览器测试
GET http://localhost:9000/oauth/authorize?client_id=client&response_type=code
- 获取授权码,会回调至目标地址
http://localhost:9000/oauth/authorize?client_id=client&response_type=code
-
认证之后,点击允许,获取授到权码
-
通过授权码向授权服务获取令牌:access_token
http://client:secret@localhost:9000/oauth/token
将上一步获取的授权码作为x-www-form-urlencoded的一个参数:
grant_type:authorization_code
code:wgs8XF
获取到access_token
{
“access_token”: “d21a37e3-d423-4419-bb41-5712e23aee6b”,
“token_type”: “bearer”,
“expires_in”: 43200,
“scope”: “app”
}
- 后续对资源服务的请求,附带access_token即可
http://localhost:8000/private/hi?access_token=d69bc334-3d5c-4c86-972c-11826f44c4af
源码在master分支&#x