2023-03-25 17:42:05 +08:00

98 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spring Security OAuth SSO
### 项目源地址
https://gitee.com/hhw3KevinHou/spring-security-oauth2-sso.git
#### 介绍
部署一个OAuth 2.0服务器例如MaxKey。
建立2个协议为 OAuth_v2.1的应用对应spring-demo-client1spring-demo-client2许可确认设置为自动这样不需要用户手动授权。设置访问控制。
运行spring-demo-client1spring-demo-client2
访问http://localhost:8080/hello自动跳转登录页面登录成功。
访问http://localhost:8081/hello不需要登录。
任何一个logout全局退出。
## 单点登录过程
访问http://localhost:8081/hello发现spring-demo-client2本地应用没有登录
```
spring-demo-client2 发起登录请求:
redirect到http://sso.maxkey.top/sign/authz/oauth/v20/authorize?client_id=830517174152986624&redirect_uri=http://localhost:8081/login&response_type=code&state=8GAmwd'
显示makey登录界面
用户登录后
maxkey根据应用设置使用自动approve不需要用户点击授权。
redirect到http://localhost:8081/login?code=72107fc4-5305-4aa5-a8d0-14da30ed0ca1&state=8GAmwd
spring-demo-client2 的spring security自动处理获取access_token
调用http://sso.maxkey.top/sign/authz/oauth/v20/token
参数为:
{
grant_type=[authorization_code],
code=[72107fc4-5305-4aa5-a8d0-14da30ed0ca1],
redirect_uri=[http://localhost:8081/login],
client_id=[830517174152986624],
client_secret=[ElHEMDcwMzIwMjMxNjE5NTAyMTIx1K]
}
得到access_tokendbff79de-6efa-4148-aedb-333325dc30c0
spring-demo-client2的spring security使用得到access_token自动获取用户信息
http://sso.maxkey.top/sign/api/oauth/v20/me
spring-demo-client2得到用户信息后返回前端
http://localhost:8081/hello
```
访问http://localhost:8080/hello发现spring-demo-client1本地应用没有登录
```
spring-demo-client1 发起登录请求:
'http://sso.maxkey.top/sign/authz/oauth/v20/authorize?client_id=830447866781630464&redirect_uri=http://localhost:8080/login&response_type=code&state=ZZXxk5'
makey的拦截器发现授权中心已经登录cookie里有jwt token
自动approve不需要用户点击授权。
redirect到http://localhost:8080/login?code=51f2ae07-7a1c-42ec-a663-be09080ab1d9&state=ZZXxk5
spring-demo-client1 的spring security自动处理获取access_token
调用http://sso.maxkey.top/sign/authz/oauth/v20/token
参数为:
{
grant_type=[authorization_code],
code=[51f2ae07-7a1c-42ec-a663-be09080ab1d9],
redirect_uri=[http://localhost:8080/login],
client_id=[830447866781630464],
client_secret=[QnGYMDcwMzIwMjMxMTQ0MjYwNDcFli]
}
得到access_token95e277ae-06f2-4f43-af78-8046905b8cea
spring-demo-client1的spring security使用得到access_token自动获取用户信息
http://sso.maxkey.top/sign/api/oauth/v20/me
spring-demo-client1得到用户信息后返回前端
http://localhost:8080/hello
```