Glassfish 3.1.2 JDBCRealm配置

cpl*_*338 7 java glassfish

您好我读过Glassfish 3.1.2的JDBCRealm有一个新的密码加密算法字段.它是为了什么?谷歌搜索类似的主题,但似乎没有明确的答案已经发表.

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

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

Alg*_*giz 14

我成功地使其适用于以下设置.我对目前(错误)的理解添加了一些评论.

  • JAASContext ="jdbcRealm"=>必须根据文件'glassfish3/glassfish/domains/domain1/config/login.conf'设置该值.默认情况下,类"com.sun.enterprise.security.auth.login.JDBCLoginModule"(实现JDBCrealm)在"jdbcRealm"下配置.在"jdbcDigestRealm"下配置了另一个登录模块.这个不是当前主题的一部分.
  • JNDI ="..."=>我在那里放了一个已经存在的应用程序数据库的数据源名称.
  • UserTable ="MY_SCHEMA.usertable"=>数据库表的"完全限定名称".
  • UserNameColumn ="userid"=>存储用户名的列名
  • PasswordColumn ="password"=>列名,用于存储用户密码的(哈希).
  • GroupTable ="MY_SCHEMA.grouptable"=>数据库表的"完全限定名称".
  • GroupTableUserNameColumn =""=>没有关于此用法的线索......
  • GroupNameColumn ="groupid"=>存储用户名的列名
  • AssignGroups =""=>据我了解GF代码,这是一种为域中注册的每个用户分配组列表的方法.这是一种硬编码.或多或少GlassFish上可用的每个领域都可以使用这个属性.
  • DatabaseUser =""=>据我所知,如果你没有使用JNDI(第二个参数),你需要这个.
  • DatabasePassword =""=>据我所知,如果你没有使用JNDI(第二个参数),你需要这个.
  • DigestAlgorithm ="SHA-256"=>'MD5','SHA-1'或'SHA-256'.'SHA-256'是默认值.我们来看看'SHA-256'吧.
  • PasswordEncryptionAlgorithm ="AES"=>在存储密码之前,摘要算法应用于密码.新密码加密是一个增加的安全层,允许加密"哈希"(DA之后的字符串应用于密码).这样,如果攻击者从数据库中检索密码,则会对其进行加密和散列.这些数据极不可能对攻击者有用.
  • 编码="Hex"=>您可以选择"Hex"或"Base64".Hex对我来说很方便.
  • Charset =""=>由于我的数据库没有"异国情调"的字符集,我认为我不需要在那里设置一些聪明的东西.我把它留空并且有效.

希望它会有所帮助.

PS:如果有人链接到REAL文档(不是官方文档,此时完全没用),请点击这里链接.