CAS采用Spnego认证方式通过Kerberos与AD域整合

一:前言

这次主要是介绍如何通过配置,使已经登录到域的域用户,在访问CAS_Client的时候,不需要再次去CAS服务端认证的配置文档。是只针对已经掌握如何配置Windows_ADCAS_SSO的相关人员。配置Windows_ADCAS_SSO的方法请参考其它手册,本文不再讲述如何配置Windows_ADCAS_SSO

本人所讲述的配置都是在Windows_ADCAS_SSO已经配置完成的基础上。

       经过测试,无配置经历的开发人员通过此文档都可顺利配置成功。

 

       因时间问题,关于环境的网络拓扑结构就没有画,在这简单描述一下具体的环境:

域控制器一台,CAS服务器一台,客户机一台,如果有条件,可以单独设立一台业务系统主机(CAS_Client),所有机器均加入域控制器中。

 

具体效果如下:

 

1:用户使用客户机登录到域中,首次访问业务系统(Cas_Client),无需认证,直接进入业务系统,身份为登录域的账号。

 

2:用户使用客户机登录到本机,首次访问业务系统(Cas_Client),转向CAS的认证界面(默认的认证方式为表单认证),输入账号口令后进入业务系统。

 

从这个效果中就可以看出来,CAS与AD集成后,用户只需要认证一次。

CAS版本:3.4.2

 

二:配置域信息

1:域控制器版本

 

本文所提到的AD域环境为WINDOWS2003版本的域控制器

2:Windows AD中创建用户

A、启动域用户管理:开始→管理工具→Active Director用户和计算机。

B、创建用户:Users→右键→新建→用户。

C、添入要创建的用户信息,比如是“RainTime”:“姓:RainTime;姓名:RainTime;用户登录名:HTTP/RainTime;用户登录名(Windows 2000以前版本):RainTime”。

D、输入密码,并选择“密码永不过期”,比如是:111111

E、点击确定,完成用户创建。

 

三:配置CAS服务端

1:修改login-webflow.xml配置文件

A、login-webflow.xml在CAS目录下的WEB-INF文件夹下。

B、在此配置文件中加入以下两个标签

 

<action-state id="startAuthenticate">

  <action bean="negociateSpnego" />

  <transition on="success" to="spnego" />

</action-state>

 

<action-state id="spnego">

  <action bean="spnego" />

  <transition on="success" to="sendTicketGrantingTicket" />

  <transition on="error" to="viewLoginForm" />

</action-state>

 

 

 

需要注意的是:如果你使用的是spring-webflow-2.0.xsd,那么应该将<action bean="" />替换为<evaluate expression="" />

 

 C、修改login-webflow.xml的<decision-state id="gatewayRequestCheck">和<decision-state id="renewRequestCheck">两个标签,将两个标签属性中的“viewLoginForm”修改为“startAuthenticate”。

 

2:修改CAScas-servlet.xml配置文件

A、cas-servlet.xml在CAS目录下的WEB-INF文件夹下。

B、在cas-servlet.xml文件加入如下图所示的两个标签:

<bean id="negociateSpnego" class="org.jasig.cas.support.spnego.web.flow.SpnegoNegociateCredentialsAction" />

 

<bean id="spnego" class="org.jasig.cas.support.spnego.web.flow.SpnegoCredentialsAction">

                        <property name="centralAuthenticationService" ref="centralAuthenticationService"/>

</bean>

  

 3:修改CASdeployConfigContextxml配置文件

A、deployerConfigContext.xml在CAS目录下的WEB-INF文件夹下。

B、修改该文件bean标签“authenticationManager”的两个属性“credentialsToPrincipalResolvers”“authenticationHandlers”

首先在“credentialsToPrincipalResolvers”属性的list标签中加入一个bean标签:

<bean class="org.jasig.cas.support.spnego.authentication.principal.SpnegoCredentialsToPrincipalResolver" />

 然后在“authenticationHandlers”属性list标签中也加入一个bean标签:

<bean class="org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler">

                        <property name="authentication">

                          <bean class="jcifs.spnego.Authentication" />

                        </property>

                        <property name="principalWithDomainName" value="false" />

                        <property name="NTLMallowed" value="true"/>

      </bean>

 

c、退出authenticationManager在外层加入一个标签bean:"jcifsConfig "

<bean name="jcifsConfig" class="org.jasig.cas.support.spnego.authentication.handler.support.JCIFSConfig">

  <property name="jcifsServicePrincipal" value="HTTP/your.server.name.here@YOUR.REALM.HERE" />

  <property name="jcifsServicePassword" value="the.service.password.here" />

  <property name="kerberosDebug" value="false" />

  <property name="kerberosRealm" value="YOUR.REALM.HERE" />

  <property name="kerberosKdc" value="THE.KDC.IP.HERE" />

  <property name="loginConf" value="/path/to/WEB-INF/login.conf" />

</bean>

 

 

 jcifsServicePrincipal登录域控制器的完整登录名

 jcifsServicePassword:登录域控制器的密码

  kerberosDebug:是否输出DEBUG信息

 kerberosRealm:域名

 kerberosKdc:Kdc地址(域控制器地址)

 loginconf:login.conf文件的绝对路径

 

  4:创建login.conf配置文件 

jcifs.spnego.initiate {

   com.sun.security.auth.module.Krb5LoginModule required storeKey=true;

};

jcifs.spnego.accept {

   com.sun.security.auth.module.Krb5LoginModule required storeKey=true;

};

 

5:添加所需要的JAR 

A、将cas-server-3.4.2-release\cas-server-3.4.2\modules目录的cas-server-support-spnego-3.4.2.jar复制到cas\WEB-INF\lib

B、还需要有两个外部包的支持,“jcifs-1.1.11.jar、jcifs-ext-0.9.4.jar”,将这两个jar包也拷贝到cas\WEB-INF\lib下

 

四:配置客户机

A、   将CAS服务地址配置成可信任站点:“Internet选项→安全→本地Internet→站点→高级” 输入CAS服务地址,如“http://cas.test.com”,点击确定即可。

 

五:测试

使用客户机登录到域中,账号为"RainTime",密码是“111111”,然后访问业务系统,如果无需认证直接进入业务系统,表明SPNEGO认证已经通过,否则请重新检查整个配置是否无误。

 

 

下一步的工作是配置CAS的X509证书认证和基于CAS认证的FreeRadius认证

 

写这篇文章浪费了一上午时间,不知是这个在线编辑器的问题还是我的浏览器问题,在插入代码后,就不能修改,否则格式就乱了套了,没办法,凑合着看吧。 

 

 

注:罪过罪过,官方提供的资料是在Linux下部署成功的,而CAS的一些配置也是针对linux系统使用的,如果CAS部署在WINDOWS下全完可以不这么麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值