前段时间对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文件。
用命令:
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域的集成就可用了,其他优化可以自行配置。祝顺利。
分享到:
相关推荐
在企业环境中,尤其是在已部署了Active Directory(AD)域服务的情况下,将CAS与AD集成可以实现用户通过一次认证就能访问所有系统,提升用户体验并加强安全性。 AD域是微软Windows Server操作系统中的一个组件,它...
4. 集成 CAS 和 Windows AD:使用 SPN 和 keytab 文件将 CAS 与 Windows AD 集成,实现单点登录免身份认证。 CAS 和 Windows AD 集成 集成 CAS 和 Windows AD 需要使用 SPN(Service Principal Name)和 keytab ...
cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x...
1. 挂载光驱:在 Linux 虚拟机中执行 mount 命令,挂在光驱设备,并进入到 CASTools 工具的 Linux 目录下。 2. 执行安装命令:执行 CASTools 安装命令“./CAS_tools_install.sh”。 mount 命令 mount 命令是 Linux...
经过一周多的努力,终于完成了组长分配的任务,成功实现CAS和windosAD域的集成。初学的小伙伴可以下载下来看一下,因为这个技术早就有了,但是现在没有人更新了,所以导致新手无法配置,这是我刚配置好的,大家拿去...
cas集成window AD 域实现免身份认证单点登录,cas部署为centos系统,window server 2012 R2
本项目基于SpringBoot、CAS5.x、Shiro和Pac4j实现了SSO集成,下面将详细阐述这些技术组件以及它们在SSO中的作用。 1. **SpringBoot** SpringBoot是Spring框架的一个子项目,它简化了Spring应用的初始搭建和运行...
7. 测试与调试:集成完成后,你需要进行详尽的测试,确保在各种情况下SSO都能正常工作,同时注意处理可能出现的重定向循环、票据验证失败等问题。 总的来说,"集成cas实现单点登录认证.zip"提供的资源将指导你完成...
在这个前后端分离的项目中,Vue.js用于构建前端页面,与后端通过Ajax进行通信,实现动态交互和数据展示。 集成CAS(Central Authentication Service)是为了实现单点登录(Single Sign-On, SSO)。CAS是一个开源的...
本文将详细介绍如何在权限管理框架Apache Shiro中集成CAS(Central Authentication Service)实现单点登录功能。 #### 二、CAS与Shiro简介 - **CAS**:CAS是由耶鲁大学发起的一个开源项目,用于跨域的身份认证服务...
《CAS集成手册(Java版)》是一份详细指导文档,主要针对CAS(Central Authentication Service,中央认证服务)在Java环境下的集成与优化。CAS是一种开放源码的单点登录(SSO)系统,旨在简化用户身份验证过程,提高...
"cas-oauth-demo-3.5.0-master"这个压缩包很可能包含了CAS3.5.0集成OAuth2.0的示例代码或配置文件,它可以帮助你理解如何在实际项目中实现这一功能。通常,这样的示例可能包含以下部分: 1. **CAS服务器配置**:...
【Liferay 门户集成CAS实现单点登录与应用系统集成】是将开源门户平台Liferay与中央认证服务(CAS)相结合,以实现用户在多个应用系统间的统一登录体验。Liferay是一个基于Java的企业级门户解决方案,它具备强大的...
将CAS与Spring Boot集成,我们可以实现一个高效、安全的身份验证解决方案,尤其适用于拥有多个子系统的大型企业或组织。 集成CAS和Spring Boot主要涉及以下几个关键知识点: 1. **CAS服务器配置**: CAS服务器是...
然而,在加入AD域的Windows主机环境下实现CAS的SPNEGO认证模式,并构建高可用集群方案,国内鲜有现成资料和技术指导。本文档旨在分享通过作者亲身经历及不懈努力探索出的一套完整解决方案。 #### 二、关键技术点...
在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与CAS服务器配合,实现单点登录功能。 首先,让我们理解一下CAS(Central Authentication Service)的核心概念。CAS是一个开放源码的SSO解决方案...
"springboot+security+cas集成demo"的目的是展示如何在Spring Boot应用中集成Spring Security和CAS,实现SSO功能。以下是一些关键步骤: 1. **配置CAS客户端**:在Spring Boot应用中,我们需要引入CAS客户端库,...
CAS(Central Authentication Service)和Apache ...以上就是CAS与Shiro集成的核心知识点。这个集成方案可以为大型分布式系统提供高效、安全的身份验证和授权管理,同时减少了用户重复登录的繁琐步骤,提高了用户体验。