2016-06-30 2 views
1

내가 보안을 구성하는 web.xml을 사용하는 자바 웹 애플리케이션이 적용되지 않습니다 , 그리고 이것은 작동합니다. 사용자는 먼저 로그인 화면을보고 나중에 요청 된 원래 페이지로 리디렉션됩니다.의 Web.xml 보안 제약

도 패턴을로 구성하고 루트에 요청하면 내 Java 컨트롤러가 작동하기 시작하고 로그인 화면을 보지 않고도보기를 보여줍니다. 이 패턴은 <servlet-mapping> (스프링 서블릿에 요청을 맵핑하기 위해)과 같은 것들에 대해 작동하지만 보안 제약 사항으로서 작동하지 않는 이유는 무엇입니까?

나는 크롬과 파이어 폭스 모두에서 시도하고 여러 번 재시작했다.

+0

당신은/* 루트 컨텍스트 구성을 위해 사용 했을? – aksappy

+0

@aksappy 아니요./* URL 패턴은 "모든 요청 캐치"를 의미하기 때문에 필요하지 않습니다. 루트 컨텍스트 만 필요합니다. 예를 들어, /otherpage.do는 허가없이 계속 작동해야합니다. – user1884155

+0

사양에 따르면, 당신이 한 일은 옳습니다. – aksappy

답변

0

화이트리스트 접근 방식을 시도해 볼 수 있습니다. 공용 리소스에만 액세스 권한을 부여하는 것입니다.

예와 Here is a better answer,하지만 귀하의 경우는 다음과 같이해야한다 :

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>webPages</web-resource-name> 
    <description>All web resources</description> 
    <url-pattern>/</url-pattern> 
    <http-method>POST</http-method> 
    <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>admins</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
    <description>SSL not required</description> 
    <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Public Resources</web-resource-name> 
    <url-pattern>/public/*</url-pattern> 
    <url-pattern>/alsopublic</url-pattern> 
    <url-pattern>...an so on...</url-pattern> 
    </web-resource-collection> 
    <!-- to given public access don't set auth-constraint--> 
</security-constraint> 

편집 : 참조 servlet 3 specification

+0

이것은 작동하지 않습니다. 서버는 루트가 이제 "보안"되어 있음을 올바르게 알고 있지만, /login.do에있는 loginpage로 리디렉션하려고하면이 요청은 차단됩니다. 몇 초 후에 무한 루프를 나타내는 최대 스레드 수가 생성되었다는 오류 메시지가 서버에 표시됩니다. 또한 서블릿 3 스펙에 대한 링크가 나를 위해 작동하지 않습니다. 요청한대로 수행 할 수있는 권한이 없습니다. – user1884155

+0

귀하의 의견을 이해할 수 없습니다 : ¿ / 루트는 꼭 그래야만 안전합니까?. 또한 사용자 로그인 후 /login.do가 수행 할 작업을 지정하십시오 (예 : 리디렉션). /을 선언하여 – Guillermo

+0

을 지정하면 루트가 아닌 다른 모든 콘텐츠도 보호됩니다. 나는 이것이 컨텍스트 루트를 설명하는 적절한 방법이 아니라고 생각합니다. Servlet 3.0에 따르면 올바른 URL 패턴은 빈 문자열입니다. – user1884155

관련 문제