首先我们看下流程图:
1.访问应用CRM的流程(未登录)
crm.png
2.访问应用CMS的流程(已登录)
cms.png
注意:
保证授权请求是在同一个域下,这样才能拿到登录用户的身份信息(根据cookie获取服务器后端session),spring-security管理session是通cookie来判断登录用户身份的,如果授权不在同一个域则无法拿到用户身份,就需要重新登录。
关于spring-security的session管理可以看下:https://blog.csdn.net/qq_36500178/article/details/113091776
访问CRM流程:
1.访问资源接口:前端判断是否带token。
2.没有token,跳转到UAA的前端授权页(带上系统标识)
3.UAA前端授权页调用uaa授权接口
5.uaa后端验证未登录,重定向到uaa登录页并带上系统标识。
6.输入账号和密码。
7.调用登录接口。
8.登录成功以后,由前端调用uaa的授权接口并带上系统标识。
9.授权成功后服务端302跳转到crm的授权码页面。
10.前端在授权码页拿到code,调用uaa的token接口。
11.返回token,crm前端拿token访问资源。
注意:
已gateway做资源服务器,需要对接口进行token的解析,并将用户信息传递给业务app,针对特殊的接口要放开token校验(譬如:uaa的登录接口、授权接口、获取token接口等)
demo:
https://github.com/mushang8923/sso-jwt.git gateway版本请切换到gateway-feature的分支
网友评论