2

spring sparklr2 の例に従って、OAuth 2 サーバーをセットアップしようとしています。データベース userDetailsS​​ervice を使用するように変更しました。以下のように、curl でパスワード付きのトークンを交換しようとすると、次のようになります。

curl -X POST -d "client_id=client1&client_secret=123456&grant_type=password&username=user1&password=abc" http://mymachine:8080/oauth/token

ユーザーfindByUsername()のロードに失敗しました。コードを調べると、クライアントID(私の場合は「client1」)がユーザー名として使用されます。コール スタックは次のとおりです。 DaoAuthenticationProvider.retrieveUser(String, UsernamePasswordAuthenticationToken) 行: 101
DaoAuthenticationProvider(AbstractUserDetailsAuthenticationProvider).authenticate(Authentication) 行: 132 ProviderManager.authenticate(Authentication) 行: 156
ClientCredentialsTokenEndpointFilter.attemptAuthentication(HttpServletRequest, HttpServletResponse) 行: 109
ClientCredentialsTokenEndpointFilterentFilters( .doFilter(ServletRequest, ServletResponse, FilterChain) 行: 211

sparklr2でcurlを試してみましたが、

curl -X POST -d "client_id=my-trusted-client&grant_type=password&username=marissa&password=koala" http://mymachine:8080/sparklr2/oauth/token

それは同じです。'my-trusted-client' がユーザー名として渡されます。しかし、sparklr2 のトークンが正しく返される理由がわかりません。

4

1 に答える 1