지금까지 내가 아는 한, Exchange.AUTHENTICATION
라는 헤더 CXF 낙타 구성 요소 저장 인증 객체입니다. 자세한 내용은 Camel-Spring Security integration을 참조하십시오.
원시 액세스가 더 필요한 경우 this link을 확인하십시오. 현재 HttpServletRequest
개체를 가져 오는 방법을 설명합니다. 여기에서 세션에 액세스해야하므로 SecurityContext가 있어야합니다. 같은 뭔가 :
Message cxfMessage = exchange.getIn().getHeader(CxfConstants.CAMEL_CXF_MESSAGE, Message.class);
HttpServletRequest request = (HttpServletRequest)cxfMessage.get("HTTP.REQUEST");
User currentUser = getCurrentUser(request);
public static User getCurrentUser(HttpServletRequest request) {
HttpSession session = request.getSession(false);
if(session != null) {
SecurityContext securityContext = (SecurityContext) session.getAttribute((HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY));
if(securityContext != null && securityContext.getAuthentication() != null && securityContext.getAuthentication().getPrincipal() != null &&
securityContext.getAuthentication().getPrincipal() instanceof User) {
return (User)securityContext.getAuthentication().getPrincipal();
}
}
return null;
}
는 당신은 HttpSessionSecurityContextRepository
에서 직접 얻을 수 있습니다.
REST 서비스와 Spring 보안 구성이 Camel 경로의 일부입니까? 아니면 외부입니까? – Ralf