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

tomcat - 如何为 2 个不同的(用户和管理员)身份验证设置 Tomcat web.xml 和 context.xml

这是我的情况:

我想要下面的东西

我的网站/客户/*

在访问之前要求基于表单的身份验证(通过 mysite/customer/login.jsp 登录,使用自己的 user_password 表和角色。)

我想要下面的东西

我的网站/管理员/*

在访问之前需要另一个基于表单的身份验证(通过 mysite/admin/login.jsp 登录,使用另一组 admin_user_password 表和角色。)

在 Tomcat 6.0 下可以做到这一点吗?如果是这样,有人可以简要描述我如何实现这一点吗?我环顾四周,只看到了 1 个 Realm 设置的示例……之前没有见过多个 Realm 设置。

我使用 JDBCRealm。

0 投票
1 回答
257 浏览

java - org.apache.catalina.realm.JDBCRealm 中是否有错误?

http://www.docjar.com/html/api/org/apache/catalina/realm/JDBCRealm.java.html

要使用这个 JDBCRealm,我们需要两个表,user 和 user_role。

当 user_id 作为外键存在时,为什么 user_role 表中需要 user_name。JDBCRealm 可以使用连接查询来提取角色或直接查询,如果它存储来自先前查询的 user_id。

0 投票
1 回答
1279 浏览

java - MySQL PASSWORD() 函数的 JDBCRealm 摘要

对于内部 Tomcat/Java/Struts 应用程序,我们将自定义编写的身份验证代码转换为使用 JDBCRealm。数据库是 MySQL 5.0,密码存储为PASSWORD()加密字符串。在我们的 MySQL 版本中,该PASSWORD()函数是一个非标准(专有?)的 41 字节散列。(我现在知道我们不应该将它用于我们的密码,而应该使用SHA1()or MD5()。但我们在这里。)

有什么方法可以使用 JDBMRealm 而不强制我们所有的用户重新输入他们的密码,以便我们重新编码它们?是否有 JDBCRealm 摘要允许我们针对PASSWORD()-encoded 密码列进行身份验证?

0 投票
2 回答
2180 浏览

authentication - Glassfish 身份验证:领域可以是外部数据库吗

我对登录和身份验证概念完全陌生。我正在开发一个 Glassfish 网络应用程序,该应用程序应该向任何访问者呈现一般内容,并为使用用户名和密码登录的注册用户提供一些额外内容。

我一直在阅读有关安全性的 Java EE 教程,并且我认为基于表单或 HTTP 身份验证将满足我的需求(访问者在尝试浏览受保护的内容时被要求提供凭据)。

然而,我的第一个猜测是注册用户应该连同他们的散列和加盐密码一起存储在外部数据库中。Glassfish 中 Web 应用程序的安全性似乎依赖于直接在应用程序服务器上手动填充的领域(定义用户和组并将它们映射到应用程序中的角色)。

我是否误解了 Glassfish 的安全目的?或者领域可以是应用程序服务器之外的外部数据库吗?任何指向有关此主题的文档的链接都会对我有用。

先感谢您

0 投票
4 回答
7370 浏览

security - glassfish jdbcrealm身份验证中的受限页面未触发登录

我对 EJB 安全性和 GlassFish 身份验证、授权机制非常陌生。我有一个jdbc领域并配置sun-web.xmlweb.xml映射角色并限制对页面的访问。

但是,我的问题是,当我限制对所有页面的访问时,它会起作用并在加载欢迎页面之前触发登录弹出窗口(使用 BASIC 身份验证)。

但是当我限制对文件夹中页面的访问时security,GlassFish 不会提示登录并将用户重定向到受限页面。

请帮我解决这个问题..提前非常感谢。

我打开安全管理器后也发现了这些条目

p>

似乎 admin-realm 中的管理员主体已自动进行身份验证并用于我的应用程序,而不是使用我的 jdbcrealm。关于如何解决这个问题的任何想法?

更新

对不起,我刚刚将身份验证更改为要检查的表单。我又把它改回了 BASIC。是的,我将 jdbcrealm 名称作为默认领域。

你的权利..正是这样

GlassFish 不会重定向到登录表单页面,并且对受限资源的访问不受限制

我认为这是因为 admin-realm admin 自动经过身份验证,当我尝试访问受限制的页面时,它会检查经过身份验证的用户,并且由于它是管理员并且它具有对页面的授权,因此该页面是可访问的并且不会提示登录。

当我运行应用程序并且不尝试登录到玻璃鱼的管理控制台时,这些仍然出现

还有这些

更新 2

我尝试使用<url-pattern>/*</url-pattern> 而不是<url-pattern>/security/*</url-pattern>

有趣的是,这就是我在跟踪中得到的。

它进入拒绝访问页面。

'HTTP 状态 403 - 访问请求的资源已被拒绝'

我不明白 glassfish 如何在没有用户提交登录凭据的情况下对用户员工进行身份验证。它甚至说“密码登录成功:员工”。请帮我解决这个问题。


首先非常感谢您的努力。我仍然坚持这个问题。我在这里发布xml文件。

sun-web.xml

web.xml

也没有堆栈跟踪。没有例外.. 用户只是被重定向到安全页面,就好像没有身份验证要求一样。这是一个使用 Netbeans 6.5.1 和 Glassfish v2 的 jsf 可视化 Web 开发项目。非常感谢。

0 投票
1 回答
372 浏览

java - 在 GlassFish 中配置 jdbcRealm 的表命名约定

我正在尝试使用具有“用户”和“组”以外的命名约定的现有表在 GlassFishV3 中配置 jdbcRealm;除非以这种方式命名表,否则该领域似乎不起作用。我的问题是,为什么限制?除了重命名我现有的表之外,还有其他解决方法吗?

0 投票
1 回答
41773 浏览

security - 使用 jersey 客户端访问安全的 RESTful Web 服务

我创建了基于 Jersey 的 Web 服务(通过 Netbeans 自动生成)。

我还创建了一个用户名“testClient”,密码为“secret”,创建了用户组“Users”,并使用 glassfish 3.0.1 管理控制台使用了文件 Realm。

我还相应地映射了 web.xml 和 sun-web.xml。

我的网络服务已成功保护;当我访问该网站时,我会收到一个安全警告,然后提示我提供用户名和密码以访问该网站的任何内容。通过网络浏览器访问时它工作正常。

现在我已经编写了一个基于 jersey 的简单客户端,并尝试访问第一个项目提供的 Web 服务;客户端代码在这里

自动生成的 Jersey 客户端代码

Main 方法中的代码;使用自动生成的代码

结果:

我还想告知,这是在不同服务器上运行的两个不同项目,都是 glassfish 3.0.1。我还尝试在同一台服务器上运行客户端和服务,但都是徒劳的。我被困住了;请帮助我。

干杯!

0 投票
1 回答
7254 浏览

java - Glassfish 安全 - jdbcRealm:如何使用 SHA-256 摘要配置登录

我在 glassfish v3.0.1 b22 中使用 jdbcRealm 来保证安全。它被设置为使用我的数据库中的 USER 表通过以下博客进行身份验证:http: //blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication. 如果我将摘要算法保留为纯文本,我可以正常工作。但是,当我尝试将 SHA-256 用于摘要算法时,它停止工作。我所做的是在 Glassfish - Security - Realm - jdbcRealm - 摘要中指定我想要 SHA-256(我只是在摘要字段中输入 SHA-256)。然后我编写了一个简单的 Java 程序来将密码文本转换为 SHA-256 哈希。然后,我将该哈希粘贴到数据库中的密码字段中。顺便说一句,密码字段是类型 varchar(30)。我不能再登录了。我注意到我的简单 Java 程序每次为同一个文本字段生成不同的哈希值的一件事。

下面是我的简单java程序:

0 投票
3 回答
3036 浏览

security - 具有多个 JAAS 安全领域的 Java 应用程序

我想知道是否有可能拥有具有多个 JAAS 安全领域的 Java EE 应用程序。我目前正在开发一个应用程序,其中一些用户需要使用存储在数据库中的数据进行身份验证,而其他用户需要通过 LDAP 绑定进行身份验证。

所以我在 glassfish 3.1 中创建了 2 个安全领域,一个 JDBC 领域和一个 LDAP 领域,并将我的 web.xml 配置为使用 LDAP 领域(大多数用户是 LDAP)。

然后我使用:

对用户进行身份验证

在调用“request.login”之前是否可以切换到 JDBC 领域?

提前致谢

0 投票
1 回答
2724 浏览

java - 将具有自定义领域的 Web 应用程序部署到 Tomcat 6 后的 HTTP 状态 404

我为 Tomcat 6 开发了一个 Web 应用程序,但我遇到了一个我不知道如何解决的问题。让我们考虑以下小场景。想象一下,不仅需要通过用户和密码对用户进行身份验证,而且只有在某些额外条件为真(例如,用户、密码和他的 IP 地址匹配)时才会授予身份验证。据我了解,Tomcat 引入了领域的概念。一个简单JDBCRealm的应用程序就足够了,因为直到现在才检查用户和密码对。现在也需要检查 IP 地址。我编写了一个扩展类的简单测试JDBCRealm类:

然后我尝试使用以下方法绑定这个领域类context.xml

Web应用部署成功,但是当我尝试访问登录页面时,Tomcat返回404页面(我怀疑问题的根源是节点中的className属性):Realm

HTTP Status 404 -
type Status report
message
description The requested resource () is not available.
Apache Tomcat/6.0.24

如何绑定自定义JDBCRealm后代context.xml?也许我尝试使用它是完全错误的JDBCRealm,但无论如何我都看不到正确的解决方案。

提前致谢。