请先参考官方说明及应用:
本次集成参考跨域系统间的集成办法,代码可以参考
目录
约定
流程说明
客户端集成
服务端集成
效果截图
正式开始:
- 约定
1.业务系统程序地址
my.web.com:8090/ehr
2.控制台程序地址
sso.nnn.com:7080/console
3.多系统之间通过共用一个redis实现token会话文本数据的存放
4.以下业务系统集成与控制台程序仅截图关键代码实现,具体可以参考kisso_crossdomain 跨域演示 demo中对应的各个部分
- 流程说明
登录流程:
1.浏览器通过访问http://my.web.com:8090/ehr,业务系统服务器判断非登录情况下重定向到http://sso.nnn.com:7080/console/a/login?ReturnURL=http%3A%2F%2Fmy.web.com%3A8090%2Fehr%2Fproxylogin.sso
2.控制台程序登录成功后(首次验证,控制台程序验证用户),返回浏览器,写入cookie(.nnn.com下的uid)
3.浏览器收到消息后重定向到http://my.web.com:8090/ehr/proxylogin.sso
4.业务系统使用自己的私钥加密临时会话cookie信息,发送给控制台程序进行二次验证(jsonp跨域发送请求)
http://sso.nnn.com:7080/console/a/replylogin
5.控制台程序如之前已登录成功,并且使用业务系统公钥解密成功,则二次验证通过,返回文本消息
6.业务系统jsonp消息返回后,确认控制台已二次验证成功,则重定向到http://my.web.com:8090/ehr/oklogin.sso,业务系统通知浏览器设置cookie uid并转向业务系统页面,用户认证完成。
退出流程:
业务系统或控制台程序,通过清除cookie uid,并清理缓存redis,实现同步清理会话的功能。
- 客户端集成
1.web.xml
2.resource资源文件
3.spring配置文件
4.页面部分
5.后台java controller部分
6.缓存redis部分
- 服务端集成
1.web.xml
与客户端集成1部分相同
2.resource资源文件
与客户端集成2部分类似,控制台的properties配置信息与业务系统不同,需要额外配置各个业务系统的公钥
3.spring配置文件
与客户端集成3部分相同
4.页面部分
无
5.后台java controller部分
控制台程序收到的重定向请求只存在两种:
http://sso.nnn.com:7080/console/a/login?ReturnURL=***(解释:显示登录页面,登录成功后根据ReturnURL重定向至业务系统)
http://sso.nnn.com:7080/console/a/replylogin**(二次认证处理)
6.缓存redis部分
代码路径对应配置到sso.properties中
#缓存实现类配置
sso.cache.class = com.nnn.util.RedisCache
#缓存失效时间(s)
sso.cache.expires =600
- 效果截图