问题标签 [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 投票
1 回答
565 浏览

java - 如何在 Java EE 应用程序中添加“禁用用户”管理功能?

我有一个 Java EE 应用程序,用于 GlassFish 3.1 上的身份验证JDBCRealJAAS Context下面是 JSF2.0 managedbean 中的身份验证代码 -

我正在尝试添加一些管理功能(如创建/删除/更新/禁用用户)。我几乎完成了所有这些,除了“禁用”一个,这让我对如何继续感到困惑。

我现在能想到的唯一方法是在“用户”表中添加一个字段,例如“状态”,该字段将具有一个值(“启用”或“禁用”)。并在进行身份验证之前检查“状态”。

考虑到我正在使用 JAAS (JDBCRealm),我应该这样做吗?或者,还有其他(标准)方式吗?

我想看看,这里是否有人在这方面有一些经验,可以为我指明正确的方向。

0 投票
1 回答
1846 浏览

glassfish - 无法使用 jdbc 领域和 Glassfish 设置基本身份验证

我正在使用 Glassfish v3 和一个非常简单的 JAX-RS 服务(取自http://www.vogella.de/articles/REST/article.html

我想要实现的是为所有资源设置基本的 http 身份验证。如果希望当用户请求http://localhost:8080/de.vogella.jersey.first/rest/hello时,浏览器会弹出一个警报提示输入用户名+密码。

我决定进行 JDBCRealm 身份验证。我使用 PostgreSQL 8.4 和正确的 JDBC 驱动程序。

我的问题是身份验证似乎没有激活(HTTP 标头非常简单:

身份验证已设置,但似乎无效。到那时,我需要你的技能来分析我做错了什么。

到目前为止我所做的:

1/ 部署了 JAX-RS 服务(这工作正常,参见之前的 URL) 2/ 创建了一个数据库,创建了两个表:

并将它们填充如下:

表“组”->“网络用户”;“员工”

表“用户”->“网络用户”;“网络用户”

3/ 在 Glassfish 管理 GUI 中,我添加了一个名为“postgres”的连接池,如下所示: http://puu.sh/6DZV 附加属性如下所示: http://puu.sh/6E05

4/ 然后我创建了一个名为“postgres”的 JDVC 资源,如下所示: http://puu.sh/6E0H

5/ 在 Glassfish 管理 GUI 中,我添加了一个名为“postgres”的安全领域,如下所示: http://puu.sh/6E1b

6/ 我还在“Logger Settings”中将 javax.enterprise.system.core.security 的日志级别设置为“FINEST”。从浏览器请求网络服务后,我在 server.log 文件中得到以下内容:

7/关于代码,我没有添加任何注释,但我更新了我的 web.xml 如下:

sun-web.xml 如下:

这有什么问题?我忘了什么吗?

感谢您的时间 !

0 投票
2 回答
783 浏览

java - jdbcDigestAuthentication 仅在提供哈希时有效

我开始了一个设置基本身份验证的项目。我现在想切换到摘要式身份验证。问题是,只有当我提供实际密码的哈希值而不是实际密码时,身份验证才会被验证。

我做了以下从 BASIC 切换到 DIGEST:

  1. 在我的 web.xml 中将身份验证方法更改为 DIGEST

  2. 将我的 JDBC 领域的 JAAS 上下文更改为“jdbcDigestRealm”

  3. 在我的数据库中,我曾经有“密码”作为密码,我更改为 MD5(webuser:postgres:webuser) 的结果(其中 webuser 是登录名,webuser 是密码,而 postgres 是领域),在换句话说,我将表中的密码设置为 c3c2681ed07a5a2a5cb772061a8385e8。

我遇到的问题是,当我尝试访问资源时,浏览器会显示登录弹出窗口,但使用“webuser”作为密码不起作用。但是,使用“c3c2681ed07a5a2a5cb772061a8385e8”作为密码有效。看来我仍处于 BASIC 身份验证模式。

有什么线索吗?

谢谢 !

0 投票
2 回答
3354 浏览

sql - 在Tomcat 7上未经授权的身份验证

我有一个烦人的错误,我有一段时间无法解决。我最近被介绍到基于容器的安全性并尝试实现它。我已将领域配置如下:

不幸的是,我无法使用此登录。日志错误消息是:

请注意用户名周围的 ''... 这是正确的吗?

如您所见,我也使用allRolesMode="authOnly",因为我不需要此功能,而且数据库没有并且永远不会有额外的用户角色列(如果不使用它,那么每个用户都会使用它是毫无意义的在此列中具有相同的值 - 资源浪费很大。)。

服务器是Tomcat 7.0.19

0 投票
1 回答
1455 浏览

glassfish - 自动 JDBC 领域配置

我想知道是否可以在没有管理控制台的情况下在 Glassfish 3.1 中创建 JDBC 领域配置,例如使用glassfish-resources.xml. 当开发人员下载我的 GIT 存储库时,他们不喜欢配置 Glassfish,它是在部署时配置的。

最好的问候穆尼尔

0 投票
1 回答
2397 浏览

oracle - 通过 SSL 使用 Oracle 数据库的 Tomcat JDBCRealm (PROTOCOL=TCPS)

我正在尝试在 tomcat 中实现 JDBCRealm(如http://tomcat.apache.org/tomcat-4.1-doc/realm-howto.html#Configuring%20a%20Realm中所述)来检查 Oracle 数据库的凭据。问题是我希望数据库通过 SSL 进行通信。所以我将监听器配置为使用 TCPS。像那样:

生成的证书等。我使用来自 sqlplus 或 WLS 的 tcps 连接到数据库没有问题(我可以在那里使用连接属性oracle.net.ssl_cipher_suites=(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)没有任何问题)。

但是,我无法让 JDBCRealm 通过 TCPS 使用数据库。如果我像这样配置领域:
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = <hostname>)(PORT = 1512)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <service name>)))" connectionName="<login>" connectionPassword="<password>" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" />
我收到以下错误:

我在 JKS 存储中导入了我在 Tomcat 中配置的证书,如下所示:

没有成功。

我不是 Tomcat 的专业人士(更多的是数据库)。我将不胜感激任何帮助或指出我正确的方向。提前致谢!

0 投票
1 回答
25775 浏览

glassfish - LoginException:登录失败:安全异常

我正在尝试使用 GlassFish v3.1.1 Build 12 和 JSF 2.1 设置容器管理的安全性。由于某种原因,我不断收到以下异常,我无法登录。

网页.xml:

glassfish-web.xml:

GlassFish 管理控制台领域设置:

领域名称: PerProUserAuth
类名称: com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm
JAAS 上下文: jdbcRealm
JNDI: MyDS
用户表:用户
用户名列: mem_id
密码列:密码
组表:用户
组名列: mem_status
摘要算法: SHA-256
编码: Base64

最后,我的 USER 表的 mem_id 为“admin”,密码为 SHA-256 base 64,编码为 (plaintext:admin):JIkcSMs4aijfwzpVjZ0MbzgWmoieGm7fxF0pTmH+cUI=

0 投票
1 回答
1605 浏览

security - Tomcat 7.11 JDBCRealm 和 UserDatabaseRealm 不能一起工作

我正在尝试为我的 Web 应用程序(JSF 2.1 + hibernate)设置一个容器管理安全领域。我注意到 Tomcat 7 一次只能使用一种类型的领域。

要在 netbeans (7.0) 中使用 Tomcat,我必须创建一个管理员脚本角色的帐户。除了与 Tomcat 经理一起工作外,我还需要另一个角色。这对我来说是一个大问题,因为我用于 JDBCRealm 的表是来自存储用户和角色的实际表的视图,我不想将这两个角色都存储在我的程序使用的同一个数据库中。

有没有办法让 JDBCRealm 和 UserDBRealm 一起工作?那将是一种解脱。

这是来自 server.config 的代码:

tomcat 只使用他在文件中找到的最后一个。他们分别工作正常

0 投票
1 回答
511 浏览

netbeans - GlassFish 3 自定义领域密码列

我使用以下属性配置了我的 glassfish 自定义领域:

这是我数据库中的引用表:

乌苏里奥:

我的问题是这样的:

用户 'SSS' 登录没有问题,所以领域做得很好,另一方面 AAA 无法获得身份验证,密码不匹配。

这是我的登录表单:

还有一件事,即使我在登录表单中为它写了任何密码,“SSS”用户也会登录。

拜托,一些帮助会很棒。先感谢您。

0 投票
1 回答
1454 浏览

java - 为什么在 Server.xml 而不是 web.xml 中需要领域设置

我正在开发一个 Java 应用程序一段时间。我主要在 .NET 平台上工作。虽然我觉得这两个平台之间有很多概念是共同的,但是我发现一些与配置相关的问题的领域很少。

我正在研究身份验证和授权,并认为我会得到类似于 JAVA 中.NET 的成员资格 API 的东西。我得到的最接近的是使用 j_security_check。我也了解了 JAAS,但我认为这对我来说太深入了。

我已经在数据库中创建了用户和角色表,现在我必须在某处指定 JDBC 领域设置。我正在使用 Tomcat 7.0。在大多数地方,都提到我需要在 server.xml 中指定领域设置。但这不适用于部署在该服务器上的所有 Web 应用程序,因为它将成为服务器级别的配置?

在一个站点上,我什至看到一个开发人员提到了 context.xml,但又看不到一个标准文档提到使用这个 XML 文件来设置 JDBC 领域

在 .NET 中,我们始终将成员资格设置放在 web.config 级别,而不是 Machine.config。

对此完全感到困惑。在这方面寻找一些线索。