jakarta-ee - 基于表单的身份验证,但在 Java EE 6 中使用自定义身份验证方法

标签 jakarta-ee servlets java-ee-6 web.xml jaas

短版:在纯 Java EE 6 中,是否有类似 Spring's Authentication Processing Filter 的内容? ,哪个自定义基于表单的身份验证?

加长版:我正在开发一个纯 Java EE 6 Web 应用程序(JSF2、CDI),它 必须独立于稍后使用的具体 Java EE 6 容器。

访问受限的 JSF2 页面存储在/pages 子文件夹中。在我的 web.xml 中,我定义了以下内容来限制对这些页面的访问:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>??????????</realm-name>
    <form-login-config>
        <form-login-page>/login.jsf</form-login-page>
        <form-error-page>/access_denied.jsf</form-error-page>
    </form-login-config>
</login-config>

<security-constraint>
    <display-name>pages_auth</display-name>
    <web-resource-collection>
        <web-resource-name>pages</web-resource-name>
        <url-pattern>/pages/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>AuthenticatedUser</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <role-name>AuthenticatedUser</role-name>
</security-role>

如“???”所示在上面的代码中,我不能使用像 JDBC 这样的预定义领域之一,因为要使用的认证是非常自定义的(讨厌的细节:凭据是根据丑陋的遗留系统检查的)并且需要一些 Java 编码。

我希望我可以创建一个新的类来实现一些接口(interface),覆盖一些身份验证方法,参数“login”和“password”返回一个 bool 值来表示成功的身份验证。

然而,在阅读了几个小时的主题之后,我完全迷失了:-(我需要实现一个 JAAS LoginModule 和 Realm 吗?这对我来说看起来很复杂。或者还有另一种标准的 Java EE 6 方法吗?或者我需要采用实现 ServletFilter 的方式吗?

最佳答案

在领域名称标签中,您需要将您在容器中创建的领域名称放入其中。这不是领域类型,它只是您选择的领域名称。

我有一个使用 JBoss AS 的应用程序,并以我的配置为例:

web.xml

<realm-name>weblog-jaas-realm</realm-name>

独立的.xml
<security-domain name="weblog-jaas-realm">
    <authentication>
        <login-module code="Database" flag="required">
            [...]
        </login-module>
    </authentication>
</security-domain>

关于jakarta-ee - 基于表单的身份验证,但在 Java EE 6 中使用自定义身份验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940738/

相关文章:

java - 热部署后未知实体 bean 类 : netbeans 6. 9 + glassfish 2.1 + eclipselink jpa 2.0

java - Google Collection 和 Google Guava 在 Shrinkwrap-resolver 上的交叉依赖问题

具有多个 DispatcherServlet 的 Spring Boot,每个 DispatcherServlet 都有自己的 @Controller

java - 将电子邮件发件人 bean Autowiring 到另一个 bean 中?

java - Spring - 创建 Bean 时出现奇怪的错误

java - @SearchableComponent 和前缀

java - Hibernate:从 Java 代码开始数据库布局

java - 使用 AWS 1.6 时 com.amazonaws.util.VersionInfoUtils.initializeUserAgent 出现 NullPointerException

java - 列出 java webapp 中的 servlet(在 tomcat 中运行)

java - 选择某个CDI事件观察者