私はスプリングセキュリティの初心者ですが、@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が
に見つかりませんでした私は、グローバルメソッドのセキュリティを有効に:
私はこの春のセキュリティアノテーションを動作させるために何が必要ですか?それがすべてで、この文脈では、このアノテーションを使用することは可能ですか?
答えは以前ですが、Spring SecurityとKeycloakで同様の問題が発生しました。 私のSpring起動アプリケーションでは、アダプタを設定しましたが、 '@PreAuthorize(" hasAuthority( 'user') ")'は使用できませんでした。リクエストが送信された場合は、注釈は効果がありませんでした。私は私のセキュリティ設定に '' @EnableGlobalMethodSecurity(=真prePostEnabled)を追加することで、今、それを修正しました。 – hesch