Jakarta ee 身份验证:JavaEE6中最简单的形式

Jakarta ee 身份验证:JavaEE6中最简单的形式,jakarta-ee,authentication,jboss,java-ee-6,Jakarta Ee,Authentication,Jboss,Java Ee 6,我知道这个问题不是一个好问题,因为它有无数的答案,但这里是: 我是JavaEE6的新手(在JBossAS7上),我来自Tomcat+spring世界。 我的第一个真正的web应用程序类似于带有jsf jpa hibernate和ejb的简单crud。 现在我需要用最简单的登录表单来保护URL(/admin/*)。 我已经有了两个表(hibernate实体),分别名为“User”(用户名、密码、role_id和其他数据)和“role”(代码、名称等)。 我可以制作自己的LoginControlle

我知道这个问题不是一个好问题,因为它有无数的答案,但这里是:

我是JavaEE6的新手(在JBossAS7上),我来自Tomcat+spring世界。 我的第一个真正的web应用程序类似于带有jsf jpa hibernate和ejb的简单crud。 现在我需要用最简单的登录表单来保护URL(/admin/*)。 我已经有了两个表(hibernate实体),分别名为“User”(用户名、密码、role_id和其他数据)和“role”(代码、名称等)。 我可以制作自己的LoginController,会话范围可以管理与登录相关的问题,但我不知道如何说“嘿,这只适用于/admin路径!” 所以我开始阅读web.xml配置:安全约束、jdbc领域等等。然而,很抱歉,我仍然不能达到一个好的知识点,我太沉迷于教程和边做边学

你能帮我找到一个带有简单登录表单的示例项目吗?
或者至少提供一些关于如何将登录表单绑定到db表的教程或建议?我不需要500页精确的文档。只是想让“标准”身份验证生效。

好的。首先,JavaEE标准不提供身份验证机制。规范中只有基于角色的身份验证。因此,每个应用服务器都必须有自己的自定义身份验证机制,这使我们能够使用数据库、LDAP等存储用户凭据

对于JBoss,它如下所示

(1)您需要在web.xml中定义安全约束(有大量教程介绍如何做到这一点)。它告诉您需要登录哪些URL。您需要定义登录配置元素,以便选择用户将如何登录-使用浏览器弹出窗口或自定义表单

(2)您需要在configuration/standalone.xml中定义JBoss端的安全域。例如,见

(3)您需要加入(1)和(2)。这是在jboss-web.xml文件中使用应用程序的web-INF完成的。看起来差不多

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
          <security-domain>NAME-OF-DOMAIN-DEFINED-IN-STEP-2</security-domain>
          <context-root>ROOT-OF-YOUR-APP</context-root>
</jboss-web>

步骤2中定义的域名
你的应用程序的根
我不确定JBoss7的情况如何,但在以前的版本中,您需要添加
java:/jaas/
前缀,因此安全域内容应该是
java:/jaas/NAME-of-domain-DEFINED-in-STEP-2


此外,如果您了解Spring框架,可以考虑使用Spring Security,绕过java EE机制。

OK。首先,JavaEE标准不提供身份验证机制。规范中只有基于角色的身份验证。因此,每个应用服务器都必须有自己的自定义身份验证机制,这使我们能够使用数据库、LDAP等存储用户凭据

对于JBoss,它如下所示

(1)您需要在web.xml中定义安全约束(有大量教程介绍如何做到这一点)。它告诉您需要登录哪些URL。您需要定义登录配置元素,以便选择用户将如何登录-使用浏览器弹出窗口或自定义表单

(2)您需要在configuration/standalone.xml中定义JBoss端的安全域。例如,见

(3)您需要加入(1)和(2)。这是在jboss-web.xml文件中使用应用程序的web-INF完成的。看起来差不多

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
          <security-domain>NAME-OF-DOMAIN-DEFINED-IN-STEP-2</security-domain>
          <context-root>ROOT-OF-YOUR-APP</context-root>
</jboss-web>

步骤2中定义的域名
你的应用程序的根
我不确定JBoss7的情况如何,但在以前的版本中,您需要添加
java:/jaas/
前缀,因此安全域内容应该是
java:/jaas/NAME-of-domain-DEFINED-in-STEP-2


此外,如果您了解Spring框架,可以考虑使用Spring Security,绕过java EE机制。OP为您提供了一些有趣的链接。答案显示了我自己的(工作)示例配置。OP为您提供了一些有趣的链接。答案显示了我自己的(工作)示例配置。谢谢Piotr,这是一个很好的答案,如果我成功了,我会接受它。首先让我注意的是:部署了100个webapps的jboss怎么样?在step2=many中?>首先,Java EE标准不提供身份验证机制。-事实并非如此。JavaEE6对此有一个称为JASPIC(JASPI/JSR196)的标准。谢谢Piotr,这是一个很好的答案,如果我成功了,我会接受它。首先让我注意的是:部署了100个webapps的jboss怎么样?在step2=many中?>首先,Java EE标准不提供身份验证机制。-事实并非如此。JavaEE6对此有一个称为JASPIC的标准(JASPI/JSR196)。