2016-07-01 5 views
0

Tomcat-7 인스턴스에서 ApplicationA, ApplicationB 및 SSO vavle이 켜져 있습니다. 두 응용 프로그램 모두 서블릿 기반이며 양식 보안 방법으로 보안됩니다. 웹 브라우저를 사용할 때 SSO는 의도 한대로 작동합니다. ApplicationA를 처음 열면 사용자 이름과 로그인을 입력하라는 메시지가 나타납니다. 로그인 양식을 통과 한 후에는 로그인하라는 요청을받지 않고 ApplicatioB에 액세스 할 수 있습니다.HttpUrlConnection이 SSO 인증을 수신합니다

이제 응용 프로그램은 ApplicationB에서 일부 콘텐츠를 요청해야합니다. 그래서 나는 웹 브라우저에서 ApplicationA를 열고 로그인 폼에 로그인과 패스워드를 입력한다. 그런 다음 ApplicationA는 ApplicationB의 HttpUrlConntection을 만들어 일부 콘텐츠를 가져 오지만 대신 인증되지 않은 새 요청이므로 ApplicationB의 로그인 양식 만 가져옵니다. 브라우저에서 SSO에 로그인했기 때문에 ApplicationB의 로그인 요청없이 ApplicationA의 프로그래밍 방식 요청에 대해 ApplicationB에 액세스 할 것으로 예상됩니다.

또한 ApplicationB의 내용이 ApplicationA의 String으로 필요하므로 requestDispatcher.include()를 사용하지 않습니다.

가능합니까? 감사합니다.

내가 시도한 것은 conn.setRequestProperty()를 통해 HttpUrlConnection에 대한 브라우저 요청의 모든 헤더 (JSESSIONID 및 JSESSIONIDSSO와 같은 것들)와 헤더를 설정하는 것입니다.하지만 운은 없습니다.

답변

1

싱글 사인온 (SSO)을 적용하려면 다른 클라이언트가 아닌 동일한 클라이언트에서 응용 프로그램에 액세스해야합니다.

두 응용 프로그램 모두 Tomcat에서 SSO를 사용할 수 있지만 웹 브라우저 클라이언트와 비슷한 새 클라이언트 역할을하는 ApplicationA에서 HttpUrlConnection을 통해 ApplicationB에 액세스하고 있기 때문에 불가능합니다.

또한 HttpUrlConnection 클라이언트 세션에서 웹 브라우저 클라이언트 세션의 쿠키 및 헤더 설정은 HTTP 연결이 다른 클라이언트에서 이루어지기 때문에 Tomcat에서 허용하지 않습니다.

관련 문제