NullPointerException in getURLScheme()

Scott Battaglia scott.battaglia at gmail.com
Thu Jul 17 13:55:46 EDT 2008


is your {$hostname} being resolved correctly?  Should it be ${hostname} ?
-Scott

-Scott Battaglia
PGP Public Key Id: 0x383733AA
LinkedIn: http://www.linkedin.com/in/scottbattaglia

On Thu, Jul 17, 2008 at 1:45 PM, Phil Snyder <psnyder at nextwave.com> wrote:

>  Hi guys… I've been getting this error and for the life of me I don't know
> what to do to fix it. L
>
>
>
>
>
> java.lang.NullPointerException
>
>         javax.naming.InitialContext.getURLScheme(Unknown Source)
>
>         javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
>
>         javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(Unknown Source)
>
>         javax.naming.directory.InitialDirContext.search(Unknown Source)
>
>         org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler$1.executeSearch(BindLdapAuthenticationHandler.java:70)
>
>         org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:272)
>
>         org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:338)
>
>         org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler.authenticateUsernamePasswordInternal(BindLdapAuthenticationHandler.java:66)
>
>         org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.doAuthentication(AbstractUsernamePasswordAuthenticationHandler.java:56)
>
>         org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:71)
>
>         org.jasig.cas.authentication.AuthenticationManagerImpl.authenticate(AuthenticationManagerImpl.java:88)
>
>         org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket(CentralAuthenticationServiceImpl.java:411)
>
>         org.jasig.cas.web.flow.AuthenticationViaFormAction.submit(AuthenticationViaFormAction.java:107)
>
>         sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>         sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>
>         sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>
>         java.lang.reflect.Method.invoke(Unknown Source)
>
>         org.springframework.webflow.util.DispatchMethodInvoker.invoke(DispatchMethodInvoker.java:99)
>
>         org.springframework.webflow.action.MultiAction.doExecute(MultiAction.java:133)
>
>         org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:192)
>
>         org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:146)
>
>         org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:59)
>
>         org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:156)
>
>         org.springframework.webflow.engine.State.enter(State.java:191)
>
>         org.springframework.webflow.engine.Transition.execute(Transition.java:212)
>
>         org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
>
>         org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
>
>         org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
>
>         org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:161)
>
>         org.springframework.webflow.engine.State.enter(State.java:191)
>
>         org.springframework.webflow.engine.Transition.execute(Transition.java:212)
>
>         org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
>
>         org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
>
>         org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
>
>         org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent(FlowExecutionImpl.java:202)
>
>         org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:222)
>
>         org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111)
>
>         org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165)
>
>         org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
>
>         org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
>
>         org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
>
>         org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
>
>         org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
>
>         org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
>
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>
>         org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
>
>         org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48)
>
>         org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
>
>
>
>
>
>
>
> I have my deployerConfigContext.xml setup correctly as far as I can tell:
>
>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--
>
>             | deployerConfigContext.xml centralizes into one file some of
> the declarative configuration that
>
>             | all CAS deployers will need to modify.
>
>             |
>
>             | This file declares some of the Spring-managed JavaBeans that
> make up a CAS deployment.
>
>             | The beans declared in this file are instantiated at context
> initialization time by the Spring
>
>             | ContextLoaderListener declared in web.xml.  It finds this
> file because this
>
>             | file is among those declared in the context parameter
> "contextConfigLocation".
>
>             |
>
>             | By far the most common change you will need to make in this
> file is to change the last bean
>
>             | declaration to replace the default
> SimpleTestUsernamePasswordAuthenticationHandler with
>
>             | one implementing your approach for authenticating usernames
> and passwords.
>
>             +-->
>
> <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"
>
>        xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
>
>             <!--
>
>                         | This bean declares our AuthenticationManager.
> The CentralAuthenticationService service bean
>
>                         | declared in applicationContext.xml picks up this
> AuthenticationManager by reference to its id,
>
>                         | "authenticationManager".  Most deployers will be
> able to use the default AuthenticationManager
>
>                         | implementation and so do not need to change the
> class of this bean.  We include the whole
>
>                         | AuthenticationManager here in the
> userConfigContext.xml so that you can see the things you will
>
>                         | need to change in context.
>
>                         +-->
>
>             <bean id="authenticationManager"
>
>
> class="org.jasig.cas.authentication.AuthenticationManagerImpl">
>
>                         <!--
>
>                                     | This is the List of
> CredentialToPrincipalResolvers that identify what Principal is trying to
> authenticate.
>
>                                     | The AuthenticationManagerImpl
> considers them in order, finding a CredentialToPrincipalResolver which
>
>                                     | supports the presented credentials.
>
>                                     |
>
>                                     | AuthenticationManagerImpl uses these
> resolvers for two purposes.  First, it uses them to identify the Principal
>
>                                     | attempting to authenticate to CAS
> /login .  In the default configuration, it is the
> DefaultCredentialsToPrincipalResolver
>
>                                     | that fills this role.  If you are
> using some other kind of credentials than UsernamePasswordCredentials, you
> will need to replace
>
>                                     | DefaultCredentialsToPrincipalResolver
> with a CredentialsToPrincipalResolver that supports the credentials you are
>
>                                     | using.
>
>                                     |
>
>                                     | Second, AuthenticationManagerImpl
> uses these resolvers to identify a service requesting a proxy granting
> ticket.
>
>                                     | In the default configuration, it is
> the HttpBasedServiceCredentialsToPrincipalResolver that serves this purpose.
>
>
>                                     | You will need to change this list if
> you are identifying services by something more or other than their callback
> URL.
>
>                                     +-->
>
>                         <property name="credentialsToPrincipalResolvers">
>
>                                     <list>
>
>                                                 <!--
>
>                                                             |
> UsernamePasswordCredentialsToPrincipalResolver supports the
> UsernamePasswordCredentials that we use for /login
>
>                                                             | by default
> and produces SimplePrincipal instances conveying the username from the
> credentials.
>
>                                                             |
>
>                                                             | If you've
> changed your LoginFormAction to use credentials other than
> UsernamePasswordCredentials then you will also
>
>                                                             | need to
> change this bean declaration (or add additional declarations) to declare a
> CredentialsToPrincipalResolver that supports the
>
>                                                             | Credentials
> you are using.
>
>                                                             +-->
>
>                                                 <bean
>
>
> class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver"
> />
>
>                                                 <!--
>
>                                                             |
> HttpBasedServiceCredentialsToPrincipalResolver supports
> HttpBasedCredentials.  It supports the CAS 2.0 approach of
>
>                                                             |
> authenticating services by SSL callback, extracting the callback URL from
> the Credentials and representing it as a
>
>                                                             | SimpleService
> identified by that callback URL.
>
>                                                             |
>
>                                                             | If you are
> representing services by something more or other than an HTTPS URL whereat
> they are able to
>
>                                                             | receive a
> proxy callback, you will need to change this bean declaration (or add
> additional declarations).
>
>                                                             +-->
>
>                                                 <bean
>
>
> class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver"
> />
>
>                                     </list>
>
>                         </property>
>
>
>
>
>
>                         <!--
>
>                                     | Whereas
> CredentialsToPrincipalResolvers identify who it is some Credentials might
> authenticate,
>
>                                     | AuthenticationHandlers actually
> authenticate credentials.  Here we declare the AuthenticationHandlers that
>
>                                     | authenticate the Principals that the
> CredentialsToPrincipalResolvers identified.  CAS will try these handlers in
> turn
>
>                                     | until it finds one that both supports
> the Credentials presented and succeeds in authenticating.
>
>                                     +-->
>
>                         <property name="authenticationHandlers">
>
>                                     <list>
>
>                                                 <!--
>
>                                                             | This is the
> authentication handler that authenticates services by means of callback via
> SSL, thereby validating
>
>                                                             | a server side
> SSL certificate.
>
>                                                             +-->
>
>                                                 <bean
> class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
>
>
> p:httpClient-ref="httpClient" />
>
>                                                 <!--
>
>                                                             | This is the
> authentication handler declaration that every CAS deployer will need to
> change before deploying CAS
>
>                                                             | into
> production.  The default SimpleTestUsernamePasswordAuthenticationHandler
> authenticates UsernamePasswordCredentials
>
>                                                             | where the
> username equals the password.  You will need to replace this with an
> AuthenticationHandler that implements your
>
>                                                             | local
> authentication strategy.  You might accomplish this by coding a new such
> handler and declaring
>
>                                                             |
> edu.someschool.its.cas.MySpecialHandler here, or you might use one of the
> handlers provided in the adaptors modules.
>
>                                                             +-->
>
> <!-- -->
>
>                                                 <bean
>
>
> class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"
> />
>
> <!--
>
>                                                 <bean
> class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler" >
>
>                                                             <property
> name="filter" value="sAMAccountName=%u" />
>
>                                                             <property
> name="contextSource" ref="contextSource" />
>
>                                                 </bean>
>
>                                                 <!--
>
>                                                 <bean
> class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler" >
>
>                                                             <property
> name="filter" value="sAMAccountName=%u" />
>
>                                                             <property
> name="contextSource" ref="contextSource" />
>
>                                                 </bean>
>
>                                                 -->
>
>                                     </list>
>
>                         </property>
>
>             </bean>
>
>
>
>
>
>
>
>
>
>             <!--
>
>             This bean defines the security roles for the Services
> Management application.  Simple deployments can use the in-memory version.
>
>             More robust deployments will want to use another option, such
> as the Jdbc version.
>
>
>
>             The name of this should remain "userDetailsService" in order
> for Acegi to find it.
>
>
>
>             To use this, you should add an entry similar to the following
> between the two value tags:
>
>             battags=notused,ROLE_ADMIN
>
>
>
>             where battags is the username you want to grant access to.  You
> can put one entry per line.
>
>              -->
>
>             <bean id="userDetailsService"
> class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
>
>                         <property name="userMap">
>
>                                     <value>
>
>
>
>                             </value>
>
>                         </property>
>
>             </bean>
>
>
>
>             <!--
>
>             Bean that defines the attributes that a service may return.
> This example uses the Stub/Mock version.  A real implementation
>
>             may go against a database or LDAP server.  The id should remain
> "attributeRepository" though.
>
>              -->
>
>             <bean id="attributeRepository"
>
>
> class="org.jasig.services.persondir.support.StubPersonAttributeDao">
>
>                         <property name="backingMap">
>
>                                     <map>
>
>                                                 <entry key="uid"
> value="uid" />
>
>                                                 <entry
> key="eduPersonAffiliation" value="eduPersonAffiliation" />
>
>                                                 <entry
> key="groupMembership" value="groupMembership" />
>
>                                     </map>
>
>                         </property>
>
>             </bean>
>
>
>
>             <!--
>
>             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" />
>
>
>
>
>
>
>
>
>
>             <!--
>
>             This is supposed to define how / where to connect to the AD
> server
>
>             -->
>
>             <bean id="contextSource"
> class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">
>
>                         <property name="urls">
>
>                                     <list>
>
>
> <value>ldap://{$hostname}:3268/</value>
>
>                                     </list>
>
>                         </property>
>
>                         <property name="userName" value="{$username}"/>
>
>                         <property name="password" value="{$password}"/>
>
>                         <property name="baseEnvironmentProperties">
>
>                                     <map>
>
>                                                 <entry>
>
>                                                             <key>
>
>
> <value>java.naming.security.authentication</value>
>
>                                                             </key>
>
>
> <value>simple</value>
>
>                                                 </entry>
>
>                                     </map>
>
>                         </property>
>
>             </bean>
>
>
>
>
>
>             <bean
> class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
>
>                            <property name="filter"
> value="sAMAccountName=%u" />
>
>                            <property name="searchBase"
> value="OU=Users,OU=Accounts,OU=CA1,OU=Offices,OU=Corporate,DC=nw,DC=net" />
>
>                            <property name="contextSource"
> ref="contextSource" />
>
>                            <property name="ignorePartialResultException"
> value="yes" />
>
>             </bean>
>
> </beans>
>
>
>
>
>
>
>
>
>
>
>
>
>
> I've tried CAS 3.2.1 & 3.2.1.1 and both give me the same error. Can anyone
> help? I read somewhere that it might have to do with the searchBase not
> getting passed in correctly or something, but that didn't reall
>
> _______________________________________________
> Yale CAS mailing list
> cas at tp.its.yale.edu
> http://tp.its.yale.edu/mailman/listinfo/cas
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://tp.its.yale.edu/pipermail/cas/attachments/20080717/943762a4/attachment.html 


More information about the cas mailing list