簡體   English   中英

Glassfish 3.1.2 JDBCRealm配置

[英]Glassfish 3.1.2 JDBCRealm configuration

您好我讀過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。

我成功地使其適用於以下設置。 我對目前(錯誤)的理解添加了一些評論。

  • 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文檔(不是官方文檔,此時完全沒用),請點擊這里鏈接。

今天我花了一些時間玩這個(Java EE 7,Ubuntu 12.04上的Glassfish 4)。 事實證明,不需要Realm頁面上的大多數字段。 以下字段是建立與數據庫的成功連接所需的唯一字段。

  • 領域名稱 - 任何名稱,只要您在web.xml中使用相同的名稱

  • JAAS上下文 - 任何名稱

  • JNDI - 任何名稱(我使用jdbc / DB名稱)

  • 用戶表 - 包含所有用戶的表

  • “用戶名”列 - users表中包含用戶名的列

  • 密碼 - 包含散列密碼的列​​(SHA 256)

  • 組表 - 包含組的表

  • 組名列 - 組表中包含組名的列

我把其他一切都留空了。 我的數據庫密碼列使用SHA 256進行了哈希密碼。

我通過在“密碼加密”字段中填寫隨機文本並保存它來測試這一點。 重新部署我的應用程序並重新啟動Glassfish 4.仍然有效。 這意味着該字段仍然存在但不再被讀取。

PS - 第一個答案中提到的真實文檔仍然很差。

首先要做的事情。 你的日志輸出是多少? 你的“不工作問題”有什么症狀? 是否出現了基本身份驗證彈出窗口? 你懂嗎

No login module configured for jdbcDigestRealm 

或其他錯誤信息?

如果不成功登錄嘗試沒有任何日志輸出,請更改安全日志級別。

我有兩個jdbcRealm問題的jdbcRealm 第一個存在於使用GF 3.1.1創建的域中,該域在將GF服務器更新到3.1.2.2版本后繼續工作。 然后我在這台服務器上創建了一個新域。 使用jdbcRealm配置新域。 除了3.1.1配置屏幕下不存在的“密碼加密算法”外,3.1.1配置的所有參數都相同。 當我嘗試使用我的Web應用程序登錄時,我不斷收到日志文件中的“jdbcrealm.invaliduserreason [#]”錯誤。

我能夠解析並成功登錄我的應用程序的唯一方法是將AES添加到“密碼加密算法”字段中。 我保存了更改並重新啟動了服務器,我再一次能夠從jdbcRealm連接成功驗證用戶身份。

這里有一個更詳細的指南 - > http://is.gd/Jx6Gnp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM