2014-06-18 3 views
0

Wildfly 8.1.0.Final 사용승인을 요청할 때 공개 자원에 대한 승인을 사용하지 않는 방법은 무엇입니까?

/api/*에 액세스 할 때 기본 인증이 필요한 웹 응용 프로그램을 만들고 싶지만 나머지 응용 프로그램은 열려 있어야합니다. 이를 수행하기 위해 다음과 같은 web.xml을 가지고 있습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Api access</web-resource-name> 
      <url-pattern>/api/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>api</role-name> 
     </auth-constraint> 
    </security-constraint> 

    <security-role> 
     <role-name>api</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>Authentication requires api access</realm-name> 
    </login-config> 
</web-app> 

브라우저로 테스트하면 예상대로 작동합니다.

http://localhost:8080/myapp/api 

... 인증이 필요합니다.

... 인증이 필요하지 않습니다. 여기

는 까다로운 부분 온다 :

제삼자 액세스

/MyApp를하고 요청의 인증 헤더 포함

Authorization: Basic ZGlsbDpkYWxs 

이 제이보스에 등록 된 사용자가 아니라, 그 야해 물질 때문에을/myapp가 열려 있고 권한이 필요하지 않습니다. 그러나 무엇이 일어나는가 :

401 Unauthorized 

왜?/myapp에 대한 보안 제약 조건을 사용하겠다고 말하지 않았지만 아직/myapp/api에 등록 된 보안 제약 조건을 기본값으로 사용합니다.

Jboss AS 7.1.1과 함께 도입 된 새로운 동작입니다. 이것은 최종 결과가 아닙니다.

요청에 권한이 포함되어있을 때 공개 자원에 대한 권한 부여를 사용하지 않는다고 어떻게 알릴 수 있습니까?

답변

0

WildFly 8.1.0.Final에서 문제를 확인할 수 있습니다. GlassFish 4.0은 동일한 시나리오에서 401로 응답하지 않습니다.

문제를 제출했습니다 : https://issues.jboss.org/browse/WFLY-3590