我已经在Orbeon Forms 2018.2.201901010020 CE
中安装了Tomcat-8.5.37
,并尝试使用用户菜单的新注销按钮-该登录在以前的orbeon版本中已经起作用。
在web.xml的登录部分中指定 FORM 作为身份验证方法,所有操作都可以顺利进行。
但是使用FORM身份验证必须将密码保存为明文,这是避免的事情。
因此,我尝试使用 DIGEST 作为身份验证方法,该方法可以保存加密的密码。
登录有效,并且用户菜单报告已登录的用户。
但是注销不会使会话无效。不再显示orbeon注销页面,而是显示表单运行器主页,并且在用户菜单中,用户仍显示为已登录。
再次单击注销按钮,所有操作都保持不变:显示表单运行器主页,并且用户已经登录。
在properties-local.xml
中,插入了用户菜单和容器身份验证的属性:
<property
as="xs:boolean"
name="oxf.fr.authentication.user-menu.enable"
value="true"/>
<property
as="xs:string"
name="oxf.fr.authentication.method"
value="container"
/>
用户和角色在tomcat_users.xml
中定义。
在web.xml
中,我将表单运行者的安全约束中的url-pattern从<url-pattern>/fr/auth</url-pattern>
更改为
<url-pattern>/fr/*</url-pattern>
,因此tomcat要求对所有fr
页进行身份验证:
<security-constraint>
<web-resource-collection>
<web-resource-name>Form Runner</web-resource-name>
<!-- <url-pattern>/fr/auth</url-pattern> original -->
<url-pattern>/fr/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>orbeon-user</role-name>
</auth-constraint>
</security-constraint>
对于DIGEST身份验证,我在login-config
的{{1}}中使用了 DIGEST ,并将 web.xml
添加到了CredentialHandler
。
server.xml
<login-config>
<auth-method>FORM</auth-method>
<!-- <auth-method>DIGEST</auth-method> -->
<form-login-config>
<form-login-page>/fr/login</form-login-page>
<form-error-page>/fr/login-error</form-error-page>
</form-login-config>
</login-config>
在测试中,我首先打开页面 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase">
<!-- <CredentialHandler
className="org.apache.catalina.realm.MessageDigestCredentialHandler"
algorithm="md5" saltLength="0" iterations="1" /> -->
</Realm>
。这不是 fr 页,因此无需输入密码即可显示。
然后,我选择了书架应用程序。这是一个fr页面,因此会弹出一个用于身份验证的页面。
通过FORM身份验证,将显示orbeon登录页面:
使用DIGEST身份验证时,将显示tomcat登录页面:
在两种情况下,成功登录后,都会显示书架摘要页面,并且用户菜单显示已登录的用户。
在DIGEST身份验证中,单击注销按钮后,下一个显示的页面是表单运行器主页,而不是orbeon注销页面。用户保持登录状态,用户名显示在用户菜单中。
再次单击注销按钮,所有操作均保持不变:显示表单运行器主页,并且用户已经登录:
附近两个orbeon日志的链接:
用于 FORM 身份验证orbeon log form authentication
的orbeon.log
用于 DIGEST 身份验证orbeon log DIGEST authentication
NB。在orbeon DIGEST日志中,我看到了管道破裂的错误,在orbeon FORM日志中,我没有看到此错误。
为了使注销也可以与DIGEST身份验证一起使用,我需要更改什么?
非常感谢您的任何建议
答案 0 :(得分:0)
简而言之,我的建议:
DIGEST
。使用web.xml
。大多数Web应用程序都使用某种基于表单的身份验证。FORM
身份验证,无法轻松注销。 BASIC
可能也是如此。我不确定这是一个值得解决的问题。另请参见HTTP Basic auth password storage more secure than Digest auth。我的理解是,DIGEST
已过时,并且比通过HTTPS正确完成基于表单的基于身份验证的安全性要低,而正确会提取数据库中的密码。