gpt4 book ai didi

ldap - 一台Jasig CAS服务器可以配置两个LDAP吗

转载 作者:行者123 更新时间:2023-12-01 01:11:58 25 4
gpt4 key购买 nike

我们需要设置一个 CAS 服务器来对我们的应用程序进行 SSO(全部在 JAVA 中)。这是我的情况:

  1. CAS1:现有的 CAS 服务器,基于 ORACLE LDAP(我们无法控制 CAS1 和 LDAP)。我们打算忽略这个。多个应用程序与此 CAS 集成。

  2. CAS2:我们计划设置一个基于 MS Active Directory 的新 CAS 服务器,因为我们有很多新用户。我们计划在 AD 中维护它们。仍然是我们计划使用 CAS2 设置 SSO 的相同应用程序。

我们需要的是来自现有 LDAP 和我们新 AD 的用户都可以通过 SSO 登录到应用程序。

  1. 有没有简单的方法,比如设置我的新 CAS 以同时使用 LDAP 和 AD。这样双方的用户都可以登录我们的应用程序。如果可能的话,这是我认为更好的方法。有详细的例子吗?

  2. 我可以在两个 CAS 之间设置联盟吗? Jasig CAS 有可能吗?

求助!非常感谢!

最佳答案

是的,CAS 可以针对多个来源进行身份验证。在您的 authenticationManager bean 中,您应该有一个名为 authenticationHandlers 的属性;在那里,定义多个 AuthenticationHandler beans。对于我的设置,我有一个本地文件(用于监视来自 Munin/Nagios 的用户)身份验证处理程序和一个 BindLdapAuthenticationHandler:

<property name="authenticationHandlers">
<list>
<!-- This is the authentication handler that authenticates
services by means of callback via SSL, thereby validating
a server side SSL certificate. -->
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />
<bean class="org.jasig.cas.adaptors.generic.FileAuthenticationHandler" p:fileName="${cas.localuser.file}" />
<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"
p:timeout="10000"
p:filter="${ldap.auth.filter}"
p:searchBase="${ldap.base.dn}"
p:ignorePartialResultException="true"
p:contextSource-ref="contextSource"
p:searchContextSource-ref="searchContextSource"
/>
</list>
</property>

只需为您想要验证的其他内容添加更多验证处理程序。查看https://wiki.jasig.org/display/CASUM/LDAP对于 CAS LDAP 处理程序和 https://wiki.jasig.org/display/CASUM/Active+Directory用于 CAS Active Directory 处理程序。

按照其工作方式,CAS 将尝试按顺序对每个处理程序进行身份验证。第一个成功的将导致成功的 CAS 登录。因此,如果您在 LDAP 中有一条 uid=jsmith 的记录,在 AD 中有一条 cn=jsmith 的记录,并且它们都有相同的密码,那么在 CAS 中首先定义的那个总是获胜!因此,您应该确保您的系统之间没有登录 ID 冲突,否则您可能会面临一些不良副作用(尤其是当 LDAP 中的 jsmith 与 AD 中的 jsmith 不是同一个人时)。

如果您使用 SAML 验证(例如 mod_auth_cas),您可能还有其他考虑因素。您可以定义一个 attributeRepository bean,它列出了一个人的记录在进行身份验证时要返回的属性,并且服务使用 /samlValidate 验证票证。我不知道是否有可用的 bean 类可以让您从多个目录中提取数据,但如果您不使用 samlValidate,这对您来说可能不是问题。

那么有没有更好的方法呢?好吧,如果可能的话,请归结为一个身份验证真实来源。

关于 CAS 联盟:没有。您可以设置服务器,使它们信任彼此的票证,但我建议使用一个 CAS 环境(如果需要,可以集群化)对尽可能少的身份验证真实来源进行身份验证。

关于ldap - 一台Jasig CAS服务器可以配置两个LDAP吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23123256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com