에서 http 포트에 대한 HTTPS 포트 번호를 해당 가져 오기, 그리고 제거 할 것 중 하나는 포트 번호 매핑 :내 웹 애플리케이션의 구성을 최소화하기 위해 노력하고있어 톰캣
- HTTP : 80 - >은 https :
- HTTP 443 : 9080 -> HTTPS : 9443
구성이 이미 conf의/server.xml에 존재하기 때문에, 나는 내 응용 프로그램에서 이러한 설정을 복제하고 싶지 않아요. 여러 설정 파일을 변경해야한다는 것은 고통 스럽습니다. 또한 응용 프로그램은 http 및 https를 지원하는 한 배포 된 환경/컨테이너를 신경 쓰지 않아야합니다.
내가 내 web.xml 파일에 구성된 다음,하지만 내가 리디렉션에 추가 된 HTTPS URL을 구축 할 수 있어야
:<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/https/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
위의 블록에 대한 HTTP 요청을 리디렉션하는 서블릿 컨테이너를 알려줍니다 그 https와 일치합니다. 당연히 Tomcat은 요청한 커넥터가 무엇인지 알며 해당 커넥터의 server.xml에서 "redirectPort"속성을 조회하고이를 사용하여 https URL을 만듭니다.
- Tomcat: how to get the secure port number in Java?
- get server name and port number of JSP page for HTTPS
이 이전/관련 질문에 따르면, 요청에 해당하는 HTTPS 포트를 얻기의 표준 또는 바람둥이 특정 방법이있을 것 같지 않습니다
TL : 내 질문은 웹 응용 프로그램에서 명시 적으로 구성하지 않아도 안전하지 않은 요청에 해당 https 포트 번호를 가져 오는 데 어떤 아이디어가 있습니까?
내가 가진 한 가지 아이디어는 현재 요청과 동일한 포트 번호를 사용하는 보안 제약 뒤에있는 경로로 webapp에서 http 호출을하고 응답에서 리디렉션 위치를 구문 분석하는 것입니다. 물론 응답을 캐싱해야합니다. 더 간단한 방법이 있습니까?
편집 : 아이디어 코드를 사용하여 answer을 추가했습니다.
안녕 EJP는 안전하지 않은 홈페이지에 가입 양식 (예 : http://facebook.com, http://twitter.com)이있는 경우를 고려하십시오. https 포트 (443이 아닌 경우)를 몰라도 양식 활동에 대한 https URL을 어떻게 생성합니까? Tomcat 리디렉션은 보안 URL로 리디렉션되기 전에 사용자가 데이터를 안전하지 않게 게시 한 것이므로 충분하지 않습니다. – andy