谁都能看懂的单点登录实现方式
1个回答
2016-07-23
展开全部
转载 SSO英文全称Single Sign On(单点登录)。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。(本段内容来自百度百科)
二级域名的单点登录
什么是二级域名呢?例如:
site1.domain.com
site2.domain.com
对于二级域名的单点登录,我们可以非常方便的通过共享cookie来实现,简单的说,就是在设置Form票据的时候,将cookie的domain设置为顶级域名即可,例如:
HttpCookie cookie = new HttpCookie(FormsAuthCookieName, encryptedTicket);
cookie.Expires = rememberMe ? expirationDate : DateTime.MinValue;
cookie.HttpOnly = true;
cookie.Path = "/";
cookie.Domain = "domain.com";
context.Response.Cookies.Set(cookie);
这种方式不涉及跨域,当cookie的domain属性设置为顶级域名之后,所有的二级域名都可以访问到身份验证的cookie,在服务器端只要验证了这个cookie就可以实现身份的验证。
但是,当跨域的时候,例如:
site1.com
site2.com
这个时候就不能共享cookie了,所以上面的解决方案就会失效。那么,要实现跨域的单点登录该如何做呢?请继续往下看。
跨域的单点登录
关于跨域的SSO的设计思路,我画了一个简单的流程图:
二级域名的单点登录
什么是二级域名呢?例如:
site1.domain.com
site2.domain.com
对于二级域名的单点登录,我们可以非常方便的通过共享cookie来实现,简单的说,就是在设置Form票据的时候,将cookie的domain设置为顶级域名即可,例如:
HttpCookie cookie = new HttpCookie(FormsAuthCookieName, encryptedTicket);
cookie.Expires = rememberMe ? expirationDate : DateTime.MinValue;
cookie.HttpOnly = true;
cookie.Path = "/";
cookie.Domain = "domain.com";
context.Response.Cookies.Set(cookie);
这种方式不涉及跨域,当cookie的domain属性设置为顶级域名之后,所有的二级域名都可以访问到身份验证的cookie,在服务器端只要验证了这个cookie就可以实现身份的验证。
但是,当跨域的时候,例如:
site1.com
site2.com
这个时候就不能共享cookie了,所以上面的解决方案就会失效。那么,要实现跨域的单点登录该如何做呢?请继续往下看。
跨域的单点登录
关于跨域的SSO的设计思路,我画了一个简单的流程图:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
合力亿捷
2023-07-25 广告
2023-07-25 广告
要快速搭建在线客服系统,可以考虑以下步骤:1. 确定需求:首先需要确定自己的需求和目标,例如需要什么类型的客服、需要支持多少用户、需要什么样的沟通工具等等。2. 选择合适的平台:选择一个合适的在线客服系统平台,可以选择公有云或私有云部署方式...
点击进入详情页
本回答由合力亿捷提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询