知识大全 如何在不同.net版本实现单点登录
Posted 版本
篇首语:智慧源于勤奋,伟大出自平凡。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何在不同.net版本实现单点登录相关的知识,希望对你有一定的参考价值。
经过研究 重写实现了一个可以在不同 net版本中实现单点登录的简单方法 现在和大家分享一下 不足之处还望见谅所谓单点登录(Single Sign On就是在多个应用系统中 用户只需要登录一次就可以访问所有相互信任的应用系统 其实对于程序员在技术上要实现就得就是多个不同域名间共享cookie的问题
最近在为ERP添加一个部署在另一台机器上 链接到原有老系统中的子项目 调用原有老项目中的Login实现单点登录 尝试了N次屡试不成 最后确 定问题 是 net 与 中对cookie的加密/解密方法由此差异 于是经过研究 重写实现了一个可以在不同 net版本中实现单点登录的简 单方法
共用登陆页代码实现
复制代码 代码如下: protected void btnLogin_Click(object sender EventArgs e) //认证开票 跳转到原始请求页面 System Web Security FormsAuthentication RedirectFromLoginPage("ejiyuan" false);配置文件
复制代码 代码如下: <! 访问权限控制 > <authorization> <deny users="?"/> </authorization> <! 身份认证方式 > <authentication mode="Forms"> <forms name= ASPNET protection="All" enableCrossAppRedirects="true" loginUrl="Login aspx" timeout=" " path="/" domain=" local "/> </authentication> <! 验证算法 > <machineKey validationKey="F D A D E D E F B D F FF ABDAC " decryptionKey="F D A D E D E F B D F FF ABDAC F D AC" validation="SHA " decryption=" DES" /> <pilation debug="true"/>这里 authentication/forms节点最重要的两个属性是name和protection 所有实现单点登录的项目都要是相同的配置就这样 才可以在不同程序中同样的保护级别下读写Cookie 当 protection属性设置为 "All" 通过Hash值进行加密和验证数据都存放在Cookie中 默认的验证和加密使用的Key都存储在machine config文件 我们可以在应用程序的Web Config文件覆蓋这些值 默认值如下:
<machineKeyvalidationKey="AutoGenerate IsolateApps"decryptionKey=" AutoGenerate IsolateApps"validation="SHA " />
IsolateApps表示为每个应用程序生成不同的Key 我们不能使用这个 为了能在多个应用程序中使用相同的Key来加密解密cookie 我们可以移除IsolateApps 选项或者更好的方法是在所有需要实现SSO的应用程序的Web Config中设置一个具体的Key值:
<machineKey validationKey="F D A D E D E F B D F FF ABDAC " decryptionKey="F D A D E D E F B D F FF ABDAC F D AC" validation="SHA " decryption=" DES" /> <pilation debug="true"/>
如果你使用同样的存储方式 实现SSO只是改动一下Web config而已 必须保证单点中的每个应用程序都有相同的配置 如果单点登录的应用程序是跨不同 net版本的 这里的加密/解密不要使用md
<machineKey decryptionKey=" B CBCA B A D FAA B F DF D " validation="MD " validationKey=" E E B F ACB CCD F DDD A EE ADF B D DB FA F E CCCDB D B D DD "/>
没有登录页的单点登录不需要代码 直接配置就可以了 配置如下
复制代码 代码如下: <authorization> <deny users="?"/> </authorization> <authentication mode="Forms"> <forms name= ASPNET protection="All" enableCrossAppRedirects="true" loginUrl=" </authentication>登录模块从定向代码封装在Modules中供其他系统直接调用 这里附上封装代码与引用方法
复制代码 代码如下: public class SsoLoginRedirectModule : IHttpModule public void Init(HttpApplication i_application) // TODO: Add UploadModule Init implementation i_application EndRequest += new EventHandler(i_application_EndRequest);void i_application_EndRequest(object sender EventArgs e) if ((HttpContext Current Response StatusCode == ) && HttpContext Current Response RedirectLocation Contains(FormsAuthentication LoginUrl)) HttpContext Current Response RedirectLocation = FormsAuthentication LoginUrl + "?ReturnUrl=" + HttpUtility UrlEncode(HttpContext Current Request Url OriginalString);
public void Dispose() //throw new NotImplementedException();
引用
复制代码 代码如下: cha138/Article/program/net/201311/14109相关参考
单点登录在ASP.NET上的简单实现[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
单点登录在ASP.NET上的简单实现[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
单点登录在ASP.NET上的简单实现[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
单点登录在ASP.NET上的简单实现[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
单点登录在ASP.NET上的简单实现[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!系统的基本
理解ASP.NET2.0中的单点登录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要
针对不同.NET版本的条件编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了在NET下能够
.NET单点登陆的实现方法及思路 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文章介绍了NET
我不得不使用好几个系统都是B/S结构的每次登录都需要输入用户名和密码觉得非常麻烦考虑到其他同事也会有这样的需求不妨就写个自动登录的程序吧之前也考虑过使用单点登录几经尝试之后还是放弃了 我习惯使用
在ASP.NET中使用Windows登录[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb