내 웹 구성은 포트 8080의 http와 포트 8081 및 8082의 https를 선언합니다.특정 URL에 대한 액세스를 특정 포트로 제한하는 방법은 무엇입니까?
내 서블릿에서 특정 URL 패턴에 대한 액세스를 특정 포트 (예 : 특정 포트)로 제한하려고합니다./Admin에 대한 요청은 포트 8082에 있지 않으면 거부되어야합니다.이 작업은 매우 간단하며 서블릿의 서비스 메소드에서 포트 번호를 확인할 수 있습니다.
하지만 고객이 포트를 변경할 수 있어야합니다. 고객이 관리 요청을 포트 9000 (8083 대신)에서만 허용하려는 경우이 전략은 실패합니다.
내가 생각할 수있는 접근법 중 하나는 server.xml의 커넥터에 추가 속성을 추가하고 서블릿에 액세스하는 것입니다. 이것이 가능한가? 정교
, 나는 다음과 같이 내 서블릿이에 server.xml
<Connector port="9000" connectorType="admin"....
에서 다음과 같이 뭔가를 추가 한 다음 어떻게 든 프로그램 싶어. 내가 실현 getConnectorProperties
존재하지 않는, 이것은 단지 예일뿐입니다.
if (request.getRequestURL().startsWith("/admin")) {
String connectorType = request.getConnectionProperties().get("connectorType");
if (! "admin".equals(connectorType)) {
// return unauthorized
이 문제를 해결하는 방법에 대한 다른 제안 사항이 있습니까?
장면 뒤에서 어떤 일이 발생합니까? 이 경우 두 개의 인스턴스를 생성합니까? –
인스턴스 무엇? 여전히 유일한 프로세스가 있습니다. 하지만 둘 ... 서비스 :). 서비스는 커넥터를 엔진에 바인딩합니다. [자신의 문서] (https://tomcat.apache.org/tomcat-7.0-doc/config/service.html)에서 더 읽을 수 있습니다. – yair