首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glassfish 3.1.2 JDBCRealm配置

Glassfish 3.1.2 JDBCRealm配置
EN

Stack Overflow用户
提问于 2012-08-22 14:27:21
回答 5查看 8.6K关注 0票数 7

嗨,我已经阅读了Glassfish 3.1.2's JDBCRealm has a new Password Encryption Algorithm field. What is it for?,并在谷歌上搜索了类似的主题,但似乎还没有发布明确的答案。

简而言之,我有一个在glassfish 3中工作的jdbc领域,当我升级到3.1.2时,相同的配置不起作用。根据前面的线程,我已经将JaasContext设置为jdbcDigestRealm (除了jdbcRealm,它也不起作用),将摘要算法设置为MD5 (我在v3中使用了MD5,它起作用了)。对于密码加密算法,我尝试了‘空白’和‘十六进制’,两者都不起作用。

谁能告诉我应该如何配置。我的凭证表是基于mysql的,根据http://jugojava.blogspot.hk/2011/02/jdbc-security-realm-with-glassfish-and.html的MD5哈希密码。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-08 21:28:30

我成功地使它在以下设置下工作。根据我目前(误解)的理解,我添加了一些评论。

必须根据文件'glassfish3/glassfish/domains/domain1/config/login.conf'.设置

  • JAASContext = "jdbcRealm“=>默认情况下,类'com.sun.enterprise.security.auth.login.JDBCLoginModule‘(实现JDBCrealm)配置在"jdbcRealm“下。在"jdbcDigestRealm“下配置了另一个登录模块。这不是当前主题的一部分。passsword.
  • GroupTable = "...“
  • JNDI=”...“=>我在其中放入了我的数据库已经存在的数据源的名称,以及数据库table.
  • UserNameColumn = "userid”=>列名的‘完全限定名’,您在其中存储用户passsword.
  • GroupTable= "MY_SCHEMA.grouptable“=>的用户name
  • PasswordColumn = "password”=>列名。数据库table.
  • GroupTableUserNameColumn = "“的'full qualified name‘没有任何关于您存储用户name
  • AssignGroups = "”=>的name
  • AssignGroups=“”=> =>列名的用法的线索,就我对GF代码的理解而言,这是一种将组列表分配给领域中注册的每个用户的方法。这是一种硬编码。根据我的理解,如果你不使用property.
  • DatabaseUser (第二个parameter).
  • DatabasePassword = "“=> ),你需要这个(第二个GlassFish = "”=> ),如果你不使用JNDI (第二个parameter).
  • DigestAlgorithm = "SHA-256“=> 'MD5','SHA-1‘或'SHA-256’),你就需要这个。“‘SHA 256”是默认值。让我们以'SHA-256'.
  • PasswordEncryptionAlgorithm = "AES“=>为例,摘要算法在存储密码之前应用于密码。新的密码加密是一个增加的安全层,它允许加密"hash“(已将DA应用到密码之后的字符串)。这样,如果攻击者从数据库中检索到密码,这些密码就会被加密和散列。这样的数据不太可能对attacker.
  • Encoding =“十六进制”=>有用,因为你可以在‘十六进制’或'Base64‘中进行选择。十六进制对我来说很方便。
  • charset = "“=>因为我的数据库没有‘外来’字符集,所以我不认为我需要在那里设置一些智能的东西。我把它留空了,它就能工作了。

希望这能有所帮助。

PS:如果有人有REAL文档的链接(不是官方的,目前完全没有用),请在这里放一个链接。

票数 15
EN

Stack Overflow用户

发布于 2013-12-21 10:12:17

我今天花了一段时间研究这个(Java EE 7,Ubuntu 12.04上的Glassfish 4)。事实证明,Realm页面上的大多数字段都不是必需的。以下字段是与数据库建立成功连接所需的唯一字段。

  • 领域名称-任何名称,只要您在web.xml
  • JAAS上下文中使用相同的名称-任何名称
  • JNDI-任何名称(我使用的是jdbc/DB名称)
  • 用户表-包含所有用户的表
  • 用户名列- users表中的列(SHA256)
  • 组表-包含组的表H214
  • 组名列- groups表中包含组名的列

我把其他的都留空了。我的数据库密码列使用SHA256对密码进行了散列处理。

我通过在“密码加密”字段中随机填写文本并保存它来测试这一点。重新部署了我的应用程序,并重新启动了Glassfish 4。仍然有效。这意味着字段虽然仍然存在,但不再被读取。

附注:第一个答案中提到的真实文档仍然很差。

票数 1
EN

Stack Overflow用户

发布于 2012-09-07 18:37:11

首先要做的是。您的日志输出是什么?你的“无法工作的问题”的症状是什么?是否出现了基本身份验证弹出窗口?你有没有

代码语言:javascript
复制
No login module configured for jdbcDigestRealm 

或其他错误消息?

如果没有任何不成功登录尝试的日志输出,请更改安全日志级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12067410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档