@PreAuthorize で保護されたメソッドがあります
@PreAuthorize("hasRole('ROLE_ADMIN') and (#action.userId != principal.id)")
public void execute(EditAction action)
ここで、バックグラウンド タスクからこのメソッドを呼び出す必要があります。このコードを単純に実行すると、例外が発生します。
AuthenticationCredentialsNotFoundException: SecurityContext で認証オブジェクトが見つかりませんでした
必要な認証を SecurityContext に設定する必要があるようです。できます:
- バックグラウンド タスク用のカスタム AuthenticationToken を記述します。
- 偽のユーザーで UsernamePasswordAuthenticationToken を使用します。
- バックグラウンド タスクでセキュリティで保護されたメソッドを使用しないでください。
- 他の推奨事項はありますか?
正しい方法は何ですか?