2017-12-19 1 views
1

Tomcat 8을 사용 중이며 LoginModule 외부에서 Subject를 가져와야합니다.JAAS - Subject는 LoginModule 외부에서 어떻게 검색 될 수 있습니까?

Subject subject = Subject.getSubject(AccessController.getContext()); 

을하지만 그건 그냥 널 때마다 반환 은 이미 시도했습니다. 누구나 아이디어가 있으십니까?

+0

이것은 Java SE 방식입니다. 자바 EE에서 JAAS'Subject '를 획득하는 유일한 표준화 된 방법은 JACC'PolicyContext'를 사용하는 것입니다. Tomcat은 지원이 필요하지 않습니다. 추천 읽기 : http://arjan-tijms.omnifaces.org/2014/02/jaas-in-java-ee-is-not-universal.html – Uux

답변

0

은 내가 Subject를 포함하고, JAAS 로그인 모듈은 Principal으로, 나는 다시 웹 응용 프로그램의 내부를 얻기 위해 request.getUserPrincipal()를 사용하도록 설정되어, 내 사용자 정의 클래스에 캐스팅하고 호출 할 수있는 사용자 정의 Principal를 사용 getSubject().

+0

주제를 검색 할 수있는 몇 가지 표준 JAAS 방법이 있었으면합니다. 그러나 나는 보았고, 보았고, 아무것도 발견하지 못했다. 나는 너 같은 것들과 같은 해킹을 만드는 것이 유일한 방법이라고 생각한다. Subject를 검색하는 것과 같이 JAAS가 일부 영역에서 심각하게 부족한 것처럼 보입니다. 특히 login() 메소드에서 throw 된 javax.security.auth.login.LoginExceptions 을 처리하는 것과 같습니다. JAAS는 예외를 삼켜 버리고 web.xml에 지정된 오류 페이지로 리디렉션합니다. LoginException에 액세스 할 권한이 없습니다. 어쨌든, 답변 해 주셔서 감사합니다. 나는 그것을 밖으로 시도 할 것이다. 감사! –

+0

예. J2EE 용으로 설계된 것으로 보이며 그 중 일부는 Servlet 사양으로 역 이식되었습니다. 내가 그것을 볼 때마다 앞을 향해 돌아 다니는 것처럼 보입니다. 또한 오류 및 경고 메시지를 제목의 공용 자격 증명으로 추가해야하므로 오류 페이지에서 확인할 수있었습니다. – EJP

관련 문제