2016-04-01 17 views
1

CAS kullanarak kimliği doğrulanmış bir Tomcat web uygulaması için bir kimlik doğrulama sistemi uyguluyor. Unicon'un CAS server with ADFS integration kullanıyorum.Wsfederation'daki CAS öznitelikleri CAS istemcisine iletilmiyor

Gerekli özniteliklerin CAS sunucusuna ulaştığını görebileceğim duruma ulaştım. Ancak bu nitelikler müşteriye iletilmiyor. aşağıdaki resme bakın: enter image description here Yukarıdaki resimde, kimlik doğrulamasından sonra öznitelik haritası boştur. Ayrıca, istemci uygulaması bileti doğruladığında, özellik haritası boştur. Aşağıdaki Referans resmi: doğrulanmış hale getirilmesinden sonra

enter image description here

, nitelikleri günlüklerde görülebilir, ancak bunlar nitelik Haritası yüklenen edilmiyor.

DeployerConfigContext.xml aşağıdaki gibidir. ServiceRegistryDao fasulye öznitelikRepository fasulye ve izin özellik özniteliği muhtemelen odak alanlardır.

<?xml version="1.0" encoding="UTF-8"?> 


<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:sec="http://www.springframework.org/schema/security" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 

    <bean id="authenticationManager" 
     class="org.jasig.cas.authentication.AuthenticationManagerImpl"> 

     <property name="authenticationMetaDataPopulators"> 
      <list> 
       <bean class="net.unicon.cas.support.wsfederation.authentication.WsFederationAuthenticationMetaDataPopulator" /> 
      </list> 
     </property> 
     <property name="credentialsToPrincipalResolvers"> 
      <list> 
      <bean class="net.unicon.cas.support.wsfederation.authentication.principal.WsFederationCredentialsToPrincipalResolver"> 
       <property name="configuration" ref="wsFedConfig" /> 
      </bean> 
      <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" > 
       <property name="attributeRepository" ref="attributeRepository" /> 
      </bean> 
      <bean  class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" /> 
      </list>   
     </property> 

     <property name="authenticationHandlers"> 
      <list> 
      <bean class="net.unicon.cas.support.wsfederation.authentication.handler.support.WsFederationAuthenticationHandler" /> 
      <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" 
       p:httpClient-ref="httpClient" /> 
      </list> 
     </property> 
    </bean> 

    <sec:user-service id="userDetailsService"> 
     <sec:user name="@@THIS SHOULD BE [email protected]@" password="notused" authorities="ROLE_ADMIN" /> 
    </sec:user-service> 

    <bean id="attributeRepository" 
     class="org.jasig.services.persondir.support.StubPersonAttributeDao"> 
     <property name="backingMap"> 
      <map> 
       <entry key="emailaddress" value="upn" /> 
       <!--<entry key="FirstName" value="username" />--> 
       <entry key="name" value="LastName" /> 
       <entry key="costcent" value="costcent" /> 
       <entry key="title" value="FirstName" /> 
      </map> 
     </property> 
    </bean> 

    <bean 
     id="serviceRegistryDao" 
     class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"> 
      <property name="registeredServices"> 
       <list> 
        <bean class="org.jasig.cas.services.RegexRegisteredService"> 
         <property name="id" value="0" /> 
         <property name="name" value="HTTP and IMAP" /> 
         <property name="description" value="Allows HTTP(S) and IMAP(S) protocols" /> 
         <property name="serviceId" value="^(https?|imaps?)://.*" /> 
         <property name="evaluationOrder" value="10000001" /> 
         <property name="allowedAttributes"> 
         <list> 
      <value>upn</value> 
      <value>Department</value> 
      <value>costcent</value> 
      <value>LastName</value> 
      <value>FirstName</value> 
      <value>name</value> 
      <value>emailaddress</value> 
      <value>title</value> 
      <value>SAM-Account-Name</value> 

         </list> 
        </property> 
        </bean> 

       </list> 
      </property> 
     </bean> 

    <bean id="auditTrailManager" class="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager" /> 

    <bean id="healthCheckMonitor" class="org.jasig.cas.monitor.HealthCheckMonitor"> 
    <property name="monitors"> 
     <list> 
     <bean class="org.jasig.cas.monitor.MemoryMonitor" 
      p:freeMemoryWarnThreshold="10" /> 
     <bean class="org.jasig.cas.monitor.SessionMonitor" 
      p:ticketRegistry-ref="ticketRegistry" 
      p:serviceTicketCountWarnThreshold="5000" 
      p:sessionCountWarnThreshold="100000" /> 
     </list> 
    </property> 
    </bean> 
</beans> 

CAS sunucuda bahsettiğim fasulye Kombinasyon çok denedim UNIcon en CAS-sunucu uygulaması here

örnek uygulamasında aynıdır geri kalanı. İlkbaharda yeni olmanın özniteliğindeki öznitelikleri nasıl yükleyeceğimi anlayamadım. İstemci uygulamasına kimlik doğrulaması sırasında CAS sunucusu tarafından gönderilen özniteliklerin yönlendirilmesinde bana yol göster.

cevap

1

WsFederationCredentialsToPrincipalResolver yalnızca asıl kimliği alınan öznitelikler koleksiyonundan ayıklayıp diğer öznitelikleri yok sayıyor gibi görünüyor. Böylece yalnızca yapılandırmanızda tanımlanan kimlik özniteliğini alırsınız. Şu an için, bu çözümleyiciyi öznitelik deponuza bağlayabilir ve öznitelikleri oradan alıp almasını sağlayabilirsiniz.

CAS 4.2'nin bu davranışı desteklediğini ve düzelttiğini ve ADFS entegrasyonu için yerleşik desteğe sahip olduğunu unutmayın. Diğer seçeneğiniz, WsFederationCredentialsToPrincipalResolver'ı genişletmek ve nitelikleri işlemek ve bunları, uygun yöntemi geçersiz kılarak, orada oluşturulan son ana öğeye dahil etmektir.

+0

Çözümleyiciyi özellik deposuna nasıl bağlayacağınız ve tükettiğiniz hakkında biraz daha açıklayabilir misiniz? –

+1

En iyi rehberiniz, cas 4.2 kaynak kodunu taramak ve uzantınızı uygun şekilde yeniden yapılandırmak olacaktır. Bu bir yana, temel olarak öznitelik deposunu wsfed çözümleyicisine takarsınız: '' –

+0

CAS 4.2 kullanımı önerisi bir mücevher gibi çalıştı. CAS 4.x'in bir parçası olarak yapılması gereken bazı ekstra konfigürasyonlar vardır. Bu hala çabaya değer. –

İlgili konular