2012-01-24 3 views
1

독립 실행 형 JackRabbit 저장소가 있습니다. 일부 자격 증명 (쓰기 액세스)을 사용하여 RMI를 통해 채워집니다. HTTP를 통한 읽기 액세스가 모든 자격 증명에 사용됩니다 (기본적으로).Jackrabbit 로그인 프롬프트 건너 뛰기

사용 사례 중 하나는 JSP 페이지의 저장소 항목 (파일)에 대한 URL 링크를 생성하여 사용자가 클릭하여 브라우저에서 보거나 다운로드 할 수 있도록하는 것입니다. 링크가 생성되지만 클릭하면 403 오류가 발생합니다. 해당 링크를 다른 브라우저 탭에 복사 붙여 넣으면 로그인/비밀번호를 묻고 표시하거나 다운로드합니다.

나는 다음과 같이 URL에 일부 (비어) 로그인/암호를 전달하는 방법에 대한 생각했다 :

http://user:[email protected]:port/blahblah 

를하지만이 (RFC로 HTTP 허용되지 않습니다 작동하지만 때때로, 항상 등을 그게 내게 맞지 않는다)

질문은 HTTP 액세스에 대한 로그인/암호 프롬프트를 제거하는 방법입니까? 모든 자격 증명이 읽기 액세스를 허용하기 때문에 중복되는 것처럼 보입니다. repository.xml, security.xml 또는 다른 곳에서 구성 할 수 있습니까?

답변

2

Jackrabbit 웹 응용 프로그램의 WEB-INF/web.xml 배포 설명자에서이를 구성 할 수 있습니다.

<init-param> 
    <param-name>missing-auth-mapping</param-name> 
    <param-value>anonymous:anonymous</param-value> 
    <description> 
     Defines how a missing authorization header should be handled. 
     1) If this init-param is missing, a 401 response is generated. 
      This is suitable for clients (eg. webdav clients) for which 
      sending a proper authorization header is not possible if the 
      server never sent a 401. 
     2) If this init-param is present with an empty value, 
      null-credentials are returned, thus forcing an null login 
      on the repository. 
     3) If this init-param is present with the value 'guestcredentials' 
      java.jcr.GuestCredentials are used to login to the repository. 
     4) If this init-param has a 'user:password' value, the respective 
      simple credentials are generated. 
    </description> 
</init-param> 

문제를 해결해야이 매개 변수를 사용하십시오 SimpleWebdavServlet에 대한 <servlet> 구성 항목은 기본적으로 주석 년대 missing-auth-mapping 옵션이 포함되어 있습니다.

+0

조언 해 주셔서 감사합니다. 실제로 독립형 Jackrabbit jar에서는 주석 처리되지 않았습니다. 어쨌든 ... 설명 된 모든 종류의 값 (비어 있음, guestcredentials, 1 : 1, 익명 : 익명, ...)으로 param-value를 설정했으며 여전히 로그인/비밀번호를 계속 묻습니다. 이 매개 변수는 로그인/암호가 지정되지 않았지만 요청하는 것을 금지하지 않을 경우 사용할 매개 변수를 표시합니다. – manuna

+1

@manuna 나는 이것이 너에게 너무 늦었다 고 알고있다. 그러나 다른 사람들의 이익을 위해서 : 나는 또한 이것으로 인해 잡혔다.이 매개 변수를 받아들이는 두 개의 서블릿이 있었고, 매개 변수가 기본적으로 선언 된 것이 ' JCRWebdavServer '(JcrRemotingServlet) 서블릿을 사용하지만'Webdav '(SimpleWebdavServlet) 서블릿 아래에 매개 변수를 선언하려고합니다. –