cas 在.net 下的单点登录实现及 ,Net Mvc的接入
最近在研究单点登录,发现用的最广的就是cas了,查了下资料,发现有人写了详细的说明
地址:http://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870838.html
记录下我按照上面的文章搭建cas遇到的坑
1.我下载的tomcat是8.5的,发现按照上面的配置方法,SSL死活配不通,去网站下了7.0的就可以
2.循环重定向的问题,按上面的方法进行了修改和配置还是会出现循环重定向,直到删除了配置文件authentication节点下的path,就OK了
然后是测试在使用.Net Mvc接入Cas
1.先配置好了webconfig,参数以及httpmodel注册等
2.写好自己的验证控制器
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{ DotNetCasClient.CasAuthentication.RedirectToLoginPage();
return;
}
else
{
HttpContext.Current.Session["UserName"] = CasAuthentication.CurrentPrincipal.Identity.Name;
}
}
3.在自己的控制器上写下该特性,然后访问网站就能跳转到CAS的登录网站,调试的时候发现客户端在连接的时候会多次在服务器和客户端之间跳转,尝试连接-获取票据-连接成功返回,貌似就是这么个过程
[CasFilter]
public ActionResult Index()
{
return View();
}
4.做完单点登录,做单点注销,发现几个问题,
1)调用CAS的注销地址:serverip/cas/logout是可以正常注销的
2)使用post调用SingleSignOut方法是无效的;
3)SingleSignOut方法会产生一个重定向,即跳转到服务器进行注销,但这个重定向有一个回调地址,也就是你注销时调用的控制器,比如 Account/Logout,这样会再次跑到你的注销方法里面去,在过认证过滤器的时候,因为已经注销就会跳转到认证登陆界面,此时的访问的是logout的控制器,因此登陆回调地址还是logout,so,死循环了,登陆-注销-登陆-注销
4).鉴于上述原因,在logou方法中调用SingleSignOut后手动重定向到Home/Index,但是这样又有一个问题,singleSignOut调用的重定向执行时间可能比执行重定向到主页慢,这样能正常跳转,但是会明显的看到浏览器地址栏有两次跳转,暂时没想到其他的好办法去解决这个问题;
5.在做登陆判断的时候一开始用的是CasAuthentication.CurrentPrincipal是否有值来判断,但发现无论是登陆和注销都会要多次刷新界面才有效果的情况,所以改用asp.net提供的验证字段来判断
6.昨天又发现个问题,MVC客户端取不到cas登陆用户的详细信息,调试后发现是响应信息XML序列化的时候找不到对应的字段导致直接被过滤掉了,而且获取信息的地方也没有传值过去,修改源代码添加对应的字段,手动传参
7.今天又发现了个悲剧的问题,编辑器中的富文本内容传不过去,其实在后台是已经使用了MVC的ValidateInput(false),但子啊经过cas的httpmodul时,还是抛错了,修改配置文件,禁用掉整个web的验证有效果,但这样做好像太不安全了。
8.鉴于安全原因将html内容使用js的encodeURIComponent编码后再传到后台,再后台再解码就行了。
cas 在.net 下的单点登录实现及 ,Net Mvc的接入的更多相关文章
- 使用 CAS 在 Tomcat 中实现单点登录 http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/
developerWorks 中国 技术主题 Open source 文档库 使用 CAS 在 Tomcat 中实现单点登录 单点登录(Single Sign On , 简称 SSO )是目前比较流行 ...
- CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案
CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...
- CAS 在 Tomcat 中实现单点登录
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统 中,用户只需要登录一次就可以访问所有相互信任的应用系统.CA ...
- 【IBM】使用 CAS 在 Tomcat 中实现单点登录
来源: IBM Developer http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/ 张 涛 (zzhangt@cn.ibm.com ...
- 使用 CAS 在 Tomcat 中实现单点登录
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.CAS ...
- 抛弃Https让Cas以Http协议提供单点登录服务
本文环境: 1.apache-tomcat-7.0.50-windows-x86 2.cas-server-3.4.11 3.cas-client-3.2.1 将cas-server-webapp-3 ...
- cas sso单点登录系列8_抛弃Https让Cas以Http协议提供单点登录服务
转:http://blog.csdn.net/ycyk_168/article/details/18668951 本文环境: 1.apache-tomcat-7.0.50-windows-x86 2. ...
- 【Java EE 学习 68】【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- 【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
随机推荐
- html里面的相对路径和绝对路径
HTML有两种路径的写法:相对路径和绝对路径. 相对路径是在同一个目录的文件引用,如果源文件和引用文件在同一个目录里,直接写引用文件名即可. 如: a.html: c:\test\menu\a ...
- [课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化)
[课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- [课程设计]Scrum 2.6 多鱼点餐系统开发进度(下单一览页面-菜式添加功能实现)
Scrum 2.6 多鱼点餐系统开发进度 (下单一览页面-菜式添加功能实现) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- PHP计算时间差,并返回什么时间之前发表的内容
<?php header("Content-type: text/html; charset=utf-8"); function time2Units ($time){ $y ...
- 分布式算法系列——一致性Hash算法
摘自:http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html
- SVN错误及处理
SVN无法读取current修复方法 Can't read file : End of file found 文件:repository/db/txn_current.repository/db/cu ...
- 原来MySQl就是这样工作的!
一.MySQL简单介绍 MySQL是当今最流行的开源数据库管理系统,超过10亿的下载量足可以证明这点.MySQL以其速度.高可靠性.简单易用,广泛应用,一些大型企业也在逐渐应用,如:Faceb ...
- centos7 docker tomcat7
docker run --name=tomcat7_tmp -ti centos7/jdk7 /bin/bash cd /home wget http://apache.fayea.com/tomca ...
- docker部署tomcat
一.环境简介 宿主机版本:ubuntu-14.04.3-server-amd64.iso JDK版本:jdk-7u76-linux-x64.tar.gz TOMCAT版本:apache-tomcat- ...
- (六)makefile编程
最简单的makefile: all: gcc server.c -o ser gcc client.c -o cli clear: rm ser cli *.o -rf #rm -rf表示删除文件 ...