一:前言
这次主要是介绍如何通过配置,使已经登录到域的域用户,在访问CAS_Client的时候,不需要再次去CAS服务端认证的配置文档。是只针对已经掌握如何配置Windows_AD和CAS_SSO的相关人员。配置Windows_AD和CAS_SSO的方法请参考其它手册,本文不再讲述如何配置Windows_AD和CAS_SSO。
本人所讲述的配置都是在Windows_AD和CAS_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:修改CAS的cas-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:修改CAS的deployConfigContextxml配置文件
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下全完可以不这么麻烦
分享到:
相关推荐
通过本文档介绍的方案,可以在AD域环境下的Windows主机上成功实现CAS SPNEGO认证方式的高可用集群部署。该方案不仅解决了传统CAS集群中的常见问题,还针对SPNEGO认证模式下特有的技术难题提供了详尽的解决思路与实践...
cas集成window AD 域实现免身份认证单点登录,cas部署为centos系统,window server 2012 R2
已启用KDC和SPNEGO的Nginx 先决条件 已在以下环境中进行了测试 kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Ubuntu 20.04 Intel kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Macos ...
6. **邮件服务器与域的关系**:邮件服务器应被添加到AD域中,以防止因同一IP地址发送大量邮件而被视为攻击,导致邮箱被锁定。同时,可能需要在IP Ranges中排除禁止的IP,确保邮件正常收发。 7. **NTLM登录**:NT ...
cas3.4用到的jar
这意味着该工具允许用户通过其在AD域中的凭证进行无痛的单点登录(SSO)认证。 **描述解析:** "适用于Apache Tomcat的功能齐全的一流SPNEGO / Kerberos(和当前Windows身份)身份验证器和Active Directory(和...
【标题】"cas-server-support-spnego-4.0.0-RC3.zip" 提供的是CAS(Central Authentication Service)服务器的一个扩展模块,专门支持SPNEGO(Simple and Protected GSS-API Negotiation Mechanism)协议的4.0.0-RC3...
CAS支持多种认证机制,包括基于数据库、LDAP、AD域、SPNEGO、X.509证书等。开发者可以根据组织的需求选择合适的认证策略,并在CAS配置中进行设置。 6. 安全与扩展性: CAS提供了一些安全特性,如SSL/TLS加密通信...
2. 配置Kerberos相关参数,允许Livy服务通过Kerberos与Yarn交互,以及客户端通过Kerberos访问Livy: - Livy服务启动的keytab和principal:`livy.server.launch.kerberos.keytab` 和 `livy.server.launch.kerberos....
4. **认证模块**:CAS支持多种认证模块,如JDBC、LDAP、SPNEGO(Kerberos)、X.509证书等。在3.4.11版本中,用户可以根据需求选择合适的认证源,并在配置文件中指定相关参数。 5. **服务管理**:CAS Server维护一个...
CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要用于实现单点登录(Single Sign-On,SSO)。在本主题中,我们将深入探讨如何在CAS中进行自定义加密和登录验证。 首先...
这个版本的CAS客户端支持Spring框架,可以方便地与Spring Security整合。 - 客户端集成主要包括配置CasFilter和CasServerLoginUrlProcessor,以便在用户访问受保护资源时重定向到CAS服务器进行认证。 3. **SSO流程...
CAS支持多种认证方式,如基于用户名/密码的认证、LDAP目录服务认证、SPNEGO(Kerberos)等。开发者可以根据需求选择或扩展认证模块。 6. **CAS扩展性**: 除了基本的SSO功能,CAS还提供了许多可扩展的功能,例如...
JSP文件(list.jsp和page.jsp)可能展示了如何在Web应用中整合Kerberos 5的身份验证,利用Kerberos的SPNEGO(Simple and Protected GSS-API Negotiation Mechanism)机制,实现在浏览器和Web服务器之间的无感知认证...
在Java应用端,可能需要配置LDAP连接以查询AD用户信息,或者使用Java的SPNEGO库来处理Kerberos票据。 7. **安全性考虑**:SSO虽带来便利,但也会增加攻击面。因此,实现时必须确保通信安全,例如使用HTTPS,以及...
本文将详细介绍如何在 Tomcat 中配置 SPNEGO 基于 SSO 的方式与 Active Directory (AD) 服务器进行集成,从而实现自动化的用户认证过程。 #### 二、编译 为了实现 SPNEGO 基于 SSO 的功能,需要编写并编译一系列...
mod_spnego 允许使用 Kerberos 对在 Windows 上的 Apache HTTP 服务器 (httpd) 上运行的网站的用户进行身份验证。 然后,经过身份验证的用户在服务器变量 AUTH_USER 中可用。 sourceforge 上仅托管下载,来源位于 ...