URL 및 메소드를 보호하는 스프링 부트 (1.5.3) oauth2 응용 프로그램이 있습니다. @PreAuthorize ("hasRole ('ROLE_NAME')")스프링 부트 보안 OAuth2 + 사용자 정의 권한 평가 도구
내가 지금은 "( @PreAuthorize와 hasPermission을 방법을 확보 할 수 있도록 사용자 정의 PermissionEvaluator를 추가하기 위해 노력하고있어 (#ID : 방법 보안은 현재를 통해 노력하고 있습니다 , 'typeName', 'permissionName') ").
나는 확장 GlobalMethodSecurityConfiguration하여이 기능을 가능 해요 :
@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;
}
}
참고 : PermissionEvaluator 클래스는 간결함을 위해 생략.
내가 가지고있는 문제는 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의 인스턴스를 생성 :이 함께 할 수있는 뭔가 의심.
스프링 부트 oauth2 응용 프로그램에 PermissionEvaluator를 성공적으로 주입 한 사람이 있습니까?
감사합니다.
필자는 아무런 차이가 없으므로이를 제거한 oauth2 자동 구성을 비활성화했습니다. – Chappers1975