Hi

I have jenkins configured with openID plugin for authentication. I use CAS 
configured with LDAP server to match the userIDs and also with openid. I am 
receiving an error after successful authentication when CAS is redirected 
back to the jenkins page after authentication.

I have attached the complete stack trace login-webflow.xml and 
deployerConfigContext.xml for your reference. I hav higlighted the code 
where we set the openid.mode however I dont think this is the correct place 
to do it. If someone can please help me to find the right way to configure 
the openid.mode, I would really appreciate it.

Regards 

J Shai


javax.servlet.ServletException: org.openid4java.message.MessageException: 
0x100: Required parameter missing: openid.mode
> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
> at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:211)
> at 
> org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
> at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
> at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
> at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
> at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
> at 
> hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at 
> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
> at 
> hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
> at 
> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
> at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
> at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
> at 
> org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
> at 
> hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
> at 
> org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
> at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
> at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
> at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
> at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
> at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
> at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
> at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> at org.eclipse.jetty.server.Server.handle(Server.java:370)
> at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
> at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
> at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
> at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
> at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
> at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
> at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.openid4java.message.MessageException: 0x100: Required 
> parameter missing: openid.mode
> at org.openid4java.message.Message.validate(Message.java:187)
> at org.openid4java.message.AuthSuccess.validate(AuthSuccess.java:405)
> at org.openid4java.message.AuthSuccess.createAuthSuccess(AuthSuccess.java:118)
> at org.openid4java.consumer.ConsumerManager.verify(ConsumerManager.java:1142)
> at hudson.plugins.openid.OpenIdSession.doFinishLogin(OpenIdSession.java:111)
> at 
> hudson.plugins.openid.OpenIdSsoSecurityRealm.doFinishLogin(OpenIdSsoSecurityRealm.java:210)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
> at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
> at 
> org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
> at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
> at 
> org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
> ... 63 more
>
>

Attaching my login-webflow.xml here for reference

> <?xml version="1.0" encoding="UTF-8"?>
> <!-- Licensed to Jasig under one or more contributor license agreements. See 
> the NOTICE file distributed with this work for 
>    additional information regarding copyright ownership. Jasig licenses this 
> file to you under the Apache License, Version 2.0 
>    (the "License"); you may not use this file except in compliance with the 
> License. You may obtain a copy of the License at 
>    the following location: http://www.apache.org/licenses/LICENSE-2.0 Unless 
> required by applicable law or agreed to in writing, 
>    software distributed under the License is distributed on an "AS IS" BASIS, 
> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
>    either express or implied. See the License for the specific language 
> governing permissions and limitations under the License. -->
> <flow xmlns="http://www.springframework.org/schema/webflow"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>    xsi:schemaLocation="http://www.springframework.org/schema/webflow
>                           
> http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd";>
>    <var name="credential" 
> class="org.jasig.cas.authentication.UsernamePasswordCredential" />
>    <on-start>
>       <evaluate expression="initialFlowSetupAction" />
>    </on-start>
>    <!-- If the request contains a parameter called openid.mode and is not an 
> association request, switch to openId. Otherwise, 
>       continue normal webflow. -->
>    <decision-state id="selectFirstAction">
>       <if
>          test="externalContext.requestParameterMap['openid.mode'] neq ''
>                         &amp;&amp; 
> externalContext.requestParameterMap['openid.mode'] neq null
>                         &amp;&amp; 
> externalContext.requestParameterMap['openid.mode'] neq 'associate'"
>          then="openIdSingleSignOnAction" 
> else="ticketGrantingTicketExistsCheck" />
>    </decision-state>
>    <decision-state id="ticketGrantingTicketExistsCheck">
>       <if test="flowScope.ticketGrantingTicketId != null" 
> then="hasServiceCheck" else="gatewayRequestCheck" />
>    </decision-state>
>    <!-- The OpenID authentication action. If authentication is successful, 
> send the ticket granting ticker. Otherwise, redirect 
>       to the login form. -->
>    <action-state id="openIdSingleSignOnAction">
>       <evaluate expression="openIdSingleSignOnAction" />
>       <transition on="success" to="sendTicketGrantingTicket" />
>       <transition on="error" to="viewLoginForm" />
>       <transition on="warn" to="warn" />
>    </action-state>
>    <action-state id="ticketGrantingTicketCheck">
>       <evaluate 
> expression="ticketGrantingTicketCheckAction.checkValidity(flowRequestContext)"
>  />
>       <transition on="notExists" to="gatewayRequestCheck" />
>       <transition on="invalid" to="terminateSession" />
>       <transition on="valid" to="hasServiceCheck" />
>    </action-state>
>    <action-state id="terminateSession">
>       <evaluate 
> expression="terminateSessionAction.terminate(flowRequestContext)" />
>       <transition to="generateLoginTicket" />
>    </action-state>
>    <decision-state id="gatewayRequestCheck">
>       <if test="requestParameters.gateway != '' and requestParameters.gateway 
> != null and flowScope.service != null"
>          then="gatewayServicesManagementCheck" 
> else="serviceAuthorizationCheck" />
>    </decision-state>
>    <decision-state id="hasServiceCheck">
>       <if test="flowScope.service != null" then="renewRequestCheck" 
> else="viewGenericLoginSuccess" />
>    </decision-state>
>    <decision-state id="renewRequestCheck">
>       <if test="requestParameters.renew != '' and requestParameters.renew != 
> null" then="serviceAuthorizationCheck"
>          else="generateServiceTicket" />
>    </decision-state>
>    <!-- Do a service authorization check early without the need to login 
> first -->
>    <action-state id="serviceAuthorizationCheck">
>       <evaluate expression="serviceAuthorizationCheck" />
>       <transition to="generateLoginTicket" />
>    </action-state>
>    <!-- The "warn" action makes the determination of whether to redirect 
> directly to the requested service or display the 
>       "confirmation" page to go back to the server. -->
>    <decision-state id="warn">
>       <if test="flowScope.warnCookieValue" then="showWarningView" 
> else="redirect" />
>    </decision-state>
>    <!-- <action-state id="startAuthenticate"> <action bean="x509Check" /> 
> <transition on="success" to="sendTicketGrantingTicket" 
>       /> <transition on="warn" to="warn" /> <transition on="error" 
> to="generateLoginTicket" /> </action-state> -->
>    <action-state id="generateLoginTicket">
>       <evaluate 
> expression="generateLoginTicketAction.generate(flowRequestContext)" />
>       <transition on="generated" to="viewLoginForm" />
>    </action-state>
>    <view-state id="viewLoginForm" view="casLoginView" model="credential">
>       <binder>
>          <binding property="username" />
>          <binding property="password" />
>       </binder>
>       <on-entry>
>          <set name="viewScope.commandName" value="'credential'" />
>       </on-entry>
>       <transition on="submit" bind="true" validate="true" to="realSubmit">
>          <evaluate 
> expression="authenticationViaFormAction.doBind(flowRequestContext, 
> flowScope.credential)" />
>       </transition>
>    </view-state>
>    <action-state id="realSubmit">
>       <evaluate 
> expression="authenticationViaFormAction.submit(flowRequestContext, 
> flowScope.credential, messageContext)" />
>       <transition on="warn" to="warn" />
>       <transition on="success" to="sendTicketGrantingTicket" />
>       <transition on="successWithWarnings" to="showMessages" />
>       <transition on="authenticationFailure" to="handleAuthenticationFailure" 
> />
>       <transition on="error" to="generateLoginTicket" />
>    </action-state>
>    <view-state id="showMessages" view="casLoginMessageView">
>       <on-entry>
>          <evaluate expression="sendTicketGrantingTicketAction" />
>          <set name="requestScope.messages" value="messageContext.allMessages" 
> />
>       </on-entry>
>       <transition on="proceed" to="serviceCheck" />
>    </view-state>
>    <action-state id="handleAuthenticationFailure">
>       <evaluate 
> expression="authenticationExceptionHandler.handle(currentEvent.attributes.error,
>  messageContext)" />
>       <transition on="AccountDisabledException" to="casAccountDisabledView" />
>       <transition on="AccountLockedException" to="casAccountLockedView" />
>       <transition on="CredentialExpiredException" to="casExpiredPassView" />
>       <transition on="InvalidLoginLocationException" 
> to="casBadWorkstationView" />
>       <transition on="InvalidLoginTimeException" to="casBadHoursView" />
>       <transition on="FailedLoginException" to="generateLoginTicket" />
>       <transition on="AccountNotFoundException" to="generateLoginTicket" />
>       <transition on="UNKNOWN" to="generateLoginTicket" />
>    </action-state>
>    <action-state id="sendTicketGrantingTicket">
>       <evaluate expression="sendTicketGrantingTicketAction" />
>       <transition to="serviceCheck" />
>    </action-state>
>    <decision-state id="serviceCheck">
>       <if test="flowScope.service != null" then="generateServiceTicket" 
> else="viewGenericLoginSuccess" />
>    </decision-state>
>    <action-state id="generateServiceTicket">
>       <evaluate expression="generateServiceTicketAction" />
>       <transition on="success" to="warn" />
>       <transition on="authenticationFailure" to="handleAuthenticationFailure" 
> />
>       <transition on="error" to="generateLoginTicket" />
>       <transition on="gateway" to="gatewayServicesManagementCheck" />
>    </action-state>
>    <action-state id="gatewayServicesManagementCheck">
>       <evaluate expression="gatewayServicesManagementCheck" />
>       <transition on="success" to="redirect" />
>    </action-state>
>    <action-state id="redirect">
>       <evaluate 
> expression="flowScope.service.getResponse(requestScope.serviceTicketId)" 
> result-type="org.jasig.cas.authentication.principal.Response"
>          result="requestScope.response" />
>       <transition to="postRedirectDecision" />
>    </action-state>
>    <decision-state id="postRedirectDecision">
>       <if test="requestScope.response.responseType.name() == 'POST'" 
> then="postView" else="redirectView" />
>    </decision-state>
>    <!-- the "viewGenericLogin" is the end state for when a user attempts to 
> login without coming directly from a service. 
>       They have only initialized their single-sign on session. -->
>    <end-state id="viewGenericLoginSuccess" view="casLoginGenericSuccessView" 
> />
>    <!-- The "showWarningView" end state is the end state for when the user 
> has requested privacy settings (to be "warned") 
>       to be turned on. It delegates to a view defines in 
> default_views.properties that display the "Please click here to go to 
>       the service." message. -->
>    <end-state id="showWarningView" view="casLoginConfirmView" />
>    <!-- Password policy failure states -->
>    <end-state id="abstactPasswordChangeView">
>       <on-entry>
>          <set name="flowScope.passwordPolicyUrl" 
> value="passwordPolicy.passwordPolicyUrl" />
>       </on-entry>
>    </end-state>
>    <end-state id="casExpiredPassView" view="casExpiredPassView" 
> parent="#abstactPasswordChangeView" />
>    <end-state id="casMustChangePassView" view="casMustChangePassView" 
> parent="#abstactPasswordChangeView" />
>    <end-state id="casAccountDisabledView" view="casAccountDisabledView" />
>    <end-state id="casAccountLockedView" view="casAccountLockedView" />
>    <end-state id="casBadHoursView" view="casBadHoursView" />
>    <end-state id="casBadWorkstationView" view="casBadWorkstationView" />
>    <end-state id="postView" view="postResponseView">
>       <on-entry>
>          <set name="requestScope.parameters" 
> value="requestScope.response.attributes" />
>          <set name="requestScope.originalUrl" value="flowScope.service.id" />
>       </on-entry>
>    </end-state>
>    <!-- The "redirect" end state allows CAS to properly end the workflow 
> while still redirecting the user back to the service 
>       required. -->
>    <end-state id="redirectView" 
> view="externalRedirect:${requestScope.response.url}" />
>    <end-state id="viewServiceErrorView" view="viewServiceErrorView" />
>    <end-state id="viewServiceSsoErrorView" view="viewServiceSsoErrorView" />
>    <global-transitions>
>       <!-- CAS-1023 This one is simple - redirects to a login page (same as 
> renew) when 'ssoEnabled' flag is unchecked instead 
>          of showing an intermediate unauthorized view with a link to login 
> page -->
>       <transition to="viewLoginForm" 
> on-exception="org.jasig.cas.services.UnauthorizedSsoServiceException" />
>       <transition to="viewServiceErrorView" 
> on-exception="org.springframework.webflow.execution.repository.NoSuchFlowExecutionException"
>  />
>       <transition to="viewServiceErrorView" 
> on-exception="org.jasig.cas.services.UnauthorizedServiceException" />
>    </global-transitions>
> </flow>
>
>
 
 Attaching my deployerConfigContext.xml here for reference

<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:c="http://www.springframework.org/schema/c";
>        xmlns:tx="http://www.springframework.org/schema/tx";
>        xmlns:util="http://www.springframework.org/schema/util";
>        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.2.xsd
>        http://www.springframework.org/schema/tx 
> http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
>        http://www.springframework.org/schema/security 
> http://www.springframework.org/schema/security/spring-security-3.2.xsd
>        http://www.springframework.org/schema/util 
> http://www.springframework.org/schema/util/spring-util.xsd";>
>
>     <!--
>        | The authentication manager defines security policy for 
> authentication by specifying at a minimum
>        | the authentication handlers that will be used to authenticate 
> credential. While the AuthenticationManager
>        | interface supports plugging in another implementation, the 
> default PolicyBasedAuthenticationManager should
>        | be sufficient in most cases.
>        +-->
>     <bean id="authenticationManager" 
> class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
>         <constructor-arg>
>             <map>
>                 <!--
>                    | IMPORTANT
>                    | Every handler requires a unique name.
>                    | If more than one instance of the same handler class 
> is configured, you must explicitly
>                    | set its name to something other than its default name 
> (typically the simple class name).
>                    -->
>                 <entry key-ref="proxyAuthenticationHandler" 
> value-ref="proxyPrincipalResolver" />
>                 <entry key-ref="openIDAuthenticationHandler" 
> value-ref="openIDPrincipalResolver" />
>                 <entry key-ref="ldapAuthenticationHandler"><null/></entry>
>        <!--     <entry key-ref="spnegoAuthenticationHandler" 
> value-ref="ldapPrincipalResolver" />-->
>             </map>
>         </constructor-arg>
>
>         <!-- Uncomment the metadata populator to allow clearpass to 
> capture and cache the password
>              This switch effectively will turn on clearpass.
>         <property name="authenticationMetaDataPopulators">
>            <util:list>
>               <bean 
> class="org.jasig.cas.extension.clearpass.CacheCredentialsMetaDataPopulator"
>                     c:credentialCache-ref="encryptedMap" />
>            </util:list>
>         </property>
>         -->
>
>         <!--
>            | Defines the security policy around authentication. Some 
> alternative policies that ship with CAS:
>            |
>            | * NotPreventedAuthenticationPolicy - all credential must 
> either pass or fail authentication
>            | * AllAuthenticationPolicy - all presented credential must be 
> authenticated successfully
>            | * RequiredHandlerAuthenticationPolicy - specifies a handler 
> that must authenticate its credential to pass
>            -->
>         <property name="authenticationPolicy">
>             <bean 
> class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
>         </property>
>     </bean>
>
>     <!-- Required for proxy ticket mechanism. -->
>     <bean id="proxyAuthenticationHandler"
>           
> class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
>           p:httpClient-ref="httpClient" />
>
>     <!--
>        | TODO: Replace this component with one suitable for your 
> enviroment.
>        |
>        | This component provides authentication for the kind of credential 
> used in your environment. In most cases
>        | credential is a username/password pair that lives in a system of 
> record like an LDAP directory.
>        | The most common authentication handler beans:
>        |
>        | * org.jasig.cas.authentication.LdapAuthenticationHandler
>        | * org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler
>        | * 
> org.jasig.cas.adaptors.x509.authentication.handler.support.X509CredentialsAuthenticationHandler
>        | * 
> org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler
>        -->
>        <!-- 
>     <bean id="primaryAuthenticationHandler"
>           
> class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
>         <property name="users">
>             <map>
>                 <entry key="casuser" value="Mellon"/>
>             </map>
>         </property>
>     </bean>
>     -->
>
>
>     <!-- Required for proxy ticket mechanism -->
>     <bean id="proxyPrincipalResolver"
>           
> class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" />   
>           
>   
>    
>   
>
>     <!-- 
>     Sample, in-memory data store for the ServiceRegistry. A real 
> implementation
>     would probably want to replace this with the JPA-backed 
> ServiceRegistry DAO
>     The name of this bean should remain "serviceRegistryDao".
>     +-->
>     <bean id="serviceRegistryDao" 
> class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"
>             p:registeredServices-ref="registeredServicesList" />
>
>     <util:list id="registeredServicesList">
>         <bean class="org.jasig.cas.services.RegexRegisteredService"
>               p:id="0" p:name="HTTP and IMAP" p:description="Allows 
> HTTP(S) and IMAP(S) protocols"
>               p:serviceId="^(https?|imaps?)://.*" 
> p:evaluationOrder="10000001" />
>         <!--
>         Use the following definition instead of the above to further 
> restrict access
>         to services within your domain (including sub domains).
>         Note that example.com must be replaced with the domain you wish to 
> permit.
>         This example also demonstrates the configuration of an attribute 
> filter
>         that only allows for attributes whose length is 3.
>         -->
>         <!--
>         <bean class="org.jasig.cas.services.RegexRegisteredService">
>             <property name="id" value="1" />
>             <property name="name" value="HTTP and IMAP on example.com" />
>             <property name="description" value="Allows HTTP(S) and IMAP(S) 
> protocols on example.com" />
>             <property name="serviceId" 
> value="^(https?|imaps?)://([A-Za-z0-9_-]+\.)*example\.com/.*" />
>             <property name="evaluationOrder" value="0" />
>             <property name="attributeFilter">
>               <bean 
> class="org.jasig.cas.services.support.RegisteredServiceRegexAttributeFilter" 
> c:regex="^\w{3}$" /> 
>             </property>
>         </bean>
>         -->
>     </util:list>
>     
>     <bean id="auditTrailManager" 
> class="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager" />
>     
>     <bean id="healthCheckMonitor" 
> class="org.jasig.cas.monitor.HealthCheckMonitor" 
> p:monitors-ref="monitorsList" />
>   
>     <util:list id="monitorsList">
>       <bean class="org.jasig.cas.monitor.MemoryMonitor" 
> p:freeMemoryWarnThreshold="10" />
>       <!--
>         NOTE
>         The following ticket registries support SessionMonitor:
>           * DefaultTicketRegistry
>           * JpaTicketRegistry
>         Remove this monitor if you use an unsupported registry.
>       -->
>       <bean class="org.jasig.cas.monitor.SessionMonitor"
>           p:ticketRegistry-ref="ticketRegistry"
>           p:serviceTicketCountWarnThreshold="5000"
>           p:sessionCountWarnThreshold="100000" />
>     </util:list>
> </beans>
>
>
-- 
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