【问题标题】:Authentication: its simplest form in Java EE 6身份验证:Java EE 6 中最简单的形式
【发布时间】:2012-05-18 16:12:55
【问题描述】:

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

我是 Java EE 6(在 JBoss AS 7 上)的新手,我来自 Tomcat + spring 世界。 我的第一个真正的 Web 应用程序类似于一个简单的 jsf jpa hibernate 和 ejb 的 crud。 现在我需要使用最简单的登录表单来保护 URL (/admin/*)。 我已经有两个名为“User”(用户名、密码、role_id 和其他数据)和“Role”(代码、名称等等)的表(休眠实体)。 我可以制作我自己的 LoginController,会话范围来管理登录相关问题,但我不知道怎么说“嘿,它只适用于 /admin 路径!” 所以....我开始阅读有关 web.xml 配置的内容:安全约束、jdbc 领域等。但是,对不起,我还是达不到一个好的知识点,我太沉迷于教程和边做边学了。

你能帮我找到一个带有简单登录表单的示例项目吗? 或者至少有一些关于如何将我的登录表单绑定到我的数据库表的教程或一些建议?我不需要 500 页的准确文档。只是试图使“标准”身份验证工作。

【问题讨论】:

  • 看看this question and answer。 OP 为您提供了一些有趣的链接。答案显示了我自己的(工作)示例配置。

标签: jakarta-ee authentication jboss java-ee-6


【解决方案1】:

好的。首先,Java EE 标准没有提供认证机制。只有基于角色的身份验证是规范的一部分。所以每一个应用服务器都必须有自己的自定义认证机制,这使得我们能够使用数据库、LDAP等来存储用户凭证。

在 JBoss 的情况下,它看起来如下。

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

(2) 您需要在JBoss 端的security-domain 中定义在configuration/standalone.xml 中。例如,请参阅this example

(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>

我不确定 JBoss 7 的情况如何,但在以前的版本中,您需要添加 java:/jaas/ 前缀,因此安全域内容将是 java:/jaas/NAME-OF-DOMAIN-DEFINED-IN-STEP-2

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

【讨论】:

  • 谢谢Piotr,这是一个很好的答案,如果我成功了,我会接受。引起我注意的第一件事是:部署了 100 个 webapps 的 jboss 怎么样?在 step2= many ?
  • >首先,Java EE 标准没有提供认证机制。 - 这不是真的。 Java EE 6 对此有一个称为 JASPIC (JASPI/JSR 196) 的标准。
猜你喜欢
  • 2011-02-19
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2014-06-09
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多