`
雨辰RainTime
  • 浏览: 113460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • cas
阅读更多

一:前言

这次主要是介绍如何通过配置,使已经登录到域的域用户,在访问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的认证界面(默认的认证方式为表单认证),输入账号口令后进入业务系统。

 

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

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配置文件

Alogin-webflow.xmlCAS目录下的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配置文件

Acas-servlet.xmlCAS目录下的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配置文件

AdeployerConfigContext.xmlCAS目录下的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 

Acas-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.jarjcifs-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下全完可以不这么麻烦

6
0
分享到:
评论
3 楼 zdx3578 2011-03-04  
cas-server-uber-webapp-3.4.6 部署这个包应该不错,这个里面包含东西多
2 楼 zdx3578 2011-03-03  
https://wiki.jasig.org/display/CASUM/SPNEGO  官方文档里的 klist测试等你做过吗?
1 楼 zdx3578 2011-03-03  
官方文档的ktpass 不需要执行?

相关推荐

    cas spnego认证方式(即加ad域的windows主机应用免登录)高可用集群方案(目前来看国内第一份资料,本人探索出来的)

    通过本文档介绍的方案,可以在AD域环境下的Windows主机上成功实现CAS SPNEGO认证方式的高可用集群部署。该方案不仅解决了传统CAS集群中的常见问题,还针对SPNEGO认证模式下特有的技术难题提供了详尽的解决思路与实践...

    CAS+windows AD域实现单点登录免身份认证.docx

    cas集成window AD 域实现免身份认证单点登录,cas部署为centos系统,window server 2012 R2

    kerberos:启用KDC和SPNEGO的Nginx

    已启用KDC和SPNEGO的Nginx 先决条件 已在以下环境中进行了测试 kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Ubuntu 20.04 Intel kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Macos ...

    spnego配置一键审批

    6. **邮件服务器与域的关系**:邮件服务器应被添加到AD域中,以防止因同一IP地址发送大量邮件而被视为攻击,导致邮箱被锁定。同时,可能需要在IP Ranges中排除禁止的IP,确保邮件正常收发。 7. **NTLM登录**:NT ...

    cas-server-support-spnego-3.4.2.jar

    cas3.4用到的jar

    Tomcat SPNEGO/Active Directory Authnz:Tomcat SPNEGO / Kerberos身份验证器和Active Directory领域-开源

    这意味着该工具允许用户通过其在AD域中的凭证进行无痛的单点登录(SSO)认证。 **描述解析:** "适用于Apache Tomcat的功能齐全的一流SPNEGO / Kerberos(和当前Windows身份)身份验证器和Active Directory(和...

    cas-server-support-spnego-4.0.0-RC3.zip

    【标题】"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 sso server page

    CAS支持多种认证机制,包括基于数据库、LDAP、AD域、SPNEGO、X.509证书等。开发者可以根据组织的需求选择合适的认证策略,并在CAS配置中进行设置。 6. 安全与扩展性: CAS提供了一些安全特性,如SSL/TLS加密通信...

    griffin集成Livy kerberos.docx

    2. 配置Kerberos相关参数,允许Livy服务通过Kerberos与Yarn交互,以及客户端通过Kerberos访问Livy: - Livy服务启动的keytab和principal:`livy.server.launch.kerberos.keytab` 和 `livy.server.launch.kerberos....

    cas-server-3.4.11-release

    4. **认证模块**:CAS支持多种认证模块,如JDBC、LDAP、SPNEGO(Kerberos)、X.509证书等。在3.4.11版本中,用户可以根据需求选择合适的认证源,并在配置文件中指定相关参数。 5. **服务管理**:CAS Server维护一个...

    CAS自定义加密和登录验证

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要用于实现单点登录(Single Sign-On,SSO)。在本主题中,我们将深入探讨如何在CAS中进行自定义加密和登录验证。 首先...

    Yelu 大学 cas 单点登录实例

    这个版本的CAS客户端支持Spring框架,可以方便地与Spring Security整合。 - 客户端集成主要包括配置CasFilter和CasServerLoginUrlProcessor,以便在用户访问受保护资源时重定向到CAS服务器进行认证。 3. **SSO流程...

    java源码:Java单点登录系统 JA-SIG CAS.rar

    CAS支持多种认证方式,如基于用户名/密码的认证、LDAP目录服务认证、SPNEGO(Kerberos)等。开发者可以根据需求选择或扩展认证模块。 6. **CAS扩展性**: 除了基本的SSO功能,CAS还提供了许多可扩展的功能,例如...

    kerberos 5

    JSP文件(list.jsp和page.jsp)可能展示了如何在Web应用中整合Kerberos 5的身份验证,利用Kerberos的SPNEGO(Simple and Protected GSS-API Negotiation Mechanism)机制,实现在浏览器和Web服务器之间的无感知认证...

    sso.rar_IIS ad java_iis_sso_sso IIS_单点登录

    在Java应用端,可能需要配置LDAP连接以查询AD用户信息,或者使用Java的SPNEGO库来处理Kerberos票据。 7. **安全性考虑**:SSO虽带来便利,但也会增加攻击面。因此,实现时必须确保通信安全,例如使用HTTPS,以及...

    Tomcat中访问AD Server的配置方法

    本文将详细介绍如何在 Tomcat 中配置 SPNEGO 基于 SSO 的方式与 Active Directory (AD) 服务器进行集成,从而实现自动化的用户认证过程。 #### 二、编译 为了实现 SPNEGO 基于 SSO 的功能,需要编写并编译一系列...

    mod_spnego:在 Windows 上运行的 Apache HTTP Server 的 Kerberos 身份验证-开源

    mod_spnego 允许使用 Kerberos 对在 Windows 上的 Apache HTTP 服务器 (httpd) 上运行的网站的用户进行身份验证。 然后,经过身份验证的用户在服务器变量 AUTH_USER 中可用。 sourceforge 上仅托管下载,来源位于 ...

Global site tag (gtag.js) - Google Analytics