2016-10-11 176 views
0

我有和其他几个问题一样的问题,其中没有一个真正回答过;即使用CAS 4.x(实际为4.2.6),我无法获取LDAP属性以返回到客户端应用程序。CAS 4.x和LDAP属性

Question 1这似乎是矫枉过正;定制代码来解决什么是“简单”问题。

Question 2已经这样做了,它没有工作。

所以,现在轮到我问......有没有什么魔法让它工作?我们已经使用3.5很长一段时间没有任何问题。我试图将这些设置转换为4.x的Maven覆盖层和4.x的新的上下文配置,并且它不是做它。

我可以在日志中看到CAS正在请求,并从LDAP中获取我正在查找的属性。但是他们并没有把令牌放回应用程序。

除了Apereo文档规定的外,还需要做些什么?我认为这是属性库可能?如果有什么可以帮助你通过这个,请问:Config,Logs(当然是编辑)......任何东西。

谢谢。

更新#1。这是我的解析器列表。注:我保持代码/设置的地方注释掉,直到我得到它的工作,然后我清理东西。

<util:map id="authenticationHandlersResolvers"> 
    <!-- 
    <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" /> 
    <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" /> 
    --> 
    <!--<entry key-ref="ldapAuthenticationHandler" value-ref="primaryPrincipalResolver" /> --> 
    <entry key-ref="ldapAuthenticationHandler" value="#{null}" /> 
</util:map> 

更新#2

我做更多的测试,仍然是不成功的。我认为,它归结于LdapAuthenticationHandler的principalAttributeMap无法正常工作,或者是serviceRegistryDao的attributeReleasePolicy ...任何人都可以在此配置中看到任何问题?

<bean id="ldapAuthenticationHandler" class="org.jasig.cas.authentication.LdapAuthenticationHandler" 
    p:principalIdAttribute="sAMAccountName" 
    c:authenticator-ref="authenticator" 
    > 
    <property name="principalAttributeMap"> 
     <map> 
      <entry key="cn" value="cn" /> 
      <entry key="mail" value="Email" /> 
      <entry key="memberOf" value="Groups" /> 
      <entry key="displayName" value="displayName" /> 
     </map> 
    </property> 
</bean> 

<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"> 
    <property name="registeredServices"> 
     <list> 
      <bean class="org.jasig.cas.services.RegexRegisteredService" 
        p:id="5" 
        p:name="All Servicesxxx" 
        p:description="Allow connections for all services and protocols" 
        p:serviceId="^(http|https|imaps)://.*" 
        p:evaluationOrder="5" 
        > 
       <property name="attributeReleasePolicy"> 
        <bean class="org.jasig.cas.services.ReturnAllAttributeReleasePolicy" /> 
       </property> 
      </bean> 
     </list> 
    </property> 
</bean>  
+0

您是否在第二个问题中讲过#{null}的事情?我建议你不要使用JSON。这导致我的CAS服务器出现问题。检查我的问题答案(问题1),看看它是否对你有帮助。 – Goldi

+0

是的,我在Authentication Handler Resolvers列表中完成了#{null}更改。它没有帮助。 –

+0

我回答了我的问题(问题1)。我写的那些东西除了我描述的东西外都适用于我。你使用这个文件吗? – Goldi

回答

0

要从CAS Security Guide引述如下:

CAS服务器的所有通信都必须发生在安全信道上 (即使用TLSv1)。这有 要求两个主要理由:

  1. 认证过程需要的安全 凭据传输。
  2. CAS票证授予票证是一个不记名票证。

由于这两个数据的披露将允许模拟攻击,以确保CAS 客户端和CAS服务器之间的通信通道的 至关重要。

实际上,这意味着所有CAS网址都必须使用HTTPS,但它也 意味着从CAS服务器应用程序的所有连接都必须 进行使用HTTPS:

  • 时产生在调用代理回调URL时,服务票据在“服务”url上发送回应用程序。

HTTPS是在CAS必须的。但是,有可能会禁用它,但强烈建议不要这样做。如果您很难处理SSL配置,我建议您阅读my question,我将详细解释如何处理密钥库。

+0

我有“禁用它”或更好的描述是:配置CAS以允许对非安全应用程序进行身份验证。我现在的目标是让它工作,然后我们可以将它传递给QA组进行最终测试。主要是因为很难进行监控以确保其按预期工作(单元测试),所以这很困难。我的假设是CAS在安全和非安全安装之间的工作原理是一样的;如果你足够笨到不能保证生产能力,就不能保证真正安全。 –

+0

是的,但是一旦您知道如何使用HTTPS运行它,它一点都不困难。只需阅读有关产品的一天的分步说明 – Goldi

+0

对此的更新:在使用有效(非自签名)证书进行安全保护的服务器上运行并没有帮助。 CAS从LDAP获取组(我在日志中看到它们),但不会将它们发送给应用程序。我无法弄清楚什么配置是错误的。这与CAS 3完美无瑕地工作。我继续尝试不同的事情,但必须有明显的东西。 –