CAS client (.net/java) 配置备忘

这几天开始配置CAS Client,包括.net的和java client。走了一些弯路,记录下来,以便各位朋友节省点时间。

 

1。.net client,官方网站上提供的还是个半成品,下载整合到项目中之后,总是循环请求,不能够正常工作(看后面补充)。只能到网上再找,http://www.middleware.vt.edu/doku.php?id=middleware:cas,这个站点提供的版本是可用的,简单配置后,另外再将需要用到https的部分,继承System.Net.ICertificatePolicy类,对CheckValidationResult方法直接返回true,以解决自签名证书的问题。(官方网站上提供的办法不甚方便,需要导出导入证书,且不能使用ip地址。作为测试来说,这样配置比较麻烦,不如直接更改代码。)

     此处还有另外一个问题,整合到项目中后,总是提示PublicKeyToken是null,这个问题查了很多网站,都没法解决,但发布到IIS服务器上就能正常工作。这个问题由于牵涉到底层的东西,微软又不开放代码,没法深入下去,只能暂时这么着,改动后就放到服务器上查看效果。

     获得用户信息的方式是ICasPrincipal p = ((ICasPrincipal)HttpContext.Current.Session[SessionUtils.CONST_CAS_PRINCIPAL]); 判断权限可用,p.IsInRole(role)

 

     这里要补充一下 ,在将上述.net client整合到原有项目时遇到很大的问题,总是提示linq不能被序列化,这好象是个无法绕过的问题。所以退回到官方网站推荐的项目,这个项目特别注意到了这个问题,避开了使用linq而是用IDictionary。这样整合到项目中没有问题。上面遇到的循环请求,主要还是配置的问题。.net client不像java client,可以从请求的第一个页面开始控制,.net client必须要让第一个页面可以匿名访问,然后配置其他目录和文件扩展名是否需要有权限控制。 (2101-08-18)

 

2。java client,我需要用来和我的spring web项目整合,看了官网说明后,按照使用spring的方法配置,但是始终不能成功,debug之后,发现request的传递,从第一个filter传递不到后续的filter(按使用saml的方式,需要配置三个filter)。改用在web.xml中配置的方法后,顺利调通。

     其获得用户信息的方式是 ActionContext ctx = ActionContext.getContext();
        Assertion assertion = (Assertion) ctx.getSession().get("_const_cas_assertion_");

 

     或者是在request中获得,这个在spring中运用比较生硬,还是上面的用法比较自然。AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();


Map attributes = principal.getAttributes();

 

     同样,对于自签名的证书进行一些处理,需要替换其中进行https请求的部分,用httpclient来做。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值