Hi,
 i had searched online and in this forum about such a case where in 
getUserPrincipal() is returning null though the validation succeeds.

cas version
=======

3.5.0

here are my configurations

web.xml
======

<filter>  
        <filter-name>CAS Validation Filter</filter-name>  
        <!-- 
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
 -->  
        
<filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class>
        <init-param>  
            <param-name>casServerUrlPrefix</param-name>  
            <param-value>https://casserver/cas/</param-value>  
        </init-param>  
        <init-param>
                <param-name>serverName</param-name>
                <param-value>http://localhost:8280</param-value>
        </init-param>
        
        <init-param>
                <param-name>proxyCallbackUrl</param-name>
                <param-value>https://casserver/cas/proxyCallback</param-value>
        </init-param>
        <init-param>
                <param-name>proxyReceptorUrl</param-name>
                <param-value>/services/proxyCallback</param-value>
        </init-param>
       
        <init-param>
            <param-name>redirectAfterValidation</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>useSession</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>acceptAnyProxy</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>tolerance</param-name>
            <param-value>75000</param-value>
        </init-param>
         
    </filter> 
     
    <context-param>  
        <param-name>serverName</param-name>  
        <param-value>http://localhost:8280</param-value>  
    </context-param>  
  
    <filter>  
        <filter-name>CAS Authentication Filter</filter-name>  
       <!-- 
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
 -->
         
<filter-class>org.jasig.cas.client.authentication.Saml11AuthenticationFilter</filter-class>
        <init-param>  
            <param-name>casServerLoginUrl</param-name>  
            <param-value>https://casserver/cas/login</param-value>  
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://localhost:8280</param-value>
        </init-param>
        <!--<init-param>
                <param-name>renew</param-name>
                <param-value>false</param-value>
        </init-param>
        <init-param>
                <param-name>gateway</param-name>
                <param-value>false</param-value>
        </init-param> -->
    </filter>  
  
    <filter>  
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
        
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
  
        
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Validation Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
  
    <filter-mapping>  
        <filter-name>CAS Authentication Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    <filter-mapping>  
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping> 


pom.xml
======
<dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
         <dependency>
            <groupId>org.jasig.cas.client</groupId>
            <artifactId>cas-client-core</artifactId>
            <version>3.1.12</version>
        </dependency>
        <dependency>
            <groupId>org.opensaml</groupId>
            <artifactId>opensaml1</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.santuario</groupId>
            <artifactId>xmlsec</artifactId>
            <version>1.4.3</version>
        </dependency>

deployerContextConfig.xml
=================
<bean id="attributeRepository" 
class="org.jasig.services.persondir.support.jdbc.MultiRowJdbcPersonAttributeDao">
           <constructor-arg index="0" ref="dataSource" />
              <constructor-arg index="1" value="select LOGINNAME, 'USER_ROLE' 
as attr_name, ROLENAME FROM USER_ROLE WHERE {0}" />
                 <property name="nameValueColumnMappings">
                        <map>
                            <entry key="attr_name" value="ROLENAME" />
                        </map>
                  </property>
                  <property name="queryAttributeMapping">
                        <map>
                            <entry key="username" value="LOGINNAME" />
                        </map>
                  </property>
                  <property name="resultAttributeMapping">
                          <map>
                             <entry key="USER_ROLE" value="USER_ROLE"/>
                          </map>
                  </property>
        </bean>


<bean 
class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver"
 
                                        
p:attributeRepository-ref="attributeRepository" />




also on the services set up screen for the service i wanted to cassify i choose 
the user attribute and selected the checkbox "gnore Attribute Management via 
this Tool".



What i see in cas logs is that the user is authenticated and then service 
ticket is also validated.


here is the end URL after the validation succeeded and then my restful API 
returned 200 OK.

?TARGET=http%3A%2F%2Flocalhost%3A8280%2Fservices%2Frest%2Fusers%2F1641201&SAMLart=AAFSsPYAkNKN6Mb0Q6Li8D8gawrtLKYlHjia%2FBIgP%2FM%2FHk0ia5CTiodH

all is cool except that the request.getUserPrincipal() is null



I tried various versions of cas-client-core. the 3.1.10 does not have the 
samlauthenticationfilter thus tried 3.2.0 and still no user principal. then 
used the 3.1.12 just to check if there was any issue with the versions of the 
jar.

what ever client jar i used its the same result.




-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to