0

ユーザー名とパスワードに基づいて、ロールとともにDBからユーザーの詳細を取得する承認サーバーがあります。

リソース サーバーで保護されたリソースにアクセスしている間 (access_token を渡す)、ロールに基づいて残りの呼び出しを承認したいのですが、どうすればよいですか? リソースサーバーでプリンシパルユーザーを確認しているときに、デフォルトの[ROLE_USER]を取得しているためです

//Will @preAuthorize() work here ?
@RequestMapping(value="/pinaki", method=RequestMethod.GET)
public String home(Principal principal) {
    return "Hello World";
}

ガイドしてください..よろしくお願いします

4

1 に答える 1

2

私の知る限り、spring-security-oauth2 は、共通のデータ ストア (データベースまたはメモリ内) を共有する承認サーバー/リソース サーバーのユーザーの詳細 (ロールを含む) をすぐに取得することのみをサポートします。

共通のデータ ストアがある場合は、InMemoryClientDetailsS​​ervice または JdbcClientDetailsS​​ervice を使用できます。

ただし、設定に共通のデータ ストアがない場合、これを自分で拡張するのはそれほど難しくありません。このタスクの主要なインターフェースはClientDetailsS​​erviceResourceServerTokenServicesです。

ResourceServerTokenServices 実装は、ロールを含む OAuth2Authentication を返します。したがって、ここで認可サーバーから tokeninfo エンドポイントを呼び出すことができます。ClientDetailsS​​ervice を実装してそれを使用すると、よりエレガントになります。ここでも、tokeninfo エンドポイントを呼び出す必要があります。

XML 構成では、パラメーター token-services-ref および auth-details-source-ref の oauth:resource-server タグで使用するように Bean をセットアップできます。Java 構成の詳細については、http://projects.spring.io/spring-security-oauth/docs/oauth2.htmlページを参照してください。

(私の情報は spring-security-oauth2 のバージョン 2.0.8 を参照しています)

于 2016-01-19T13:51:50.343 に答える