实现CAS与AD在Linux下集成(修订)
来源:互联网 发布:最强围棋软件 编辑:程序博客网 时间:2024/05/18 00:46
前段时间对CAS的单点登录方案与AD域在Windows下的集成做了总结,但是由于该方案需要修改AD域中的加密类型,在企业中的域上使用便完全不通了。因为用作生产环境的域会有多台控制器相互复制,而复制过程需要加密,修改加密类型以后,会导致域控制器间无法复制,造成域的瘫痪。
所以在在不改域控制器的前提下,我只好尝试了用Linux搭建CAS服务器,如果路过朋友有在Windows下配置成功的经验,希望分享。
下面备忘一下我在Linux下的配置,参考文档就是CAS提供的标准文档,几乎没有改动,此处翻译过来供自己备忘,供大家参考。
链接:https://wiki.jasig.org/display/CASUM/SPNEGO
首先准备好最新版的CAS Server 与 Client 我使用的是3.4.11 Server 和 3.2.1 Client。
另外客户机、应用系统服务器,都要加入域,域用户要创建好。
然后所使用的Linux系统是R5,在上面装好JDK和Tomcat,JDK用最新版本吧,可以免去很多问题。
现在就开始配置了,首先完成AD域中所要做的工作:
☆生成一个Keytab文件。
用命令:
这里注意,your.server.name.here最好使用完整名,即name.domain name。
还要注意 在后边加 /kvno 0 这样的参数 将生成的keytab文件变为0号版本(第一次生成的版本为3),这可能是cas的一个bug。
生成好Keytab文件后,将文件拷到CAS服务器中。
接下来要做CAS服务器中的配置:
☆在 /WEB-INF/login-webflow.xml文件中加入以下两段,要放在State “viewLoginForm”之前:
☆将/WEB-INF/login-webflow.xml中的下面两个地方修改(与标准文档不同):
decision-state gatewayRequestCheck中的generateLoginTicket 改为 startAuthenticate
decision-state renewRequestCheck 中的generateLoginTicket 改为 startAuthenticate
☆/WEB-INF/cas-servlet.xml文件中加入以下内容:
☆/WEB-INF/deployerConfigContext.xm文件中做以下修改:
在credentialsToPrincipalResolvers下的list中加入
在authenticationHandlers下的list中加入
并注释掉原来的
☆在bean同级的位置加入以下内容:
注意:your.server.name.here要写全名 name.domain name。
☆/path/to/WEB-INF/下创建login.conf文件,内容如下:
注意:keyTab要写清楚keytab文件所在的路径。
至此AD与CAS服务器的配置就完成了。但是现在仍然不可用,需要在客户机做一些配置(cas的配置这里就不说了,默认为cas配置成功的,应用系统已经接入,要从客户机访问应用系统)。
客户机配置:
☆打开浏览器,找到Internet选项中的安全——本地Internet——站点——高级——,将CAS服务器的完整域名加入到信任站点。如:https://cas.domain name。
☆Internet选项中的高级,勾选中“集成身份验证(windows)”。
所以在在不改域控制器的前提下,我只好尝试了用Linux搭建CAS服务器,如果路过朋友有在Windows下配置成功的经验,希望分享。
下面备忘一下我在Linux下的配置,参考文档就是CAS提供的标准文档,几乎没有改动,此处翻译过来供自己备忘,供大家参考。
链接:https://wiki.jasig.org/display/CASUM/SPNEGO
首先准备好最新版的CAS Server 与 Client 我使用的是3.4.11 Server 和 3.2.1 Client。
另外客户机、应用系统服务器,都要加入域,域用户要创建好。
然后所使用的Linux系统是R5,在上面装好JDK和Tomcat,JDK用最新版本吧,可以免去很多问题。
现在就开始配置了,首先完成AD域中所要做的工作:
☆生成一个Keytab文件。
用命令:
- ktpass.exe /out myspnaccount.keytab /princ HTTP/your.server.name.here@YOUR.REALM.HERE /pass * /mapuser
- myspnaccount@YOUR.REALM.HERE /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT /kvno 0
这里注意,your.server.name.here最好使用完整名,即name.domain name。
还要注意 在后边加 /kvno 0 这样的参数 将生成的keytab文件变为0号版本(第一次生成的版本为3),这可能是cas的一个bug。
生成好Keytab文件后,将文件拷到CAS服务器中。
接下来要做CAS服务器中的配置:
☆在 /WEB-INF/login-webflow.xml文件中加入以下两段,要放在State “viewLoginForm”之前:
- <action-state id="startAuthenticate">
- <evaluate expression="negociateSpnego" />
- <transition on="success" to="spnego" />
- </action-state>
- <action-state id="spnego">
- <evaluate expression="spnego" />
- <transition on="success" to="sendTicketGrantingTicket" />
- <transition on="error" to="viewLoginForm" />
- </action-state>
☆将/WEB-INF/login-webflow.xml中的下面两个地方修改(与标准文档不同):
decision-state gatewayRequestCheck中的generateLoginTicket 改为 startAuthenticate
decision-state renewRequestCheck 中的generateLoginTicket 改为 startAuthenticate
☆/WEB-INF/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>
☆/WEB-INF/deployerConfigContext.xm文件中做以下修改:
在credentialsToPrincipalResolvers下的list中加入
- <bean class="org.jasig.cas.support.spnego.authentication.principal.SpnegoCredentialsToPrincipalResolver" />
在authenticationHandlers下的list中加入
- <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>
并注释掉原来的
- <bean
- class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
☆在bean同级的位置加入以下内容:
- <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="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>
注意:your.server.name.here要写全名 name.domain name。
☆/path/to/WEB-INF/下创建login.conf文件,内容如下:
- jcifs.spnego.initiate {
- com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/home/cas/kerberos/myspnaccount.keytab";
- };
- jcifs.spnego.accept {
- com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/home/cas/kerberos/myspnaccount.keytab";
- };
注意:keyTab要写清楚keytab文件所在的路径。
至此AD与CAS服务器的配置就完成了。但是现在仍然不可用,需要在客户机做一些配置(cas的配置这里就不说了,默认为cas配置成功的,应用系统已经接入,要从客户机访问应用系统)。
客户机配置:
☆打开浏览器,找到Internet选项中的安全——本地Internet——站点——高级——,将CAS服务器的完整域名加入到信任站点。如:https://cas.domain name。
☆Internet选项中的高级,勾选中“集成身份验证(windows)”。
- 实现CAS与AD在Linux下集成(修订)
- 实现CAS与AD在Windows下集成
- cas在windows下集成AD域
- OpenLDAP在LINUX下的安装说明-修订版本
- Tomcat 与 cas 集成
- redmine与AD集成实现账号统一认证
- Liferay 集成 CAS 实现单点登录与应用系统集成
- Remedy与AD的集成
- C与C++在Linux下的集成问题
- C与C++在Linux下的集成问题
- ORACLE 10g FOR LINUX在FEDORA CORE 6下的安装要点(修订)
- linux下IPTABLES配置详解 修订
- linux下IPTABLES配置详解 修订
- Windows CE下AD驱动设计与实现
- Domino系统与AD的集成
- Subversion与Windows AD的权限集成
- Redmine与Windows AD集成设置
- Tomcat下配置与使用CAS实现单点登录
- hdu 1579 Function Run Fun
- Camera raw data directly to image using CxImage
- hdu 1010 Tempter of the Bone
- 需求说明书四要素
- scrapy如何针对不同的spider指定不同的参数
- 实现CAS与AD在Linux下集成(修订)
- rqnoj-3
- zencart后台汉化教程
- WindowManager.LayoutParams(上)
- 问题四十三:f=1-i/2!+1/3!-...+1/9! (for循环)
- 批量更改文件名称并且标号
- linux中命令别名的设定指令alias和unalias
- 在HTML5中如何提高网站前端性能
- 关于淘宝直通车的那些事