私は、URLのメソッドとメソッドを保護している春のブート(1.5.3)oauth2アプリケーションを持っています。私は今、私は @PreAuthorize(「hasPermission(#IDを持つメソッドを確保することができるようにカスタムPermissionEvaluatorを追加しようとしている @PreAuthorize(「hasRoleも( 『ROLE_NAME』)」)スプリングブートセキュリティOAuth2 +カスタムパーミッションエバリュエータ
:メソッドのセキュリティは現在経由して取り組んでいます、 'typeName'、 'permissionName') ")。
私はGlobalMethodSecurityConfigurationを拡張することで、この機能を有効にしています:簡潔にするために省略PermissionEvaluatorクラス:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, mode =
AdviceMode.ASPECTJ, jsr250Enabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration
{
@Autowired
private MatterRepository matterRepository;
@Autowired
private MatterTeamMemberRepository matterTeamMemberRepository;
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
Map<String, Permission> permissionsMap = new HashMap<>();
permissionsMap.put(ReadMatterPermission.class.getSimpleName(),
new ReadMatterPermission(matterRepository, matterTeamMemberRepository));
OAuth2MethodSecurityExpressionHandler handler = new
OAuth2MethodSecurityExpressionHandler();
handler.setPermissionEvaluator(new
EntityPermissionEvaluator(permissionsMap));
return handler;
}
}
注意を。
問題は、hasPermissionが呼び出されることがあるということです。ほとんどの場合、呼び出されません。
*Auto-configure an expression handler for method-level security (if the user
* already has
* {@code @EnableGlobalMethodSecurity}).
o.s.b.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
私の設定が処理される前にOAuth2MethodSecurityExpressionHandlerのインスタンスを作成:私はこれはとは何かである疑いがあります。
誰かがSpringブートoauth2アプリケーションにPermissionEvaluatorを正常に注入しましたか?
ありがとうございました。
私はoauth2の自動設定を無効にしていましたが、それはそれを排除しました。 – Chappers1975