一、CAS客户端支持.NET部署,而且支持NuGet直接部署到项目,具体特性如下:
1.支持CAS1.0、CAS2.0和SAML1.1协议
2.支持CAS单点登录
3.支持Microsoft ASP.Net 窗体身份认证框架的应用平台整合
二、ASP.Net的认证方式及CAS客户端的ASP.NET认证原理
ASP.Net身份验证有三种方式,一是基于windows验证,二是基于Form验证,三是Passport验证。
第一种方式下,windows操作系统和IIS服务器直接处理身份验证,只要客户机加入了服务器域,网站开发、部署和运维均无需考虑具体验证过程;
第三种方式下,是passport方式验证,passport本身就是一种齐备的统一认证方式,可以完全替代CAS,下面只考虑第二种。
第二种身份验证方式是我们这次讨论的范围,这种方式的原理是CAS客户端通过ASP.Net自身的Form认证实现的,
具体是用httpModel拦截检查客户端票据(ticket),达到对功能页面的控制。
三、ASP.Net项目配置步骤
1.引用dll:DotNetCasClient.dll
2.属性配置
A.casServerLoginUrl:身份认证时redirect的认证地址,浏览器所在机器要配置cas服务器的域名。
B.serverName:认证通过后redirect到的需要访问的应用的地址。
C.casServerUrlPrefix:CAS服务的访问地址。用来定义cas服务的 /serviceValidate接口,使用的URL就是${casServerUrlPrefix}serviceValidate。
注意此处的配置需和证书中的服务器域名保持一致,并且在Web应用的服务器上配置cas服务的访问域名。
D.ticketValidatorName:指定CAS Ticket使用的协议。
3.configuration的其他可选属性配置
A.Gateway:
B.renew:
C.singleSignOut:
D.ticketTimeTolerance:
E.notAuthorizedUrl:
F.serviceTicketManager:
G.proxyTicketManager:
H.gatewayStatusCookieName:
I.cookiesRequiredUrl:
J.gatewayParameterName:
4.配置示例
casServerUrlPrefix="https://cas.XXXXXX.com/cas" serverName="cas.XXXXXX.com"
notAuthorizedUrl="~/NotAuthorized.aspx"
cookiesRequiredUrl="~/CookiesRequred.aspx"
redirectAfterValidation="true"
gateway="false"
renew="false"
singleSignOut="true"
ticketTimeTolerance="5000"
ticketValidatorName="CAS20"
proxyTicketManager="CacheProxyTicketManager"
serviceTicketManager="CacheProxyTicketManager"
gatewayStatusCookieName="casGatewayStatus" />
相应地ASP.NET的配置如下:
loginUrl="https://server.XXXXX.com/cas/login"
timeOut="30"
defaultUrl="~/Default.aspx"
cookieless="UseCookies"
slidingExpiration="true"
path="/ApplicationName/" />
authentication>
......
并且配置HTTPModel
三、问题
httpModel验证ticket失败时会锲而不舍地无限验证下去:请求系统页面--》httpModel重定向--》
cas登录页面--》登录后的系统页面--》httpModel验证ticket失败--》重定向登录cas
一般地,这种问题是由系统session失效导致的,因此修改web.config文件即可
代码实现时,要注意在登出时,要确保Form和Cas都登出,切记清除session,让cookie过期,
清除CAS服务端的验证ticket。