0

私は春のセキュリティでOauthサーバーを作成しようとしています。私は両方とも新しいです。私は http://localhost:8080/OAuthServer/login ログインにリダイレクトされていますが、ログインが認証した後、私のユーザーがページhttp://localhost:8080/OAuthServer/代わりの認証ページカスタムログインページを持つSpring Oauthサーバー

を歓迎するためにリダイレクトされます。私は

http://localhost:8080/OAuthServer/oauth/authorize?response_type=code&redirect_uri=http://localhost:8080/client/handler&client_id=test 

問題1次のURLを参照するとき

フローは、あります

問題:私はウェルカムページからログアウトした後、再び同じプロセスをやり直すと、OAuthServer/oauth/authorize?にログインし、ログインページを表示し、ログイン後、期待通りにリダイレクトされます。しかし、これは最初の試行では機能しませんでした。

問題3:今、OAuthServer/oauth/authorizeを参照するたびに、ログインページを表示する代わりに、認証ページを表示します。今回私は他のユーザーを認証したいが、承認ページに直接行く。すべての場合

は、エラーはありませんし、私は認証コードを取得していますし、コードから、私がアクセスコードを取得していますし、コードおよびアクセスコード

を使用して、私のリソース\従業員\リストにアクセスすることができるリフレッシュ私は確かにいくつかの設定が間違っています。私を助けてください。

のsecurity.xml

<!-- Entry Url --> 
<sec:http pattern="/oauth/token**" create-session="stateless" 
    entry-point-ref="oauthAuthenticationEntryPoint" 
    authentication-manager-ref="authenticationManager"> 
    <sec:intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY" /> 
    <sec:anonymous enabled="false" /> 
    <sec:custom-filter ref="clientCredentialsTokenEndpointFilter" 
     before="BASIC_AUTH_FILTER" /> 
    <sec:access-denied-handler ref="oauthAccessDeniedHandler" /> 
</sec:http> 

<sec:http pattern="/oauth/authorize**" create-session="never" 
    entry-point-ref="LoginEntry"> 
    <sec:anonymous enabled="false" /> 
    <sec:intercept-url pattern="/oauth/authorize" 
     access="IS_AUTHENTICATED_FULLY" /> 
</sec:http> 

<bean id="LoginEntry" 
    class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint"> 
    <constructor-arg value="/login" /> 
</bean> 

<sec:http pattern="/employee/**" create-session="never" 
    entry-point-ref="oauthAuthenticationEntryPoint" > 
    <sec:anonymous enabled="false" /> 
    <sec:intercept-url pattern="/employee/**" access="ROLE_USER" /> 
    <sec:custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" /> 
    <sec:access-denied-handler ref="oauthAccessDeniedHandler" /> 
</sec:http> 

<sec:http pattern="/oauth/me**" create-session="never" 
    entry-point-ref="oauthAuthenticationEntryPoint"> 
    <sec:anonymous enabled="false" /> 
    <sec:intercept-url pattern="/oauth/me" method="GET" 
     access="IS_AUTHENTICATED_FULLY" /> 
    <sec:custom-filter ref="resourceServerFilter" 
     before="PRE_AUTH_FILTER" /> 
    <sec:access-denied-handler ref="oauthAccessDeniedHandler" /> 
</sec:http> 

<sec:http authentication-manager-ref="loginAuthentication" 
    disable-url-rewriting="true"> 
    <sec:intercept-url pattern="/admin**" access="ROLE_USER" /> 
    <sec:form-login login-page="/login" 
     authentication-failure-url="/login?error" username-parameter="username" 
     password-parameter="password" /> 
    <sec:logout logout-success-url="/login?logout" /> 
    <!-- enable csrf protection --> 
    <sec:csrf /> 
</sec:http> 

<sec:authentication-manager id="loginAuthentication"> 
    <sec:authentication-provider> 
     <sec:user-service> 
      <sec:user name="mkyong" password="123456" authorities="ROLE_USER" /> 
      <sec:user name="test" password="1234" authorities="ROLE_USER" /> 
     </sec:user-service> 
    </sec:authentication-provider> 
</sec:authentication-manager> 


<!-- Server --> 
<oauth:authorization-server 
    client-details-service-ref="clientDetails" token-services-ref="tokenServices" 
    authorization-request-manager-ref="SECAuthorizationRequestManager" 
    user-approval-handler-ref="SECTokenServicesUserApprovalHandler"> 
    <oauth:authorization-code 
     authorization-code-services-ref="JdbcAuthorizationCodeServices" /> 
    <oauth:implicit /> 
    <oauth:refresh-token /> 
    <oauth:client-credentials /> 
</oauth:authorization-server> 


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

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

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

<bean id="clientCredentialsTokenEndpointFilter" class="com.server.security.SECClientCredentialToken"> 
    <property name="authenticationManager" ref="authenticationManager" /> 
    <property name="clientDetails" ref="clientDetails" /> 
</bean> 

<bean id="userCredentialsTokenEndpointFilter" class="com.server.security.SECUserCredential"> 
    <property name="authenticationManager" ref="loginAuthentication" /> 
</bean> 

<sec:authentication-manager alias="authenticationManager"> 
    <sec:authentication-provider 
     user-service-ref="clientDetailsUserService" /> 
</sec:authentication-manager> 

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

<bean id="clientDetails" class="com.server.security.SECClientDetailsService"> 
    <property name="id" value="test" /> 
    <property name="secretKey" value="mycompanykey" /> 
</bean> 

<bean id="SECTokenServicesUserApprovalHandler" 
    class="org.springframework.security.oauth2.provider.approval.TokenServicesUserApprovalHandler"> 
    <property name="tokenServices" ref="tokenServices" /> 

</bean> 

<bean id="SECAuthorizationRequestManager" 
    class="org.springframework.security.oauth2.provider.DefaultAuthorizationRequestManager"> 
    <constructor-arg ref="clientDetails" /> 
</bean> 

<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="JdbcAuthorizationCodeServices" 
    class="org.springframework.security.oauth2.provider.code.JdbcAuthorizationCodeServices"> 
    <constructor-arg ref="jdbcTemplate" /> 
</bean> 

<bean id="tokenStore" 
    class="org.springframework.security.oauth2.provider.token.JdbcTokenStore"> 
    <constructor-arg ref="jdbcTemplate" /> 
</bean> 

<bean id="jdbcTemplate" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" 
     value="jdbc:mysql://serverhost:7306/Oauth?useSSL=false" /> 
    <property name="username" value="username" /> 
    <property name="password" value="password" /> 
</bean> 
<!-- End Persistence Layer --> 

<!-- ModelViewController --> 
<mvc:annotation-driven /> 

<mvc:default-servlet-handler /> 

<context:annotation-config /> 

<context:component-scan 
    base-package="com.server.security,com.server.resource,com.server.controller" /> 

<bean 
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 

    <property name="viewResolvers"> 
     <list> 
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 
      <bean 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/" /> 
       <property name="suffix" value=".jsp" /> 
      </bean> 
     </list> 
    </property> 

    <property name="defaultViews"> 
     <list> 
      <bean 
       class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" /> 
     </list> 
    </property> 
</bean> 

答えて

0

問題1: 私はそれが上であるため作成セッションの= "決して" ではないと思う "/ OAuthの/認可**"、かどうかを確認してくださいjsessionが初めて作成されたかどうかを確認し、2回目の再チェックを行います。

問題2: それはリダイレクト保存できるので、セッションが作成されたので、あなたはすでにホーム・ページにリダイレクトするので、それは

問題3:あなたはシークレットウィンドウ使用して別のセッションを使用する必要が 、またはログアウト別のユーザーと再度ログインする

+0

ありがとう!セッションが問題を作り出していました.. –

関連する問題