HTTP- 기본 인증으로 보안 된 웹 응용 프로그램이 있습니다. 또한 ServletRequestListener
인터페이스를 사용하여 필터를 구현했습니다. 이제 필터가 requestInitialized
메서드를 호출하면 요청의 getUserPrincipal-Method는 null을 반환합니다. 그러나 요청 헤더를 검사 할 때 authorization-header는 암호화 된 값으로 설정됩니다. 코드는 다음과 같습니다.ServletRequestListener - userprincipal을 얻으면 null이 반환됩니다.
@Override
public void requestInitialized(ServletRequestEvent e) {
HttpServletRequest request = (HttpServletRequest) e.getServletRequest();
//p is null
Principal p = request.getUserPrincipal();
Enumeration<String> enH = request.getHeaders("Authorization");
while (enH.hasMoreElements()) {
String s = enH.nextElement();
System.out.println(s);
//prints.
//Basic c3RhY2tvdmVyZmxvdzpteXBhc3N3b3Jk
}
}
userprincipal이 초기화되지 않은 이유는 무엇입니까?
.. 리스너 대신 필터를 사용하여 임베디드 부두가 유용 할 것이다 어떻게 설정에 대한 몇 가지 세부 사항을 해결했다. LoginService + Constraint + ConstraintMapping + Roles + ConstraintSecurityHandler를 설정해야 할 가능성이 높습니다. [예제] (http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree) /examples/embedded/src/main/java/org/eclipse/jetty/embedded/SecuredHelloHandler.java) –