I am currently updating to CAS v4.2.3 and trying to setup an application that 
uses the Google Apps integration with CAS.  I believe I tested this setup and 
it worked in 4.1.x.  Anyway, whenever I try to login to CAS, I am able to 
authenticate with my active directory username and password, but then I get an 
error message that "CAS is unavailable".   The other services that don't use 
the Google Apps integration are working just fine.  In the tomcat error log I 
get this message:

SEVERE: Servlet.service() for servlet [cas] in context with path [/cas] threw 
exception [Request processing failed; nested exception is 
org.springframework.webflow.execution.ActionExecutionException: Exception 
thrown executing [AnnotatedAction@40cf8796 targetAction = 
[EvaluateAction@78ceaa17 expression = 
flowScope.service.getResponse(requestScope.serviceTicketId), resultExpression = 
requestScope.response], attributes = map[[empty]]] in state 'redirect' of flow 
'login' -- action execution attributes were 'map[[empty]]'] with root cause
java.lang.NullPointerException
        at 
org.jasig.cas.support.saml.authentication.principal.GoogleAccountsServiceResponseBuilder.constructSamlResponse(GoogleAccountsServiceResponseBuilder.java:119)
        at 
org.jasig.cas.support.saml.authentication.principal.GoogleAccountsServiceResponseBuilder.build_aroundBody0(GoogleAccountsServiceResponseBuilder.java:62)
        at 
org.jasig.cas.support.saml.authentication.principal.GoogleAccountsServiceResponseBuilder$AjcClosure1.run(GoogleAccountsServiceResponseBuilder.java:1)
        ...

I assume this process is failing because the attribute map is empty, but I 
don't know how to fix this problem.  I have attached a copy of my 
deployerConfigContext file.  Also, my Google Apps settings are in the 
cas.properties file.  Any thoughts on why this is occuring?

Thanks,

--------------------
David Abney
ITS Web Developer/Programmer

600 West Walnut Street
Danville, Kentucky 40422
859.238.5761

[email_logo]
www.centre.edu<http://www.centre.edu/>

-- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/bcd5c0d98a1149a0a46ab2ef131f0bd9%40Exchange-MB2.centre.edu.
For more options, visit https://groups.google.com/a/apereo.org/d/optout.
<?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:context="http://www.springframework.org/schema/context";
       xmlns:p="http://www.springframework.org/schema/p";
       xmlns:c="http://www.springframework.org/schema/c";
       xmlns:aop="http://www.springframework.org/schema/aop";
       xmlns:tx="http://www.springframework.org/schema/tx";
       xmlns:util="http://www.springframework.org/schema/util";
       xmlns:sec="http://www.springframework.org/schema/security";
       xmlns:ldaptive="http://www.ldaptive.org/schema/spring-ext";
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
       http://www.ldaptive.org/schema/spring-ext http://www.ldaptive.org/schema/spring-ext.xsd";>

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

    <util:list id="authenticationMetadataPopulators">
        <ref bean="successfulHandlerMetaDataPopulator" />
    </util:list>

    <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao"
          p:backingMap-ref="attrRepoBackingMap" />

    <alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />
    <alias name="personDirectoryPrincipalResolver" alias="primaryPrincipalResolver" />
    
    <util:map id="attrRepoBackingMap">
        <entry key="uid" value="uid" />
        <entry key="mail" value="mail" />
	<entry key="employeeID" value="employeeID" />
    </util:map>

    <alias name="serviceThemeResolver" alias="themeResolver" />

    <alias name="jsonServiceRegistryDao" alias="serviceRegistryDao" />
    
    <alias name="defaultTicketRegistry" alias="ticketRegistry" />

    <alias name="ticketGrantingTicketExpirationPolicy" alias="grantingTicketExpirationPolicy" />
    <alias name="multiTimeUseOrTimeoutExpirationPolicy" alias="serviceTicketExpirationPolicy" />

    <alias name="anyAuthenticationPolicy" alias="authenticationPolicy" />
    <alias name="acceptAnyAuthenticationPolicyFactory" alias="authenticationPolicyFactory" />

    <bean id="auditTrailManager"
          class="org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager"
          p:entrySeparator="${cas.audit.singleline.separator:|}"
          p:useSingleLine="${cas.audit.singleline:false}"/>

    <alias name="neverThrottle" alias="authenticationThrottle" />

    <util:list id="monitorsList">
        <ref bean="memoryMonitor" />
        <ref bean="sessionMonitor" />
    </util:list>

    <alias name="defaultPrincipalFactory" alias="principalFactory" />
    <alias name="defaultAuthenticationTransactionManager" alias="authenticationTransactionManager" />
    <alias name="defaultPrincipalElectionStrategy" alias="principalElectionStrategy" />
    <alias name="tgcCipherExecutor" alias="defaultCookieCipherExecutor" />

    <bean id="ldapAuthenticationHandler"
        class="org.jasig.cas.authentication.LdapAuthenticationHandler"
        p:principalIdAttribute="sAMAccountName"
        c:authenticator-ref="authenticator">
        <property name="principalAttributeMap">
            <map>
                <!--
                   | This map provides a simple attribute resolution mechanism.
                   | Keys are LDAP attribute names, values are CAS attribute names.
                   | Use this facility instead of a PrincipalResolver if LDAP is
                   | the only attribute source.
                   -->
                <entry key="displayName" value="displayName" />
                <entry key="mail" value="mail" />
                <entry key="memberOf" value="memberOf" />
                <entry key="employeeID" value="employeeID" />
            </map>
        </property>
    </bean>

    <ldaptive:ad-authenticator id="authenticator"
        ldapUrl="${ldap.url}"
        userFilter="${ldap.authn.searchFilter}"
        bindDn="${ldap.managerDn}"
        bindCredential="${ldap.managerPassword}"
        allowMultipleDns="${ldap.allowMultipleDns:false}"
        connectTimeout="${ldap.connectTimeout}"
        validateOnCheckOut="${ldap.pool.validateOnCheckout}"
        failFastInitialize="true"
        blockWaitTime="${ldap.pool.blockWaitTime}"
        idleTime="${ldap.pool.idleTime}"
        baseDn="${ldap.baseDn}"
        maxPoolSize="${ldap.pool.maxSize}"
        minPoolSize="${ldap.pool.minSize}"
        validatePeriodically="${ldap.pool.validatePeriodically}"
        validatePeriod="${ldap.pool.validatePeriod}"
        prunePeriod="${ldap.pool.prunePeriod}"
        useSSL="${ldap.use.ssl:false}"
        subtreeSearch="${ldap.subtree.search:true}"
        useStartTLS="${ldap.useStartTLS}" 
	    />

</beans>

Reply via email to