Spring security and oauth2 authentication problem The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceWhat's the difference between @Component, @Repository & @Service annotations in Spring?Spring Security with Openid and Database IntegrationSpring Security OpenID access login page hidden form input value using CustomOpenIDAuthenticationFilterSpring Security with OpenIDAuthenticationFilter problemJava Spring: getting error “ Unknown property sub-element: <util:constant>”Spring Security OAuth2 pure resource serverSpring security logout - add a message only when logout triggered from a logged in userOAuth schema not validHow to Protect a Resource using Spring Security OAuth2 and MITREID Connect Introspect?Spring Security - Error creating bean with name 'org.springframework.security.filterChains'

Simulate round-robin tournament draw

Writing a T-SQL stored procedure to receive 4 numbers and insert them into a table

What helicopter has the most rotor blades?

Israeli soda type drink

How to keep bees out of canned beverages?

What was Apollo 13's "Little Jolt" after MECO?

Will I be more secure with my own router behind my ISP's router?

Like totally amazing interchangeable sister outfit accessory swapping or whatever

Bright yellow or light yellow?

Preserving file and folder permissions with rsync

Why is arima in R one time step off?

`FindRoot [ ]`::jsing: Encountered a singular Jacobian at a point...WHY

Why did Israel vote against lifting the American embargo on Cuba?

What does こした mean?

Variable does not exist: sObjectType (Task.sObjectType)

What is the evidence that custom checks in Northern Ireland are going to result in violence?

What is the ongoing value of the Kanban board to the developers as opposed to management

What's the difference between using dependency injection with a container and using a service locator?

/bin/ls sorts differently than just ls

false 'Security alert' from Google - every login generates mails from 'no-reply@accounts.google.com'

What does the black goddess statue do and what is it?

SQL Server placement of master database files vs resource database files

Feather, the Redeemed and Dire Fleet Daredevil

Is it OK if I do not take the receipt in Germany?



Spring security and oauth2 authentication problem



The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceWhat's the difference between @Component, @Repository & @Service annotations in Spring?Spring Security with Openid and Database IntegrationSpring Security OpenID access login page hidden form input value using CustomOpenIDAuthenticationFilterSpring Security with OpenIDAuthenticationFilter problemJava Spring: getting error “ Unknown property sub-element: <util:constant>”Spring Security OAuth2 pure resource serverSpring security logout - add a message only when logout triggered from a logged in userOAuth schema not validHow to Protect a Resource using Spring Security OAuth2 and MITREID Connect Introspect?Spring Security - Error creating bean with name 'org.springframework.security.filterChains'



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















My problem is if I use org.springframework.security.authentication.ProviderManager for my autheticationManager in applicationContext-security.xml then I unable to authenticate with oauth2. If I switch back to authentication-manager id="authenticationManager" version then it works fine.



I have to keep my REST service and oauth2 security settings in separate files. (Sometimes we don't need for REST service at all).



spring-security 4.2.9.RELEASE
spring-security-oauth2 2.3.4



web.xml snippet:



<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/rest-dispatcher-servlet.xml
/WEB-INF/rest-dispatcher-servlet-security.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>


rest-dispatcher-servlet-security



 <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:oauth="http://www.springframework.org/schema/security/oauth2"
xmlns:secdp="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/security/oauth2
http://www.springframework.org/schema/security/spring-security-oauth2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">



<!-- Definition of the Authentication Service -->

<secdp:http use-expressions="false" pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
<intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY"/>
<anonymous enabled="false"/>
<secdp:http-basic entry-point-ref="clientAuthenticationEntryPoint"/>
<!-- include this only if you need to authenticate clients via request parameters -->
<custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER"/>
<access-denied-handler ref="oauthAccessDeniedHandler"/>
<secdp:csrf disabled="true"/>
</secdp:http>

<!-- Protected resources -->
<secdp:http use-expressions="false" pattern="/ws/api/**"
create-session="never"
entry-point-ref="oauthAuthenticationEntryPoint"
access-decision-manager-ref="accessDecisionManager"
xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false"/>
<intercept-url pattern="/ws/api/**"
access="ROLE_USER"/>
<custom-filter ref="resourceServerFilter"
before="PRE_AUTH_FILTER"/>
<access-denied-handler
ref="oauthAccessDeniedHandler"/>
<secdp:csrf disabled="true"/>
</secdp:http>


<bean id="oauthAuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="dstest"/>
</bean>

<bean id="clientAuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="dstest/client"/>
<property name="typeName" value="Basic"/>
</bean>

<bean id="oauthAccessDeniedHandler"
class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/>

<bean id="clientCredentialsTokenEndpointFilter"
class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter">
<property name="authenticationManager" ref="clientAuthenticationManager"/>

</bean>

<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"
xmlns="http://www.springframework.org/schema/beans">
<constructor-arg>
<list>
<bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter"/>
<bean class="org.springframework.security.access.vote.RoleVoter"/>
<bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
</list>
</constructor-arg>
</bean>

<authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
<authentication-provider user-service-ref="clientDetailsUserService"/>
</authentication-manager>

<bean id="clientDetailsUserService"
class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
<constructor-arg ref="clientDetails"/>
</bean>


<!-- Token Store -->
<bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore"/>

<bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
<property name="tokenStore" ref="tokenStore"/>
<property name="supportRefreshToken" value="true"/>
<property name="clientDetailsService" ref="clientDetails"/>
</bean>

<bean id="userApprovalHandler"
class="org.springframework.security.oauth2.provider.approval.TokenStoreUserApprovalHandler">
<property name="tokenStore" ref="tokenStore"/>
<property name="requestFactory" ref="oAuth2RequestFactory"/>

</bean>

<!-- Token management -->
<oauth:authorization-server client-details-service-ref="clientDetails" token-services-ref="tokenServices"
user-approval-handler-ref="userApprovalHandler" >

<oauth:authorization-code/>
<oauth:implicit/>
<oauth:refresh-token/>
<oauth:client-credentials/>
<oauth:password/>


</oauth:authorization-server>

<oauth:resource-server id="resourceServerFilter"
resource-id="dstest"
token-services-ref="tokenServices"/>

<!-- Client Definition -->
<oauth:client-details-service id="clientDetails">
<oauth:client client-id="xxxxxxxxx"
authorized-grant-types="password,authorization_code,refresh_token,implicit,redirect"
authorities="ROLE_USER, ROLE_TRUSTED_USER"
redirect-uri="/"
scope="read,write,trust"
access-token-validity="2678400"
refresh-token-validity="15552000" />

</oauth:client-details-service>

<bean class="org.springframework.security.oauth2.provider.request.DefaultOAuth2RequestFactory" id="oAuth2RequestFactory">
<constructor-arg ref="clientDetails" />
</bean>



</beans>


applicationContext-security.xml snippet



<!-- works -->
<authentication-manager id="authenticationManager" xmlns="http://www.springframework.org/schema/security">
<authentication-provider user-service-ref="CustomUserDetailsService">
<password-encoder ref="passwordEncoder"/>
</authentication-provider>
</authentication-manager>

<!-- does not work -->
<bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
<constructor-arg>
<list>
<ref bean="daoAuthenticationProvider"/>
</list>
</constructor-arg>
</bean>

<bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService">
<ref bean="CustomUserDetailsService"/>
</property>
<property name="passwordEncoder">
<ref bean="passwordEncoder"/>
</property>
<property name="hideUserNotFoundExceptions">
<value>false</value>
</property>
</bean>








share




























    0















    My problem is if I use org.springframework.security.authentication.ProviderManager for my autheticationManager in applicationContext-security.xml then I unable to authenticate with oauth2. If I switch back to authentication-manager id="authenticationManager" version then it works fine.



    I have to keep my REST service and oauth2 security settings in separate files. (Sometimes we don't need for REST service at all).



    spring-security 4.2.9.RELEASE
    spring-security-oauth2 2.3.4



    web.xml snippet:



    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/applicationContext.xml
    /WEB-INF/rest-dispatcher-servlet.xml
    /WEB-INF/rest-dispatcher-servlet-security.xml
    /WEB-INF/applicationContext-security.xml
    </param-value>
    </context-param>


    rest-dispatcher-servlet-security



     <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:oauth="http://www.springframework.org/schema/security/oauth2"
    xmlns:secdp="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security.xsd
    http://www.springframework.org/schema/security/oauth2
    http://www.springframework.org/schema/security/spring-security-oauth2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.3.xsd">



    <!-- Definition of the Authentication Service -->

    <secdp:http use-expressions="false" pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
    <intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY"/>
    <anonymous enabled="false"/>
    <secdp:http-basic entry-point-ref="clientAuthenticationEntryPoint"/>
    <!-- include this only if you need to authenticate clients via request parameters -->
    <custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER"/>
    <access-denied-handler ref="oauthAccessDeniedHandler"/>
    <secdp:csrf disabled="true"/>
    </secdp:http>

    <!-- Protected resources -->
    <secdp:http use-expressions="false" pattern="/ws/api/**"
    create-session="never"
    entry-point-ref="oauthAuthenticationEntryPoint"
    access-decision-manager-ref="accessDecisionManager"
    xmlns="http://www.springframework.org/schema/security">
    <anonymous enabled="false"/>
    <intercept-url pattern="/ws/api/**"
    access="ROLE_USER"/>
    <custom-filter ref="resourceServerFilter"
    before="PRE_AUTH_FILTER"/>
    <access-denied-handler
    ref="oauthAccessDeniedHandler"/>
    <secdp:csrf disabled="true"/>
    </secdp:http>


    <bean id="oauthAuthenticationEntryPoint"
    class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
    <property name="realmName" value="dstest"/>
    </bean>

    <bean id="clientAuthenticationEntryPoint"
    class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
    <property name="realmName" value="dstest/client"/>
    <property name="typeName" value="Basic"/>
    </bean>

    <bean id="oauthAccessDeniedHandler"
    class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/>

    <bean id="clientCredentialsTokenEndpointFilter"
    class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter">
    <property name="authenticationManager" ref="clientAuthenticationManager"/>

    </bean>

    <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"
    xmlns="http://www.springframework.org/schema/beans">
    <constructor-arg>
    <list>
    <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter"/>
    <bean class="org.springframework.security.access.vote.RoleVoter"/>
    <bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
    </list>
    </constructor-arg>
    </bean>

    <authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
    <authentication-provider user-service-ref="clientDetailsUserService"/>
    </authentication-manager>

    <bean id="clientDetailsUserService"
    class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
    <constructor-arg ref="clientDetails"/>
    </bean>


    <!-- Token Store -->
    <bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore"/>

    <bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
    <property name="tokenStore" ref="tokenStore"/>
    <property name="supportRefreshToken" value="true"/>
    <property name="clientDetailsService" ref="clientDetails"/>
    </bean>

    <bean id="userApprovalHandler"
    class="org.springframework.security.oauth2.provider.approval.TokenStoreUserApprovalHandler">
    <property name="tokenStore" ref="tokenStore"/>
    <property name="requestFactory" ref="oAuth2RequestFactory"/>

    </bean>

    <!-- Token management -->
    <oauth:authorization-server client-details-service-ref="clientDetails" token-services-ref="tokenServices"
    user-approval-handler-ref="userApprovalHandler" >

    <oauth:authorization-code/>
    <oauth:implicit/>
    <oauth:refresh-token/>
    <oauth:client-credentials/>
    <oauth:password/>


    </oauth:authorization-server>

    <oauth:resource-server id="resourceServerFilter"
    resource-id="dstest"
    token-services-ref="tokenServices"/>

    <!-- Client Definition -->
    <oauth:client-details-service id="clientDetails">
    <oauth:client client-id="xxxxxxxxx"
    authorized-grant-types="password,authorization_code,refresh_token,implicit,redirect"
    authorities="ROLE_USER, ROLE_TRUSTED_USER"
    redirect-uri="/"
    scope="read,write,trust"
    access-token-validity="2678400"
    refresh-token-validity="15552000" />

    </oauth:client-details-service>

    <bean class="org.springframework.security.oauth2.provider.request.DefaultOAuth2RequestFactory" id="oAuth2RequestFactory">
    <constructor-arg ref="clientDetails" />
    </bean>



    </beans>


    applicationContext-security.xml snippet



    <!-- works -->
    <authentication-manager id="authenticationManager" xmlns="http://www.springframework.org/schema/security">
    <authentication-provider user-service-ref="CustomUserDetailsService">
    <password-encoder ref="passwordEncoder"/>
    </authentication-provider>
    </authentication-manager>

    <!-- does not work -->
    <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
    <constructor-arg>
    <list>
    <ref bean="daoAuthenticationProvider"/>
    </list>
    </constructor-arg>
    </bean>

    <bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <property name="userDetailsService">
    <ref bean="CustomUserDetailsService"/>
    </property>
    <property name="passwordEncoder">
    <ref bean="passwordEncoder"/>
    </property>
    <property name="hideUserNotFoundExceptions">
    <value>false</value>
    </property>
    </bean>








    share
























      0












      0








      0








      My problem is if I use org.springframework.security.authentication.ProviderManager for my autheticationManager in applicationContext-security.xml then I unable to authenticate with oauth2. If I switch back to authentication-manager id="authenticationManager" version then it works fine.



      I have to keep my REST service and oauth2 security settings in separate files. (Sometimes we don't need for REST service at all).



      spring-security 4.2.9.RELEASE
      spring-security-oauth2 2.3.4



      web.xml snippet:



      <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
      /WEB-INF/applicationContext.xml
      /WEB-INF/rest-dispatcher-servlet.xml
      /WEB-INF/rest-dispatcher-servlet-security.xml
      /WEB-INF/applicationContext-security.xml
      </param-value>
      </context-param>


      rest-dispatcher-servlet-security



       <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:oauth="http://www.springframework.org/schema/security/oauth2"
      xmlns:secdp="http://www.springframework.org/schema/security"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://www.springframework.org/schema/security
      http://www.springframework.org/schema/security/spring-security.xsd
      http://www.springframework.org/schema/security/oauth2
      http://www.springframework.org/schema/security/spring-security-oauth2.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.3.xsd">



      <!-- Definition of the Authentication Service -->

      <secdp:http use-expressions="false" pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
      <intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY"/>
      <anonymous enabled="false"/>
      <secdp:http-basic entry-point-ref="clientAuthenticationEntryPoint"/>
      <!-- include this only if you need to authenticate clients via request parameters -->
      <custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER"/>
      <access-denied-handler ref="oauthAccessDeniedHandler"/>
      <secdp:csrf disabled="true"/>
      </secdp:http>

      <!-- Protected resources -->
      <secdp:http use-expressions="false" pattern="/ws/api/**"
      create-session="never"
      entry-point-ref="oauthAuthenticationEntryPoint"
      access-decision-manager-ref="accessDecisionManager"
      xmlns="http://www.springframework.org/schema/security">
      <anonymous enabled="false"/>
      <intercept-url pattern="/ws/api/**"
      access="ROLE_USER"/>
      <custom-filter ref="resourceServerFilter"
      before="PRE_AUTH_FILTER"/>
      <access-denied-handler
      ref="oauthAccessDeniedHandler"/>
      <secdp:csrf disabled="true"/>
      </secdp:http>


      <bean id="oauthAuthenticationEntryPoint"
      class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
      <property name="realmName" value="dstest"/>
      </bean>

      <bean id="clientAuthenticationEntryPoint"
      class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
      <property name="realmName" value="dstest/client"/>
      <property name="typeName" value="Basic"/>
      </bean>

      <bean id="oauthAccessDeniedHandler"
      class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/>

      <bean id="clientCredentialsTokenEndpointFilter"
      class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter">
      <property name="authenticationManager" ref="clientAuthenticationManager"/>

      </bean>

      <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"
      xmlns="http://www.springframework.org/schema/beans">
      <constructor-arg>
      <list>
      <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter"/>
      <bean class="org.springframework.security.access.vote.RoleVoter"/>
      <bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
      </list>
      </constructor-arg>
      </bean>

      <authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
      <authentication-provider user-service-ref="clientDetailsUserService"/>
      </authentication-manager>

      <bean id="clientDetailsUserService"
      class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
      <constructor-arg ref="clientDetails"/>
      </bean>


      <!-- Token Store -->
      <bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore"/>

      <bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
      <property name="tokenStore" ref="tokenStore"/>
      <property name="supportRefreshToken" value="true"/>
      <property name="clientDetailsService" ref="clientDetails"/>
      </bean>

      <bean id="userApprovalHandler"
      class="org.springframework.security.oauth2.provider.approval.TokenStoreUserApprovalHandler">
      <property name="tokenStore" ref="tokenStore"/>
      <property name="requestFactory" ref="oAuth2RequestFactory"/>

      </bean>

      <!-- Token management -->
      <oauth:authorization-server client-details-service-ref="clientDetails" token-services-ref="tokenServices"
      user-approval-handler-ref="userApprovalHandler" >

      <oauth:authorization-code/>
      <oauth:implicit/>
      <oauth:refresh-token/>
      <oauth:client-credentials/>
      <oauth:password/>


      </oauth:authorization-server>

      <oauth:resource-server id="resourceServerFilter"
      resource-id="dstest"
      token-services-ref="tokenServices"/>

      <!-- Client Definition -->
      <oauth:client-details-service id="clientDetails">
      <oauth:client client-id="xxxxxxxxx"
      authorized-grant-types="password,authorization_code,refresh_token,implicit,redirect"
      authorities="ROLE_USER, ROLE_TRUSTED_USER"
      redirect-uri="/"
      scope="read,write,trust"
      access-token-validity="2678400"
      refresh-token-validity="15552000" />

      </oauth:client-details-service>

      <bean class="org.springframework.security.oauth2.provider.request.DefaultOAuth2RequestFactory" id="oAuth2RequestFactory">
      <constructor-arg ref="clientDetails" />
      </bean>



      </beans>


      applicationContext-security.xml snippet



      <!-- works -->
      <authentication-manager id="authenticationManager" xmlns="http://www.springframework.org/schema/security">
      <authentication-provider user-service-ref="CustomUserDetailsService">
      <password-encoder ref="passwordEncoder"/>
      </authentication-provider>
      </authentication-manager>

      <!-- does not work -->
      <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
      <constructor-arg>
      <list>
      <ref bean="daoAuthenticationProvider"/>
      </list>
      </constructor-arg>
      </bean>

      <bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
      <property name="userDetailsService">
      <ref bean="CustomUserDetailsService"/>
      </property>
      <property name="passwordEncoder">
      <ref bean="passwordEncoder"/>
      </property>
      <property name="hideUserNotFoundExceptions">
      <value>false</value>
      </property>
      </bean>








      share














      My problem is if I use org.springframework.security.authentication.ProviderManager for my autheticationManager in applicationContext-security.xml then I unable to authenticate with oauth2. If I switch back to authentication-manager id="authenticationManager" version then it works fine.



      I have to keep my REST service and oauth2 security settings in separate files. (Sometimes we don't need for REST service at all).



      spring-security 4.2.9.RELEASE
      spring-security-oauth2 2.3.4



      web.xml snippet:



      <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
      /WEB-INF/applicationContext.xml
      /WEB-INF/rest-dispatcher-servlet.xml
      /WEB-INF/rest-dispatcher-servlet-security.xml
      /WEB-INF/applicationContext-security.xml
      </param-value>
      </context-param>


      rest-dispatcher-servlet-security



       <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:oauth="http://www.springframework.org/schema/security/oauth2"
      xmlns:secdp="http://www.springframework.org/schema/security"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://www.springframework.org/schema/security
      http://www.springframework.org/schema/security/spring-security.xsd
      http://www.springframework.org/schema/security/oauth2
      http://www.springframework.org/schema/security/spring-security-oauth2.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.3.xsd">



      <!-- Definition of the Authentication Service -->

      <secdp:http use-expressions="false" pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
      <intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY"/>
      <anonymous enabled="false"/>
      <secdp:http-basic entry-point-ref="clientAuthenticationEntryPoint"/>
      <!-- include this only if you need to authenticate clients via request parameters -->
      <custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER"/>
      <access-denied-handler ref="oauthAccessDeniedHandler"/>
      <secdp:csrf disabled="true"/>
      </secdp:http>

      <!-- Protected resources -->
      <secdp:http use-expressions="false" pattern="/ws/api/**"
      create-session="never"
      entry-point-ref="oauthAuthenticationEntryPoint"
      access-decision-manager-ref="accessDecisionManager"
      xmlns="http://www.springframework.org/schema/security">
      <anonymous enabled="false"/>
      <intercept-url pattern="/ws/api/**"
      access="ROLE_USER"/>
      <custom-filter ref="resourceServerFilter"
      before="PRE_AUTH_FILTER"/>
      <access-denied-handler
      ref="oauthAccessDeniedHandler"/>
      <secdp:csrf disabled="true"/>
      </secdp:http>


      <bean id="oauthAuthenticationEntryPoint"
      class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
      <property name="realmName" value="dstest"/>
      </bean>

      <bean id="clientAuthenticationEntryPoint"
      class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
      <property name="realmName" value="dstest/client"/>
      <property name="typeName" value="Basic"/>
      </bean>

      <bean id="oauthAccessDeniedHandler"
      class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/>

      <bean id="clientCredentialsTokenEndpointFilter"
      class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter">
      <property name="authenticationManager" ref="clientAuthenticationManager"/>

      </bean>

      <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"
      xmlns="http://www.springframework.org/schema/beans">
      <constructor-arg>
      <list>
      <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter"/>
      <bean class="org.springframework.security.access.vote.RoleVoter"/>
      <bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
      </list>
      </constructor-arg>
      </bean>

      <authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
      <authentication-provider user-service-ref="clientDetailsUserService"/>
      </authentication-manager>

      <bean id="clientDetailsUserService"
      class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
      <constructor-arg ref="clientDetails"/>
      </bean>


      <!-- Token Store -->
      <bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore"/>

      <bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
      <property name="tokenStore" ref="tokenStore"/>
      <property name="supportRefreshToken" value="true"/>
      <property name="clientDetailsService" ref="clientDetails"/>
      </bean>

      <bean id="userApprovalHandler"
      class="org.springframework.security.oauth2.provider.approval.TokenStoreUserApprovalHandler">
      <property name="tokenStore" ref="tokenStore"/>
      <property name="requestFactory" ref="oAuth2RequestFactory"/>

      </bean>

      <!-- Token management -->
      <oauth:authorization-server client-details-service-ref="clientDetails" token-services-ref="tokenServices"
      user-approval-handler-ref="userApprovalHandler" >

      <oauth:authorization-code/>
      <oauth:implicit/>
      <oauth:refresh-token/>
      <oauth:client-credentials/>
      <oauth:password/>


      </oauth:authorization-server>

      <oauth:resource-server id="resourceServerFilter"
      resource-id="dstest"
      token-services-ref="tokenServices"/>

      <!-- Client Definition -->
      <oauth:client-details-service id="clientDetails">
      <oauth:client client-id="xxxxxxxxx"
      authorized-grant-types="password,authorization_code,refresh_token,implicit,redirect"
      authorities="ROLE_USER, ROLE_TRUSTED_USER"
      redirect-uri="/"
      scope="read,write,trust"
      access-token-validity="2678400"
      refresh-token-validity="15552000" />

      </oauth:client-details-service>

      <bean class="org.springframework.security.oauth2.provider.request.DefaultOAuth2RequestFactory" id="oAuth2RequestFactory">
      <constructor-arg ref="clientDetails" />
      </bean>



      </beans>


      applicationContext-security.xml snippet



      <!-- works -->
      <authentication-manager id="authenticationManager" xmlns="http://www.springframework.org/schema/security">
      <authentication-provider user-service-ref="CustomUserDetailsService">
      <password-encoder ref="passwordEncoder"/>
      </authentication-provider>
      </authentication-manager>

      <!-- does not work -->
      <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
      <constructor-arg>
      <list>
      <ref bean="daoAuthenticationProvider"/>
      </list>
      </constructor-arg>
      </bean>

      <bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
      <property name="userDetailsService">
      <ref bean="CustomUserDetailsService"/>
      </property>
      <property name="passwordEncoder">
      <ref bean="passwordEncoder"/>
      </property>
      <property name="hideUserNotFoundExceptions">
      <value>false</value>
      </property>
      </bean>






      java spring spring-security-oauth2





      share












      share










      share



      share










      asked Mar 22 at 14:56









      sfehersfeher

      213




      213






















          0






          active

          oldest

          votes


















          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes

          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript