小伙伴们,你们好呀!我是老寇!废话不多说,跟我一起学习单点登录SSO
目录
1.运行效果图(b站-地址)
springsecurity单点登录
2. 老寇云SSO架构
1.基础框架:springboot + springcloud
2.认证授权:shiro + jwt (im-sso)、springsecurity + oauth2(security-auth和security-server)
3.缓存:redis
3.老寇云SSO授权模式
老寇云采用的主要是授权码模式和密码模式
security-auth采用密码模式
- grant_type:表示授权类型,此处的值固定为"password",必选项。
- username:表示用户名,必选项。
- password:表示用户的密码,必选项。
- scope:表示权限范围,可选项。
- client_id:表示客户端的ID,可选
- client_secret:表示客户端的密钥,可选
security-server采用授权码模式
- response_type:表示授权类型,必选项,此处的值固定为"code"
- client_id:表示客户端的ID,必选项
- redirect_uri:表示重定向URI,可选项
- scope:表示申请的权限范围,可选项
- state:表示客户端的当前状态,可以指定任意值,可选项.认证服务器会原封不动地返回这个值。
4.老寇云SSO流程图(个人理解)
5.老寇云SSO流程说明(个人理解)
**第一步:**老寇云加载页发送POST请求并携带client_id、client_secret、grant_type、username、password参数到security-auth获取token
POST https://1.com/auth/laokou-demo/oauth/token
grant_type: password
username: nBG5ht
password: 123
scope: auth
client_id: client_auth
client_secret: secret
**第二步:**security-auth拿到code请求security-server获取access_token
POST http://localhost:9028/laokou-demo/oauth/token
client_id: client_auth
client_secret: secret
redirect_uri: https://1.com/im/loading.html
grant_type: authorization_code
**第三步:**获取token失败,授权码已被使用
**第四步:**响应前端授权码已被使用
**第五步:**发送GET请求并携带参数请求security-server服务
GET http://localhost:9028/laokou-demo/oauth/authorize
response_type: code
client_id: client_auth
redirect_uri: https://1.com/im/loading.html
scope: userInfo
state: 123
**第六步:**如果没有登录,输入账号密码进行登录或登录未过期获取授权码code,并重定向到老寇云加载页
**第七步:**重复第一步的步骤
**第八步:**重复第二步的步骤
**第九步:**授权码可用,获取access_token
第九步1:用拿到的access_token请求security-server的资源服务,获取userKey
GET http://localhost:9028/laokou-demo/userKey
access_token: dsfdsf233
第九步2:security-server响应userKe