问题标签 [jdbcrealm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
768 浏览

java - 具有摘要式身份验证的 Glassfish JDBC 领域

我正在开发一个 Java REST 项目,我目前正在使用带有基本身份验证的 JDBC 领域。我正在存储密码的 SHA-256 哈希,基本身份验证工作正常。为了切换到 Digest 身份验证,我将领域的 JAAS 上下文从 jdbcRealm 更改为 jdbcDigestRealm,并在 web.xml 中将 auth-method 设置为 DIGEST。

由于某种原因,如果我提供哈希本身,这会导致身份验证成功。当设置为摘要身份验证时,Glassfish 似乎不会自动散列提供的密码字符串,然后检查它,就像基本身份验证一样。

这是我的领域配置:

  • JAAS 上下文:jdbcDigestRealm
  • JNDI:jdbc/restshop
  • 用户表:用户
  • 用户名栏:用户名
  • 密码栏:密码
  • 组表:user_role
  • 组名列:role_name
  • 摘要算法:SHA-256
  • 编码:十六进制

领域配置中还有密码加密算法字段,我不确定它的目的是什么。

任何帮助表示赞赏,如果您需要任何其他信息,我会提供。谢谢。

0 投票
1 回答
1515 浏览

login - 容器重启后所有 glassfish 登录模块都停止工作

这是我遇到的另一个登录模块问题的扩展版本。我诊断出一些更重要的细节,这些细节鼓励我开始新的话题。Glassfish 重新启动后,所有登录模块都停止工作。更有趣的是,Glassfish 报告了正确加载的模块。

但在基本身份验证期间,我无法使用任何安全领域。我用新用户尝试了自定义 jdbcRealm 和预配置的 fileRealm 它最终得到了这个:

还有这个

此外,我什至不能使用更复杂的 asadmin 命令,因为我在 server.log 中收到“未经授权的错误登录名或密码”

我检查了 LoginContext 实现,它看起来像这样

一直走错路,返回null。

我不手动操作配置文件。我可以以某种方式破坏它们以阻止 LoginModules 吗?

上面的 ConfigurationEntry 正在读取哪个配置文件?

在这个不幸的 MySQL 数据库重启问题发生之前。Glassfish 连接池的可用空间比数据库允许的要多。从数据库中删除连接后,更改适当的连接号后,我重新启动了容器,一切都崩溃了。

login.conf 存在于域目录中,看起来没问题。

希望得到帮助

0 投票
1 回答
9695 浏览

mysql - 如何在 Apache Tomcat 7 中设置 JDBCRealm?

我希望从 MySQL 数据库加载用户(允许登录到我的站点)。为此,我想为我的 Apache Tomcat 7 应用程序服务器设置一个 JDBCRealm。

我已经阅读了文档并使用 JNDI 资源 (jdbc/foo4) 创建了一个数据库连接。该资源有效(我已经在我的应用程序中使用它来检索数据)。似乎不起作用的是将领域与此资源联系起来。

我的配置文件如下所示:

src\main\webapp\META-INF\context.xml

在我的标准部署描述符中,我输入了以下内容:

src\main\webapp\WEB-INF\web.xml

我使用这个 SQL 脚本创建了一个示例用户:

安全.sql

创建表用户( user_name varchar(15) not null 主键,user_pass varchar(15) not null );

创建表 user_roles ( user_name varchar(15) not null,
role_name varchar(15) not null, 主键 (user_name, role_name) );

INSERT INTO users(user_name,user_pass)VALUES('benny','test'); 插入到 user_roles(user_name,role_name)VALUES('benny','admin');

但我无法使用用户“benny”和密码“test”登录。我可以使用用户“tomcat”和密码“tomcat”登录(因为它是在 %CATALINA_HOME%\conf\tomcat-users.xml 中定义的),但我无法使用我自己的用户从我的 MySQL 数据库登录。

当然,我的 Tomcat 服务器使用的是 MySQL 驱动程序(我将“mysql-connector-java-5.1.9.jar”放入 %CATALINA_HOME%\lib)。

当我尝试登录时收到以下错误消息:

有人看到错误吗?

0 投票
1 回答
197 浏览

tomcat - 如何为每个组中具有不同角色的用户实现 JDBCRealm?

我想使用 JDBCRealm 进行登录身份验证,但是我没有一个 user_role 表,而是有一个 groups 表,它有一个指向每个包含用户的组表的指针,并且它在该组中的角色,我应该如何为这种情况实现 JDBCRealm?

谢谢你

0 投票
0 回答
306 浏览

security - EJB 容器中的 Java EE 安全角色以及它们如何从 Web 容器传播和/或与 Web 容器相关

前几天我在我正在开发的应用程序上进行了测试。我想看看安全性是如何从 Web 层传播到 Java EE 容器的。我写了几页,一个支持 bean 和一个 EJB 无状态 bean 来做到这一点。我进行了设置,以便我可以登录并检查我在 Web 层和 EJB 容器上的主体和角色。

对 EJB 上下文的调用表明我与通过 Faces 上下文的调用具有相同的主体。然而,当 web 层报告 (getRole) 确认我在数据库中设置的组中时,对 EJB 端的调用失败并引发了异常。基本上它说它可以找到没有像我问它关于在其上下文中配置的组。事实上,我没有在 EJB 端进行任何安全配置。

我似乎在这里遗漏了一些东西。我需要什么来确保双方在角色/组方面保持同步。我已经配置了 Web 端,以便它通过 JDBC 领域将用户映射到组(这不是自定义的,而是标准配置选项)。

请注意,我使用的是 Glassfish 3.1.1,并且我创建了一个自定义的 JDBC 领域,以我认为更简洁的方式将我的组与我的用户匹配(即在两者之间使用查找表)。FWIW,我在软件领域已经有很长一段时间了,但刚刚习惯了全栈 Java EE(大约一年)。

0 投票
2 回答
4620 浏览

java - 需要帮助在 Tomcat 中设置多个领域

我正在尝试在 tomcat 中设置两个领域,但由于某种原因它不允许我这样做。我想使用标准的 UserDatabaseRealm (conf/tomcat-users.xml) 来做管理工作(比如部署 webapps),但我想要一个自定义领域来为特定的 webapp 进行身份验证。

所以,我试着把它放在我的 webapp 的上下文中:

这实际上只是 server.xml 中的内容的副本,并进行了一些更改:

  • 名称从 UserDatabase 更改为 CustomDatabase。

  • 路径名是绝对路径名(与我用于主领域的相同)。

我总是遇到同样的错误:

而且我不知道它在告诉我什么。它在谈论什么组件?

除了上面的上下文,我还尝试了其他一些方法,但它总是给出同样的错误:

  • 我尝试使用 GlobalNamingResources 标记包装资源以及是否存在相同的错误。

  • 我尝试将 Resource 的 auth 属性更改为 Container 和 Application 并得到相同的错误。

我错过了什么?谷歌的所有帮助主要是人们搞砸了他们的主要领域(我的很好)而不是试图配置第二个领域。

0 投票
1 回答
912 浏览

java - 调试自定义 tomcat 领域

我正在使用 maven 和 eclipse juno 为 Tomcat 7 开发一个自定义领域。

它看起来很像使用 LDAP 身份验证和 JDBC 授权实现 Tomcat 领域中描述的解决方案,其中:

  • 一个适应的 hasRole 方法,因为接口略有改变(附加 Wrapper 作为第一个参数);
  • 一些内部特定的东西。

当我尝试使用 eclipse 调试这个领域时,我不断遇到以下异常:

据我所知,这个类在 $TOMCAT_ROOT/lib/tomcat-coyote.jar 中:

该项目非常简单,一个 Maven 构建的 jar 以这种方式配置:

生成的 jar 放在 $TOMCAT_ROOT/lib 中。

任何的想法 ?

补充:问题只发生在 ldaps 连接上。使用非 SSL ldap 连接,一切正常。

即使我在 m 中手动设置参数时也是一个重载的“open”方法,代码如下:

}

...奇怪的异常发生在 InitialDirContext 构造函数中。

更新:如果我将 javax.net.ssl.trustStore 属性设置为本地文件而不是 jar 中包含的文件,它可以工作。

所以 :

作品。知道为什么吗?

0 投票
0 回答
238 浏览

tomcat - 配置 Tomcat 7 领域中的错误

嗨,任何人都可以帮我解决这个问题,我花了整个晚上但无法让它工作:(这是我的 web.xml

当我输入一个磨损的用户名或密码时,它会导致错误的User.jsp(它必须连接到数据库),但是如果我输入正确的用户名和密码,它会显示: message Invalid direct reference to form login page description The request sent客户端在语法上不正确(对表单登录页面的直接引用无效)。

有人知道它有什么问题吗?提前致谢

0 投票
1 回答
327 浏览

web-services - Glassfish 仍然使用默认领域

我在战争中捆绑了一个安全的 Web 服务(通过 ssl 的消息身份验证),我正在尝试使用 jdbcRealm 来验证用户。jdbcRealm 可以与其他耳朵应用程序一起正常工作,但不适用于这个 .war 实际上 glassfish 仍在使用 fileRealm,尽管在 web.xml 中完成了配置

网页.xml:

在控制台中我得到这个:

如何解决这个问题?谢谢。ps:我正在使用带有 jdk6 的 Glassfish 3.1.2.2 b5

0 投票
1 回答
5794 浏览

tomcat - Tomcat JDBC 与 DataSource 领域

对于testappweb.xml 中包含以下内容的 webapp(除其他外)

考虑以下两个 Tomcat Realm 配置:

配置 1 - JDBC 领域:

.../webapps/testapp/META-INF/context.xml

配置 2 - 数据源领域:

.../webapps/testapp/META-INF/context.xml

并在.../conf/context.xml

由于我不清楚的原因,配置 1 对我们有用,但配置 2 不适用。请注意,我们使用配置 2 中的 Context.xml 资源在我们的代码中到处连接到 MySQL,它工作得很好。然而,当一个 tomcat Realm 尝试使用它时,身份验证总是失败,即使它似乎在做与配置 1 相同的事情。

任何人都知道为什么会这样?