MaxKey/integrations/spring-security-oauth2-sso

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