Http 跳过Jackrabbit登录提示

Http 跳过Jackrabbit登录提示,http,login,jackrabbit,Http,Login,Jackrabbit,我有一个独立的JackRabbit存储库。 它通过RMI使用一些凭证(写访问)填充。 对任何凭据启用HTTP读取访问(默认情况下) 其中一个用例是在JSP页面上生成指向存储库项(文件)的URL链接,以便用户可以单击它们在浏览器中查看或下载。链接已生成,但单击它们后,我们会得到403错误。如果该链接被复制粘贴到另一个浏览器选项卡上,它将请求登录/密码并显示(或下载)该文件 我想把一些(可能是空的)登录名/密码传递给URL,如下所示: http://user:password@host:port/b

我有一个独立的JackRabbit存储库。 它通过RMI使用一些凭证(写访问)填充。 对任何凭据启用HTTP读取访问(默认情况下)

其中一个用例是在JSP页面上生成指向存储库项(文件)的URL链接,以便用户可以单击它们在浏览器中查看或下载。链接已生成,但单击它们后,我们会得到403错误。如果该链接被复制粘贴到另一个浏览器选项卡上,它将请求登录/密码并显示(或下载)该文件

我想把一些(可能是空的)登录名/密码传递给URL,如下所示:

http://user:password@host:port/blahblah
但是RFC不允许HTTP使用它(尽管它有时有效,但并不总是有效,这不适合我)


问题是,如何删除HTTP访问的登录/密码提示?这似乎是多余的,因为任何凭据都允许读取访问。可以在repository.xml、security.xml或其他地方配置它吗?

您可以在Jackrabbit webapp内的
WEB-INF/WEB.xml
部署描述符中配置它。SimpleWebdavServlet的
配置条目包含默认注释掉的
缺少身份验证映射
选项:

<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>

缺少身份验证映射
匿名:匿名
定义应如何处理缺少的授权标头。
1) 如果缺少此init参数,将生成401响应。
这适用于
如果
服务器从未发送过401。
2) 如果此init参数的值为空,
返回空凭据,因此强制使用空登录
在存储库上。
3) 如果此init参数的值为“guestcredentials”
使用java.jcr.GuestCredentials登录到存储库。
4) 如果此init参数具有“user:password”值,则相应的
生成简单凭证。

启用此参数可以解决您的问题。

谢谢您的建议。实际上,这并没有在独立的Jackrabbit jar中被注释掉。无论如何我已经将param值设置为所描述的所有类型的值(空、guestcredentials、1:1、anonymous:anonymous,…),它仍然不断询问登录/密码。看起来这个参数说明了在没有指定登录名/密码的情况下应该使用什么,但并不禁止询问。@manuna我知道这对你来说太晚了,但为了其他人的利益:我也被这个参数抓住了-结果有两个servlet接受这个参数,默认情况下声明参数的是“JCRWebdavServer”(jcremotingservlet)servlet,但您希望在“Webdav”(SimpleWebdavServlet)servlet下声明参数。