0

認証とトークンの生成に Spring セキュリティ Oauth2 を使用して、Java で 1 つの RESTEasy サービスを作成しました。すべてが正常に機能していますが、サービスにアクセスしてブラウザ REST クライアントからトークンを生成しようとすると、資格情報が要求されて失敗しますが、同時に Java の HTTPClient で同じサービスにアクセスすると機能します、

HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://localhost:80/my-rest-application/oauth/token");

          List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
          nameValuePairs.add(new BasicNameValuePair("client_id","myclientid"));
          nameValuePairs.add(new BasicNameValuePair("client_secret","myclientsecret"));
          nameValuePairs.add(new BasicNameValuePair("username","someuser"));
          nameValuePairs.add(new BasicNameValuePair("password","somepassword"));
          nameValuePairs.add(new BasicNameValuePair("grant_type","password"));

          post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

          HttpResponse response = client.execute(post);

JavaのHttpクライアントは機能しますが、ブラウザーの残りのクライアントでは資格情報を要求し、不正な要求を返します ブラウザー レスト クライアントの応答

なぜそれが起こるのですか?

私の構成、

<http 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" />
    <http-basic entry-point-ref="clientAuthenticationEntryPoint" />
    <!-- include this only if you need to authenticate clients via request parameters -->
    <custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" /> 
    <access-denied-handler ref="oauthAccessDeniedHandler" />
</http>


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

<bean id="clientDetails" class="my own client details implementation"/>



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

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

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

1 に答える 1