You're right, I overlooked the stack trace (mea culpa):

===
DEBUG [org.jasig.cas.web.support.CasArgumentExtractor] - Extractor did not 
generate service.
DEBUG [org.jasig.cas.web.support.SamlArgumentExtractor] - Extractor did not 
generate service.
DEBUG [org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler] - Performing 
LDAP bind with credential: [... elided ...],ou=People,dc=hawaii,dc=edu
DEBUG [org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler] - [LDAP: 
error code 49 - Invalid Credentials]; nested exception is 
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid 
Credentials]
org.springframework.ldap.AuthenticationException: [LDAP: error code 49 - 
Invalid Credentials]; nested exception is javax.naming.AuthenticationException: 
[LDAP: error code 49 - Invalid Credentials]
===

Though now the question is why does the LDAP bind fail only when the service
registry database is unavailable?

I think these are the relevant config from deployerConfigContext.xml:

===

    <bean id="authenticationManager"
        class="org.jasig.cas.authentication.AuthenticationManagerImpl">
        <property name="credentialsToPrincipalResolvers">
            <list>
                <bean
                    
class="org.jasig.cas.authentication.principal.CredentialsToLDAPAttributePrincipalResolver">
                    <!-- The Principal resolver form the credentials -->
                    <property name="credentialsToPrincipalResolver">
                        <bean
                              
class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver"
 />
                    </property>
                    <!--
                    The query made to find the Principal ID.
                    "%u" will be replaced by the resolved Principal
                    -->
                    <property name="filter" value="(uid=%u)" />

                    <!-- The attribute used to define the new Principal ID -->

                    <property name="principalAttributeName" value="uid" />

                    <!--
                    <property name="searchBase" 
value="ou=people,dc=hawaii,dc=edu" />
                    -->
                    <property name="searchBase" value="${ldap.searchBase}" />
                    <property name="contextSource" ref="contextSource" />

                    <property name="attributeRepository">
                        <ref bean="attributeRepository" />
                    </property>
                </bean>

                <bean
                    
class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver"
 />

                <bean
                    
class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver"
 />
            </list>
        </property>


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

                <bean 
class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"
                    p:filter="uid=%u"
                    p:searchBase="${ldap.searchBase}"
                    p:contextSource-ref="contextSource"
                    p:searchContextSource-ref="pooledContextSource" />

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

-baron


On Tue, Dec 24, 2013 at 07:51:37AM -0700, Misagh Moayyed wrote:
>The DEBUG entries are likely not the cause of error. There probably is a 
>stacktrace or another indicator in the logs as an ERROR that explains what 
>went wrong. 
>
>----- Original Message -----
>
>From: "Baron Fujimoto" <[email protected]> 
>To: [email protected] 
>Sent: Monday, December 23, 2013 6:25:53 PM 
>Subject: [cas-user] CAS is Unavailable: Extractor did not generate service 
>
>We have had CAS server 3.4.11 deployed for some time, and it seemed to be 
>working as expected. We recently encountered the following error in the 
>UI however when the MySQL database for our service registry was taken down 
>for maintenance: 
>
>=== 
>CAS is Unavailable 
>
>There was an error trying to complete your request. Please notify your support 
>desk or try again. 
>=== 
>
>With the corresponding cas.log entries: 
>
>=== 
>DEBUG [org.jasig.cas.web.support.CasArgumentExtractor] - Extractor did not 
>generate service. 
>DEBUG [org.jasig.cas.web.support.SamlArgumentExtractor] - Extractor did not 
>generate service. 
>=== 
>
>This caught us by surprise, since I expected CAS to keep going using its 
>in-memory copy of the service registry based on the feature described 
>here: 
>
><https://wiki.jasig.org/display/CASUM/Configuring#Configuring-NotesontheavailabilityofServicesManagementApplicationDatabase>
> 
>
>I could have sworn I have previously tested this feature, though I am now 
>perhaps questioning my recollection based on current behaviour (though it 
>may have been an earlier version of CAS3). 
>
>Any assistance or suggestions would be greatly appreciated. 
>
>I believe this is the relevant configuration from 
>deployerConfigContext.xml: 
>
><!-- 
>Define the Service Registry 
>--> 
><bean id="serviceRegistryDao" 
>class="org.jasig.cas.services.JpaServiceRegistryDaoImpl" 
>p:entityManagerFactory-ref="entityManagerFactory" /> 
>
><!-- Persistent Service Registry: mysql --> 
><!-- This is the EntityManagerFactory configuration for Hibernate --> 
><bean id="entityManagerFactory" 
>class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
><property name="dataSource" ref="dataSource"/> 
><property name="jpaVendorAdapter"> 
><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
><property name="generateDdl" value="true"/> 
><property name="showSql" value="true" /> 
></bean> 
></property> 
><property name="jpaProperties"> 
><props> 
><prop key="hibernate.dialect">${database.hibernate.dialect}</prop> 
><prop key="hibernate.hbm2ddl.auto">update</prop> 
></props> 
></property> 
></bean> 
>
><bean id="transactionManager" 
>class="org.springframework.orm.jpa.JpaTransactionManager"> 
><property name="entityManagerFactory" ref="entityManagerFactory"/> 
></bean> 
>
><tx:annotation-driven transaction-manager="transactionManager"/> 
>
><bean 
>id="dataSource" 
>class="org.apache.commons.dbcp.BasicDataSource" 
>p:driverClassName="com.mysql.jdbc.Driver" 
>p:url="${service.registry.url}" 
>p:username="${service.registry.username}" 
>p:password="${service.registry.password}" /> 
>=== 
>
>${database.hibernate.dialect} is defined in cas.properties as: 
>database.hibernate.dialect=org.hibernate.dialect.MySQLDialect 
>
>and pom.xml contains: 
>
>=== 
><!-- Dependencies for database classes --> 
><!-- 
>Apache Commons DBCP 
>--> 
><dependency> 
><groupId>commons-dbcp</groupId> 
><artifactId>commons-dbcp</artifactId> 
><version>1.4</version> 
><scope>runtime</scope> 
></dependency> 
>
><!-- 
>Hibernate Entities 
>--> 
><dependency> 
><groupId>org.hibernate</groupId> 
><artifactId>hibernate-entitymanager</artifactId> 
><version>3.5.0-CR-2</version> 
></dependency> 
>
><!-- 
>MySQL Connector 
>--> 
><dependency> 
><groupId>mysql</groupId> 
><artifactId>mysql-connector-java</artifactId> 
><version>5.1.20</version> 
></dependency> 
>
><!-- End Dependencies for database jars --> 
>=== 

-- 
Baron Fujimoto <[email protected]> :: UH Information Technology Services
minutas cantorum, minutas balorum, minutas carboratum desendus pantorum

-- 
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