jax-rs를 사용하여 bulid rest API입니다. 인증을 처리하기 위해 Interceptor를 사용하고 있습니다. 인증이 실패하면 내가 좋아하는 WebApplicationException를 반환 :jaxrs - 인터셉터 반환 상태에서 오류가 발생합니다.
try
{
Authentication authentication = authenticationManager
.authenticate(new UsernamePasswordAuthenticationToken(policy.getUserName(), policy.getPassword()));
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(authentication);
}
catch (AuthenticationServiceException | BadCredentialsException e)
{
throw new WebApplicationException(Response.Status.UNAUTHORIZED); //TODO set response status
}
하지만 startus 반환 (500) 대신
나는 그것이 내가 설정 상태를 반환 서비스에 WebApplicationExceptions을 던져하지만 요격에 근무하지 않았다 401. 인터셉터에서 401을 반환하는 방법은 무엇입니까?
jaxrs : 서버 설정 :
<jaxrs:server id="restService" address="/rest">
<jaxrs:serviceBeans>
<ref bean="serviceBean"/>
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<ref bean="securityInterceptor"/>
</jaxrs:inInterceptors>
</jaxrs:server>
<bean id="serviceBean" class="some_package.CustomerService"/>
<bean id="securityInterceptor" class="some_package.AuthenticatorInterceptor"/>
확실하지는 않지만 인증을 위해서는 인터셉터 대신 필터를 사용해야합니다. – mkrakhin
@mkrakhin 필자는 필터를 시도했지만 버전 1.1.1에서 jsr311-api가 작동하지 않아 최신 버전으로 업그레이드 할 수 없습니다. –