一.前言
优化上一章节讲解了Sso原理,这一节只讲代码的实现。涉及到sso的单点登录一般需要处理4块业务逻辑:
- 单点登录
就是通过sso服务端进行登录的操作。 - 票据验证
将传递到客户端的票据拿到服务端进行验证。 - 授权验证
当在sso服务登录成功后访问别的项目无需在次登录的操作。 - 单点退出
当一个sso客户端退出后其他的sso客户端也需要统一退出的操作。
二.单点登录
2.1 业务流程图
2.2 业务说明
- 我们sso客户端访问需要登录的url 或者登录的url 直接跳转到sso服务端的登录页面(如果已经登录则直接跳转到访问的url)
- 直接访问登录的url,sso客户端的拦截器会将其直接重定向到 sso服务端的登录页面并携带sso客户端访问地址。
- 访问sso客户端需要登录的url(没有登录的情况下)会重定向到sso服务端单点授权验证逻辑中。如果该用户未登录则重定向到 sso服务端的登录页面并携带sso客户端访问地址。
- 输入用户名和密码在sso服务端进行登录,如果用户名和密码错误则重新跳转到登陆页面并提示错误信息。
- 如果用户名和密码正确,则生成 GrantingTicket 并将GrantingTicket 的id 放入cookie中。然后生成 ServiceTicket 并将ServiceTicket 放入GrantingTicket 的缓