不同.net版本实现单点登录
所谓单点登录(Single Sign On就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。其实对于程序员在技术上要实现就得就是多个不同域名间共享cookie的问题。
最近在为ERP添加一个部署在另一台机器上,链接到原有老系统中的子项目,调用原有老项目中的Login实现单点登录,尝试了N次屡试不成,最后确定问题,是,.net2.0与4.0中对cookie的加密/解密方法由此差异,于是经过研究,重写实现了一个可以在不同.net版本中实现单点登录的简单方法。
1,共用登陆页代码实现:
{
//认证开票,跳转到原始请求页面
System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}
2,配置文件:
<authorization>
<deny users="?"/>
</authorization>
<!--身份认证方式-->
<authentication mode="Forms">
<forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="Login.aspx" timeout="2880" path="/" domain=".local.com"/>
</authentication>
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/>
这里:authentication/forms节点最重要的两个属性是name和protection. 所有实现单点登录的项目都要是相同的配置就这样,才可以在不同程序中同样的保护级别下读写Cookie
当 protection属性设置为 "All",通过Hash值进行加密和验证数据都存放在Cookie中.默认的验证和加密使用的Key都存储在machine.config文件,我们可以在应用程序的Web.Config文件覆盖这些值.默认值如下:
<machineKeyvalidationKey="AutoGenerate,IsolateApps"decryptionKey=" AutoGenerate,IsolateApps"validation="SHA1" />
IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps 选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" /> <compilation debug="true"/>
如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已,必须保证单点中的每个应用程序都有相同的配置,如果单点登录的应用程序是跨不同.net版本的,这里的加密/解密不要使用md5
<machineKey decryptionKey="8B6697227CBCA902B1A0925D00FAA00B353F2DF4359D2099" validation="MD5" validationKey="282487E295028E59B8F411ACB689CCD6F39DDD2146055A3EE480424315994760ADF21B580D8587DB675FA02F7916813044E25309CCCDB647174D5B3D0DD9141"/>
3,没有登录页的单点登录不需要代码 直接配置就可以了,配置如下
<deny users="?"/>
</authorization>
<authentication mode="Forms">
<forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="http://Sso2.local.com/Login.aspx" timeout="2880" path="/" domain=".local.com"/>
</authentication>
4,登录模块从定向代码封装在httpModules中供其他系统直接调用,这里附上封装代码与引用方法:
{
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 == 302) && 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();
}
}
引用:
<add name="SsoModule" type="SsoModule.SsoLoginRedirectModule, SsoModule"/>
</httpModules>
转载于:https://www.cnblogs.com/panlijuan/archive/2011/10/09/2203795.html
不同.net版本实现单点登录相关推荐
- C#.NET 大型通用信息化系统集成快速开发平台 4.6 版本 - SSO单点登录接口
当开发的系统多了.用户多了.合作伙伴多了.对接厂商多了.开发人员多了.部署的服务器也多了,各种安全问题就暴露出来了. 如何安全的把这些系统集成在一起?实现集群的单点登录.严格统一的用户安全体系管理? ...
- CAS 5.2.x 实现SSO单点登录教程记录
CAS SSO 单点登录记录 作者:刘仁奎 个人网址 程序喵:http://www.ibloger.net / http://www.chengxumiao.net QQ:1056856191 Git ...
- 【GitLab、Jira、Confluence 单点登录实现】之 CAS 系统部署
CAS 系统部署 一.CAS 部署可以采用的方式 CAS作为一款成熟的开源SSO系统,应该部署起来非常容易.但实际部署过程中,因为众所周知的网络原因,没少花费时间,最终探索出来一条顺利的渠道. 尝试1 ...
- 临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障
临近年关,咨询师提出360.搜狗急速浏览器无法单点登录到公司核心产品WD: 重定向过多. 现象 经过测试, 出现单点登陆故障的是搜狗.360等双核浏览器(默认使用Chrome内核), 较新式的Edge ...
- Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本)
文章目录 Spring Cloud入门系列汇总 摘要 单点登录简介 创建oauth2-client模块 修改授权服务器配置 网页单点登录演示 调用接口单点登录演示 oauth2-client添加权限校 ...
- CAS之5.2x版本之Confluence单点登录-yellowcong
这一节,主要将如何配置confluence的单点登录,不讲如何安装Confluence,配置cas到Confluence ,有一下几个步骤: 1.配置web.xml文件,设置过滤器,匹配.2.配置se ...
- 在ASP.NET 中实现单点登录
出自:[孟宪会之精彩世界] 发布日期:2005年1月27日 8点48分0秒 [有删改] 由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录.在ASP.NE ...
- SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源: juejin.im/post/5d087d60518825 ...
- 搭建Jasig CAS中央认证服务实现单点登录——搭建Tomcat并实现SSL安全连接
预期的工作任务: 实现CAS(CAS采用Jasig CAS)单点登录搭建,开发api以实现java.php..net等单点登录接口:实现数据库.LDAP身份认证对接. (一)平台(Linux和Wind ...
最新文章
- Java枚举意义在哪_java – 多个if-else或枚举 – 哪一个更好,为什么?
- 清华姚班“斩获”AAAI 2020最佳学生论文:首届弟子贝小辉携手本科在读李子豪,攻坚算法博弈研究...
- JS-用js的for循环实现九九乘法表以及其他算数题等
- linux内核编译 menuconfig详解,Linux内核编译menuconfig介绍
- 重磅!全网最全13010本SCI2020最新影响因子下载!CA+四大神刊!预警期刊最新影响因子一览!
- qq动态页面变方格_微信更新“分组显示、群管理”等功能,网友:都是QQ玩剩的姿势...
- knx智能照明控制系统电路图_智能照明控制系统应用效果
- 伺服驱动器cn1引脚定义_伺服驱动器CN1引脚定义,和面板操作设置,跪求高手指点。说明书弄丢了.脉冲,使能,方向,接第几引脚...
- 【xxl-job源码篇01】xxl-job源码解读 神奇的时间轮 触发流程解读
- 手机浏览器打开不本地html,手机浏览器打不开网页怎么办
- REST-assured简介
- 银行卡卡号归属地汇总
- Flex Builder中网络监视器导致“访问URL时遇到安全性错误”
- RFID 卡片防复制
- 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡
- 数据分析软件解读王者荣耀一年的“王者”成绩单
- 【CrackMe 实战】逆向破解实战之 001 Acid burn.exe
- springboot 整合lombok
- 运营商宽带网速为什么用bit而不用byte
- java登陆界面背景_Java登录界面的实现(注册、登录、背景图片)
热门文章
- ICCV 2021 |VisDrone2021 无人机视觉挑战赛启动
- 不得不服!腾讯优图联合腾讯会议正式上线神奇的眼神接触功能
- 腾讯开源视频动作检测算法DBG,打破两项世界纪录!
- 【python教程入门学习】python值得学吗,怎么自学?
- 国内几大最让游戏建模师羡慕的企业,你想进去吗?
- TensorFlow入门:TensorFlow工作原理
- 几个实例让你轻松理解正则表达式
- 自动驾驶车辆转向控制(通过支持转角控制的EPS实现角速度控制)
- Java日志框架-logback的介绍及配置使用方法(纯Java工程)
- android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?