2013-02-28 1 views
1

나는 vanced 응용 프로그램을 위해 tomcat6에 몇 페이지를 보호하려고합니다. 두 URL을 제외한 대부분의 URL에 대해 URL 패턴을 사용하여 보안 설정을 성공적으로 수행했습니다 (아래 코드에서 별표 두 개로 표시). 이 두 URL은보기를 결정하는 매개 변수를 사용한다는 점에서 다릅니다. 나는이 두 가지 관점을 제한하고 싶으므로 아래와 같이 정확한 URL을 차단/보안/인증되도록 지정했습니다. 하지만 바람둥이는 그들을 보호하지 못합니다.Tomcat Web XML URL 패턴이 매개 변수가있는 URL을 허용하지 않습니까?

<security-constraint> 
      <web-resource-collection> 
        <web-resource-name>TopBraid</web-resource-name> 
        <description>Restrict few pages that need security.</description> 
        <url-pattern>/tbl/admin/*</url-pattern> 
        <url-pattern>/tbl/sparql/*</url-pattern> 
        **<url-pattern>/tbl/swp?_viewClass=appConfig:ServerConfigEditor</url-pattern>** 
        **<url-pattern>/tbl/swp?_viewClass=adminConfig:AdminEditPage</url-pattern>** 
        <url-pattern>/tbl/sp_reset</url-pattern> 
        <url-pattern>/tbl/sp_redeploy</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
        <role-name>SERVER_ADMINS</role-name> 
      </auth-constraint> 
    </security-constraint> 
    <security-role> 
      <role-name>SERVER_ADMINS</role-name> 
    </security-role> 
    <login-config> 
      <auth-method>FORM</auth-method> 
      <realm-name>TopBraid</realm-name> 
      <form-login-config> 
        <form-login-page>/logon.html</form-login-page> 
        <form-error-page>/logonError.html</form-error-page> 
      </form-login-config> 
    </login-config> 
    <security-constraint> 
      <web-resource-collection> 
       <web-resource-name>Public</web-resource-name> 
       <description>Matches any page.</description> 
       <url-pattern>/*</url-pattern> 
      </web-resource-collection> 
    </security-constraint> 

JSR 사양에서 잘못된 패턴이라고 할 수 있습니다. 패턴이 어떻게 든 허용 될 수 있도록 지정 될 수 있는지 궁금합니다. 아니면 위에 나열된 두 URL에 대한 액세스를 제한하는 다른 방법이 있습니까?

+0

대신 왜/tbl/swp를 사용하지 않습니까? –

+0

/tbl/swp 패턴이/tbl/swp? _viewName = home과 같은 인증을 필요로하지 않는 다른 URL이 있습니다. – Kalyan

답변

1

/tbl/swp?_viewClass=tblconfig:ConfigEditor /tbl/swp?_viewClass=admins:AdminsEditorPage 이상으로하려는 특정 URL 매개 변수 및 해당 값에 대한 액세스를 제한하는 것은 웹이나 응용 프로그램 서버에서 불가능합니다. 이러한 유형의 필터링/URL 제한은 해당보기에 대한 고유 한 세션을 작성하여 응용 프로그램 자체에서 수행해야합니다.

응용 프로그램 서버가 들어오는 URL을 구문 분석 할 때 첫 번째 "?"에 도달하면 작업이 완료됩니다. 이것은 응용 프로그램에 전달되는 첫 번째 매개 변수입니다. 여기에서 모든 유형의 필터링/액세스 제어는 응용 프로그램에서 처리해야합니다.

+1

답변 해 주셔서 감사합니다. 모든 요청을 차단하고 인증 할 수있는 사용자 정의 Tomcat 밸브를 코딩하는 것이 도움이 될 것이라고 생각하십니까? 나는 아이디어를 가지고 있지만 어떻게 진행해야할지 모른다. – Kalyan

+1

아니, 그 두 가지 예를 들어 도움이되지 않을 것입니다. 이것은 응용 프로그램 서버가 아닌 Java 코드에 의해 처리되어야합니다. 이 작업을 수행 할 수있는 Tomcat 밸브는 없습니다. – eliteparakeet

관련 문제