2015-12-31 13 views
5

私はスプリングセキュリティの初心者ですが、@PreAuthorize@PostAuthorize@Securedなどのアノテーションを使用できるようにキークローズを設定することができます。 は例えば、私は私のコントローラにPrincipalオブジェクトへのアクセス権を持っているように、このように、私のシンプルな春の休憩のWebアプリケーションにkeycloak-spring-security-adapterと春のセキュリティを設定した:keycloakでスプリングセキュリティアノテーションを使用する

@RestController 
public class TMSRestController { 

    @RequestMapping("/greeting") 
    public Greeting greeting(Principal principal, @RequestParam(value="name") String name) { 
     return new Greeting(String.format(template, name)); 
    } 
... 
} 

しかし、私はこの(ちょうど例をしようとすると、 、実際に私が承認する前に、カスタムEL式を実行したい):

org.springframework.security.authentication:

@RestController 
public class TMSRestController { 

    @RequestMapping("/greeting") 
    @PreAuthorize("hasRole('ADMIN')") 
    public Greeting greeting(Principal principal, @RequestParam(value="name") String name) { 
     return new Greeting(String.format(template, name)); 
    } 
... 
} 

私は例外を取得します。 AuthenticationCredentialsNotFoundException:認証オブジェクトは、私の春のセキュリティ設定ではSecurityContextが

に見つかりませんでした私は、グローバルメソッドのセキュリティを有効に:

私はこの春のセキュリティアノテーションを動作させるために何が必要ですか?それがすべてで、この文脈では、このアノテーションを使用することは可能ですか?

答えて

3

あなたはまだKeycloakを使って春のセキュリティを設定する必要があります。注釈ベースのコンフィギュレーションのためのadapter documentationを見てみましょう。そのセットアップしたら、あなたの春のセキュリティアノテーションは、許可呼び出しで動作します。

+0

答えは以前ですが、Spring SecurityとKeycloakで同様の問題が発生しました。 私のSpring起動アプリケーションでは、アダプタを設定しましたが、 '@PreAuthorize(" hasAuthority( 'user') ")'は使用できませんでした。リクエストが送信された場合は、注釈は効果がありませんでした。私は私のセキュリティ設定に '' @EnableGlobalMethodSecurity(=真prePostEnabled)を追加することで、今、それを修正しました。 – hesch

関連する問題