我在web.xml中搜索一个简单的true / false标志,用于在JSF中启用或禁用身份验证。
情况:
我有一个带有以下代码进行身份验证的web.xml:
<login-config>
<auth-method>${test.auth}</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-role>
<description>Tester</description>
<role-name>Tester</role-name>
</security-role>
<security-constraint>
<display-name>Test-Server-Access</display-name>
<web-resource-collection>
<web-resource-name>Test-Server-Access</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>Tester Access</description>
<role-name>Tester</role-name>
</auth-constraint>
<user-data-constraint>
<description>HTTPS Login</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
一切都按预期工作,非常适合我的目的。但有一件事情还有。
正如你所看到的,我想填写一个参数(<auth-method>${test.auth}</auth-method>
),这也很有效。但是现在我需要像标志一样用这样的参数禁用整个auth机制。我已经尝试使用<auth-method>NONE</auth-method>
,但我认为系统仍然期望用户担任Tester角色。
那么如何在不注释的情况下禁用整个身份验证机制呢?
上下文:
我的应用程序有不同的环境:
在本地机器上开发
试验服务器
生产-服务器
现在我希望只在Test-Server上进行身份验证。为此,我使用maven-profiles
开发 - &gt;没有个人资料
测试服务器 - &gt;测试资料
Production-Server - &gt;生产资料
为了实现这种不同的行为,我通过maven过滤web.xml并在构建时插入值,例如<auth-method>${test.auth}</auth-method>
。
感谢您的帮助。
答案 0 :(得分:1)
我通过将url-pattern设置为从未使用过的站点来解决问题。这不好,但它现在有效:/。
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-role>
<description>Tester</description>
<role-name>Tester</role-name>
</security-role>
<security-constraint>
<display-name>Test-Server-Access</display-name>
<web-resource-collection>
<web-resource-name>Test-Server-Access</web-resource-name>
<description/>
<url-pattern>${test.url}</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>Tester Access</description>
<role-name>Tester</role-name>
</auth-constraint>
<user-data-constraint>
<description>HTTPS Login</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
如果有任何问题,我将不胜感激。