【问题标题】:jaas, authenticate application users on a database tablejaas,在数据库表上验证应用程序用户
【发布时间】:2011-06-09 10:20:01
【问题描述】:

我想知道使用 jaas 对数据库表上的应用程序用户进行身份验证的最简单方法。
由于带有用户名/哈希密码的数据库表可能是最常见的解决方案,是否有“提供”的 LoginModule 用于这种身份验证?

【问题讨论】:

  • 对此的支持因容器而异。您可能想要添加有关您正在使用的应用程序服务器的信息。
  • 为什么它因容器而异? (我添加了“应用程序”用户这个词)。不过我会使用 Glassfish 或 tomcat 6。
  • 因为 JAAS 模块是由应用服务器开发人员或程序员编写的。 Java EE 标准中没有指定登录模块作为符合任何规范的先决条件。 Tomcat、Glassfish、JBoss 和 WebLogic(可能还有 WebSphere)支持各种形式的面向数据库的登录模块。如果您需要任何具体信息,您必须在问题中说明。
  • 这是否意味着如果您切换容器,您将需要重写应用程序的身份验证部分?

标签: java jaas


【解决方案1】:

Tomcat 6 中的JDBCRealm 支持开箱即用。这可能足以满足大多数需求。请注意,Tomcat 还提供了DataSourceRealm 以允许通过基于 JNDI 的 JDBC 数据源进行身份验证;这更适合需要专用连接池来访问身份验证数据源的应用程序。请注意,领域实现支持使用digested/hashed passwords;但默认情况下不是。这需要通过每个领域的 digest 属性进行额外配置。

Glassfish 还支持使用 JDBC 领域对主体进行身份验证。可以在Glassfish Administration Guide 中找到创建领域的详细信息。该指南可能会提供有关管理领域的允许值的可怜文档 - 您将在 a blog post 中找到这些。

如果您正在寻找管理领域中底层用户的方法,那么大多数/所有容器都没有提供相同的管理工具。您必须自己编写这些工具。

此外,如果您希望支持这些 Realm 实现不支持的摘要算法,或者让这些实现以不同的方式工作(例如在密码中添加盐,或根据策略锁定用户),那么您将需要推出您自己的实现。

现在,如果您希望在应用程序中使用这些,通常通过在应用程序的适当部署描述符中指定领域来完成。假设这是一个 Web 应用程序,您可以在 web.xml file 中指定使用的领域(用于表单、基本和摘要式身份验证方案)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2019-07-21
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多