스프링 보안으로 보호되는 REST 엔드 포인트를 제공하는 스프링 부팅 응용 프로그램이 있습니다.스프링 보안 : 서비스 호출에 따라 액세스 제공
서비스 호출에 따라 일부 경로에 대한 액세스를 제한해야합니다.의 나는이 같은 서비스를 가정 해 봅시다 :
@Service
public class AccessService {
boolean hasAccess(String requestedPath) {
// some business logic here
}
}
서비스는 어떤 비즈니스 환경에 사용자 역할을 확인하고 true
또는 false
를 반환합니다.
이제이 서비스 호출을 내 보안 구성에 통합해야합니다.
은 지금까지 나는 다음과 같은 구성을 가지고 : (완전히 정적으로)
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.and().authorizeRequests()
.anyRequest().hasRole("USER");
}
나는 여기에 서비스 호출을 추가하는 방법을 볼 수 없습니다.
내가 노력하고있어 :
은 현재 내가 무시 내 AuthenticationProvider
및 추가 기능으로 확장 생각 해요.
다른 옵션은 일종의 인증을 수행하는 클래스에서 내 REST 컨트롤러를 확장하는 것이지만 가능한 경우 확실하지 않습니다.
질문 : 서비스 메서드 호출을 기반으로 REST 끝점을 어떻게 보호 할 수 있습니까? 그 일을하는 올바른 방법은 무엇입니까?
[참조 가이드] (https://docs.spring.io/spring-security/site/docs/current/reference/html/el-access.html#el-access-web)를 읽어 보시기 바랍니다. . 'anyRequest(). access ("@ accessService.hasAccess (request.requestURI) && hasRole ('USER')")와 같은 것입니다. –