单点登录的cookie跨域设置

单点登录的cookie跨域设置

单点登录原理

当公司有好多系统存在并运行时候,用户每个系统使用之前都需要登录认证,操作起来就比较重复,用户体验感不好,然后就衍生出来单点登录.如下图所示:
在这里插入图片描述
单点登录: 英文名(Single Sign On), 公司内部所有应用系统共享一个身份认证系统,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户, 从而完成单点登录的功能。

单点登录优点:

1)提高用户的效率。
用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。
2)提高开发人员的效率。
SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。
3)简化管理。

单点登录缺点:

1)不利于重构
因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时。
2) 无人看守桌面
因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露。

单点登录cookie验证跨域问题

一般情况下,在做登录认证的时候,我们一般会把cookie存在浏览器里,然后会携带到应用系统请求,但是SSO还是这样操作的话会出现请求未登录的情况, 查看请求头的时候发现并没有把登录时的cookie设置到第二次的请求头里面。

解决办法: 跨域请求要想带上cookie,必须要在ajax请求里加上xhrFields: {withCredentials: true}, crossDomain: true。

$.ajax({
	type: 'post',
	url: '',
	xhrFields: {
		withCredentials: true
	},
	crossDomain: true,
	data: {},
	dataType: 'json'
})

再次访问发现请求头可以携带cookie了

猜你喜欢

转载自blog.csdn.net/Calla_Lj/article/details/84306016