栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

ASP.NET实现单点登陆(SSO)适用于多种情况

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ASP.NET实现单点登陆(SSO)适用于多种情况

第一种:同主域但不同子域之间实现单点登陆

Form验证其实是基于身份cookie的验证。客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web.config里Authentication节form设定的name信息,如

复制代码 代码如下:




这里,.ASPNETAUTH就是这个cookie的名字。通过在Request.cookies集合里包含这个cookie,实现用户身份信息的传递。所以,共享身份验证信息的思路很简单:只要这个身份验证cookie能在自域名中共享,Form验证信息自然可以共享!

代码实现:

string userData = JsonHelper.scriptSerialize(user);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.userid.ToString(), DateTime.Now, DateTime.Now.AddHours(4), false, userData);
Httpcookie cookie = new Httpcookie(FormsAuthentication.FormscookieName, FormsAuthentication.Encrypt(ticket));//加密身份信息,保存至cookie
cookie.Domain = ".zuowenjun.cn";
Response.cookies.Add(cookie); 

第二种:虚拟目录的主应用和子应用之间实现SSO

复制代码 代码如下:




比较重要的两个属性是 name 和protection. 当 protection属性设置为 "All",通过Hash值进行加密和验证数据都存放在cookie中.默认的验证和加密使用的Key都存储在machine.config文件,我们可以在应用程序的Web.Config文件覆盖这些值.默认值如下:
复制代码 代码如下:


IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps 选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:
复制代码 代码如下:


第三种:不同域名下的应用程序实现SSO(也适上以上情况)

主要是采用页面URL传参并重定向来实现,这类实现的方法有很多,但可能需要注意的是安全性问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/57002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号