问题标签 [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.
tomcat - 通过应用程序对 Glassfish 进行领域配置,例如在 tomcat 中的上下文
如何通过 xml 文件在应用程序内部设置 jdbc-realm 安全性。在 tomcat 中,我们可以使用 context.xml 文件来定义领域,但是 glassfish 类似 glassfish-resources.xml 的 jdbc 资源如何做到这一点
RGDS
glassfish - 根据 Java EE 6/Glassfish 中的用户角色重定向到两个不同的欢迎页面
我已经使用 Glassfish 3.1 + JDBCRealm + MySQL (MD5) 实现了基于 FORM 的身份验证。我只有两个角色,用户和管理员。一切都很顺利,我可以从日志中看到身份验证在两种情况下都可以作为用户和管理员工作(下面的观看日志)
Q1:是否可以制作两个不同的索引文件,以便当用户是管理员时,他/她去/admin/index.xhtml,而当用户是角色用户时,他直接去faces/user/index.xhtml?
Q2:现在当我以用户身份登录时,我仍然可以进入“管理端”,只需将整个链接直接写入浏览器中的地址字段,为什么要避免这种情况?
Q3:当我以用户身份登录并且欢迎文件列表中只有 faces/admin/index.xhtml 时,即使 xml 文件告诉其他内容,它也会将我重定向到该文件,为什么?
日志:
(在 myfear 的回答后编辑) -----在 glassfish-web.xml我有这样的角色。如果我理解正确,这意味着管理员属于组:管理员、客户和用户。客户属于组:客户和用户,用户属于组用户。我理解正确吗?
谢谢!萨米人
security - Glassfish 安全 - jdbcRealm:如何实现“记住我”
我将 jdbcRealm 与 Glassfish V3 和 Java EE 6 一起使用,我想实现一个基于 cookie 的“Remember-Me”。
但是,似乎我无法在 JACC 安全检查之前设置过滤器。有任何想法吗?
authentication - 如何在启用 cookie 的情况下使用 tomcat 身份验证?
我使用 JDBCRealm 对用户进行身份验证,我希望用户几天后回来时无需再次登录。
但是这里似乎没有配置让我在 tomcat 中启用 cookie 身份验证!?
我正在使用tomcat 7。
authentication - Glassfish 3.1 登录领域不应提示输入特定 URL 的凭据
我有一个 Web 应用程序设置为在每个入口点提示输入用户名和密码。一切都需要基本身份验证,除了一个showStatus
旨在显示应用程序状态的 URL。showStatus
URL 不需要身份验证。问题是即使showStatus
访问 URL,密码对话框仍然会显示。我可以单击取消或确定并仍然访问该页面,但我想知道如何禁用showSession
URL 的对话框。
以下是 的内容web.xml
:
jakarta-ee - 无法让 jdbcRealm 工作
我正在尝试让 jdbcRealm 为我的应用程序工作。这是我到目前为止所拥有的:
在我的 web.xml 中,我有:
在 glassfish 我定义了一个领域:
我已启用安全管理器和默认主体到安全设置下的角色映射。我还设置了 jdbcDigest 的默认领域,只是为了确保我相信在 web.xml 中设置它就足够了。
我已经创建了 jdbc 资源并测试了我可以从我的 web 应用程序中访问它们,所以那里不应该有问题。
当我尝试登录时,我的表单按预期显示,但是我收到以下错误:
警告:WEB9102:Web 登录失败:com.sun.enterprise.security.auth.login.common.LoginException:登录失败:管理员文件登录失败。警告:com.sun.enterprise.security.auth.login.common.LoginException 异常:登录失败:管理员文件登录失败。在 com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:394) 在 com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:240) 在 com.sun .enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:153) 在 com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:512) 在 com.sun.web.security.RealmAdapter.authenticate (RealmAdapter.java:453) 在 org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:268) 在 org. SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com .sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) 原因:javax.security.auth.login.LoginException:文件登录失败对于管理员。在 com.sun.enterprise.security.auth.login.FileLoginModule.authenticate(FileLoginModule.java:84) 在 com.sun.enterprise.security.auth.login.PasswordLoginModule.authenticateUser(PasswordLoginModule.java:117) 在 com.sun .appserv.security.AppservPasswordLoginModule.login(AppservPasswordLoginModule.java:148) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。
让我特别担心这个错误的是它说的部分:管理员的文件登录失败,这似乎表明它仍在使用文件领域。
我还有以下警告:警告:没有映射到角色 [admin] 的主体。但我相信默认主体到角色映射设置应该负责该映射。
我确实使用密码 admin 在我的数据库中插入了一个管理员用户和角色
我错过了什么?
tomcat - 无法让 Tomcat JDBCRealm 使用 SHA2
我在明文(开发/受控环境)中使用 Tomcat 7 / JDBCRealm 身份验证。现在我想将网络应用程序上传到我的托管环境,所以我需要消化密码。
我在 server.xml 中的领域部分添加了“digest="MD5"',并通过用 MySQL 的 MD5() 函数消化的密码替换现有的明文密码来测试一些帐户。
这一切顺利。
当我尝试 SHA2(server.xml 中的'digest="SHA2"' 和 MySQL 的 SHA2() 函数来消化表中的密码)时,我不断地登录失败。我尝试了 MySQL 的 SHA2(pwd,224), SHA2(pwd,256), ...384, ...515,但都没有奏效。
我对 tomcat JDBCRealm /digest 属性的网络搜索不是很丰富。
我做错了什么?
jakarta-ee - Java EE 声明性安全性,无法为 JDBC 领域用户加载组
这是我在这里的第一篇文章。关于声明式 Java EE 安全性,我有两个问题:(1) 基于文件的身份验证和 (2) 基于 DB 的身份验证。我为这两个问题附上了配置的相关部分。我在 Glassfish 3.1.1 上运行代码。也提前感谢您的帮助。
我也在寻找我的问题的答案,并找到了一些有用的例子,我也把它们放在了消息的底部。我尝试关注它们,以便配置的当前状态可以包含这些示例的详细信息,但它们并没有解决问题。
- 如果勾选了“默认主体到角色映射”,则基于文件的身份验证可以正常工作,否则即使将主体添加到映射中,它也不起作用。我可能以不正确的方式配置了一些东西。
-基于数据库的身份验证。就授权而言,它不起作用,因为无法读取组名。请参阅下面的详细信息。身份验证工作正常,即用户被识别。我什至尝试重命名表格以避免与 Glassfish 的一些内部内容发生潜在的名称冲突......
(1)基于文件的身份验证: 文件领域,2个用户:用户,管理员添加并分配给组:用户和管理员(configurations/server-config/security/realms/file -> Manage Users)
配置/服务器配置/安全默认主体到角色映射“已勾选”->它可以工作默认主体到角色映射“未勾选”->即使将其添加到安全映射中它也不起作用。
没有默认主体映射的记录错误:
- 没有映射到角色 [用户] 的主体。
- 没有映射到角色 [admin] 的委托人。
没有默认主体映射的记录错误: 1. 没有映射到角色 [用户] 的主体。2. 没有映射到角色 [admin] 的委托人。
(2)基于数据库的认证:
Realm 在 web.xml 中将上述领域更改为 jdbcRealm
1)mn(用户和组表之间的多对多关系)
SEC1111,无法为 JDBC 领域用户 [tamas] 加载组。
2) 1-n 相同(用户和组表之间的一对多关系)
SEC1111,无法为 JDBC 领域用户 [tamas] 加载组。
3) 组名与用户名和密码在同一个表中
SEC1111,无法为 JDBC 领域用户 [tamas] 加载组。
领域配置:( 我也尝试将“分配组”留空或填写“默认”,但结果是一样的。)
mn关系的DB ER图:
必须省略图像,但作为补偿 :-) 您可以在下面找到 SQL 脚本。
我在这里复制了一些有趣的谷歌链接,这些链接对我很有帮助。原来,我跟着第二个。也许其他人也会发现它们很有用。
- http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html
- http://blog.eisele.net/2011/01/jdbc-security-realm-and-form-based.html
- ...还有一些我不得不省略,因为第一篇文章中可能只包含两个链接。
感谢您到目前为止的阅读。最良好的祝愿,
塔马斯
第 2 部分 感谢您的回复。我创建了 2 个具有一对多关系的新表用户和组。在领域配置页面上,我为用户名、密码和组设置了表名和列。马特的评论也与链接一致(见下文我不能在这里发布)
[...] 这里有趣的部分是,对于用户表和组表,我使用 v_user_role 作为属性的值。v_user_role 是一个包含用户和组信息的数据库视图。我没有直接使用用户表的原因是因为 glassfish 假设用户表和组表都包含一个包含用户名的列,这会导致重复数据。[...]
出现同样的错误。我还尝试将主键放在组表中的 groupid 列上,但从问题的角度来看,我没有遇到任何变化。有趣的是,我尝试对 1 个用户名、密码、组所在的表执行相同操作,并且出现相同的错误。
走向解决方案和解决方案
来自 Matt 的评论帮助很大,感谢这篇精彩的帖子。综上所述,在我写关于基于数据库的身份验证的问题时,很明显无法加载用户组。server.log 中的错误消息表明了这一点。
然而,我的怀疑转向了表和它们的列名之间的链接。然而,在简化了用户组实体的数据模型后,我无法解释为什么即使使用包含用户、密码和组的简单表也无法工作。我继续朝这个方向进行调查。我假设列名也会影响这一点。当我应用马特的配置时,“无法加载组”消息从 server.log 中消失了,但现象仍然存在。因此,我假设这些组可能已经加载,但也存在不同的问题。然后我采用了马特的配置并开始逐步更改列名以接近原始配置,但“无法加载组”消息没有出现在日志中。当我用我的原始设置重现这个案例并且日志消息不存在时,我知道日志记录有问题,它已经以某种方式被关闭了。所以我开始调查整个配置。
当我查看已部署的应用程序时,我选择了部署描述符并将它们加载到 glassfish 控制台上。web.xml 没问题,它和我写的内容一样,但是glassfish-web.xml 的内容完全不同!它的生成就像我没有 glassfish-web.xml 一样。然后我注意到我的 glassfish-web.xml 没有放在 WEB-INF 目录中. 我将它移到那里并进行了“全部清理,构建”并部署了应用程序。之后我回到了 db 视图,它以多对多的关系表示 TBLUSERS 和 TBLGROUPS 之间的数据。我最喜欢这个解决方案,因为它从数据的角度显示了最清晰的画面。我在领域配置页面上设置了适当的列。我用两个用户“tamas”和“arpi”对其进行了测试。“tamas”被添加到用户和管理员组,同时“arpi”被添加到用户组。角色和用户组之间的映射在 glassfish-web.xml 中。授予“tamas”对用户和管理员资源的访问权限,而“arpi”仅获得对用户资源的访问权限。
感谢您的帮助。塔马斯
forms - 需要为带有 oracle 数据库的 tomcat webapp 配置旧的 JDBCRealm
我正在尝试恢复一些旧的 java webapps,但丢失了我的旧 glassfish 配置文件,其中定义了我的 JDBCRealm。现在我正在尝试将旧战争部署到 Tomcat 7,并且需要重新创建 JDBCRealm 来验证用户身份。自从我从事这些工作以来已经很长时间了,我不记得该怎么做,我查看了官方文档,但它缺少 oracle 的连接URL。我认为我的数据库是像以前一样使用用户和角色表设置的。
我什至可以在 Tomcat 7 上重用在 glassfish 3 上运行的旧战争吗?它包含一个 sun-web.xml 文件。那只是为了玻璃鱼吗?
我正在使用表单身份验证方法 - 这是我的 web.xml 的片段:
这是我的 server.xml 文件中的领域片段:
我的 connectionURL 看起来正确吗?还有什么可能是错的?现在,当我尝试登录时,它永远不会接受我的密码。我总是得到我的登录错误页面(不是完整的应用程序崩溃)。
最新领域版本:
java - primefaces 组件未使用数据领域正确呈现
我正在使用数据领域进行登录身份验证。它工作正常。我还在我的应用程序中使用 primefaces 3.2 组件,它们也可以正常工作,但问题出现在登录前的主页上。primefaces 组件未正确呈现(例如,选项卡菜单显示为一个下方的简单链接,按钮显示为简单的 jsf 按钮等)并且登录工作正常,当我从浏览器清除浏览历史记录时, primefaces 已正确呈现,但现在领域无法工作,我被重定向到错误页面,为什么会发生这种情况?我该如何解决?由于这个原因,我的应用程序的主页被毁了。