在JSF web.xml中寻找禁用Auth的标志

时间:2014-05-06 13:12:23

标签: jsf java-ee authentication web.xml

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

感谢您的帮助。

1 个答案:

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

如果有任何问题,我将不胜感激。