2016-04-26 7 views
1

私のJerseyアプリケーションでは、@RolesAllowed("my-scope-or-role-name")を使用して、承認のための要求からスコープを読み取る方法を実装しました。例えば。 HTTPヘッダーmy-role-headerの値がmy-scope-or-role-nameの場合、リクエストを処理していました。カスタムスコープ/ロールを持つ安全なSpring起動アプリケーション

@RolesAllowed("my-scope-or-role-name") 
public ResponseEntity<Object> post(@RequestBody final String plainText) { 
// process request 
} 

サービスがプロキシの背後にあったので、これだけプロキシは、それが得たアクセストークンに応じて、my-headerの値を設定することができます。

Spring Bootでこの問題を解決するための慣習的な方法は何ですか?私も@Secured注釈を使用して読んで...しかし、@RolesAllowed()かなり簡単に思われる。

答えて

0

免責事項:専門家ではありません。

好ましい方法は、@PreAuthorizeアノテーションを使用しているようです。

@PreAuthorize("#oauth2.hasScope('read') and hasAuthority('USER')") 
:のような面白い事をする -

この事は、あなたが(例えば、グローバルメソッドレベルのセキュリティを有効にする必要がありますため、すべてのセキュリティとのOAuth2のものが正しく設定されていると仮定して)ことができますSPEL式を、受け入れ

私はあなたのRESTエンドポイントがサービスクラスを中心とした薄いラッパー(実際の作業を行う)であることをお勧めします。セキュリティアノテーションがそれらのサービスクラス(またはそれらのインターフェイスにプッシュダウンされることは明らかです。インターフェイスに注釈を付けることはできますが、それでも機能します)。

これは、適切なセキュリティのクリアランスなしに「ジョブ」コードに到達することができないため、より安全です。

関連する問題