独自の oauth サーバーとリソース サーバーを実装するために Spring-Security-OAuth2 を使用しています。OAuth サーバーで (/oauth/check_token)を使用して任意の accessToken を認証する ResourceServer でRemoteTokenService
as myを使用しています。ResourceServerTokenService
CheckTokenEndpoint
/data/list などの API URL に antMatcher を追加しました。これには、クライアント アプリケーションの Role / Authority: " ROLE_ADMIN "が必要です。.antMatcher('/data/list').access("#oauth2.clientHasRole('ROLE_ADMIN')")
しかし、それは機能していません。このエンドポイントでいくつかの試行錯誤を行いましたが、得られるものは次のとおりです:::
oauth 付与がクライアントのみの場合、つまり client_credential 付与。/oauth/check_token から得られるもの
{
"scope":["read"],
"exp":1412955393,
"client_id":"sample_test_client_app"
}
私たちはクライアント権限を取得しません。では、春のセキュリティはどのようにして上記の認証チェックを実行できますか"#oauth2.clientHasRole('ROLE_ADMIN')"
oauth 付与がユーザー + クライアントの場合、つまり Authorization_code は /oauth/check_token から取得したものを付与します
{
"aud":["resource_id"],
"exp":1412957540,
"user_name":"developer",
"authorities":["ROLE_USER"],
"client_id":"sample_test_client_app",
"scope":["read"]
}
そして、authorization_code grnat については、まだクライアントの権限/役割を取得していません。任意の API URL で clientHasRole 認証を実行する方法を教えてください。