簡體   English   中英

Windows上使用JDK1.6.45的MongoDB 3.0.0 / 2/3 Java驅動程序Kerberos身份驗證

[英]MongoDB 3.0.0/2/3 Java Driver Kerberos Authentication on Windows using JDK1.6.45

我的Mongo服務器應正確設置,因為我可以通過客戶端使用GSSAPI機制對其進行查詢。

根據文檔,Java驅動程序的Kerberos身份驗證可以像credentialList.add(MongoCredential.createGSSAPICredential("people/myhost.com@EXAMPLE.COM"));一樣簡單credentialList.add(MongoCredential.createGSSAPICredential("people/myhost.com@EXAMPLE.COM"));

我用的校長

  1. 我使用Mongo的企業版客戶端進行了測試,並且可以正常工作:使用Kerberos針對Mongo服務器進行身份驗證,並可以針對它進行find()。 (數據庫測試,主體為“ people/myhost.com@EXAMPLE.COM”)
  2. 執行kinit並在klist中顯示新票證,該票證緩存在KRB5CCNAME = D:\\ Kerberos \\ tickets.txt下(已設置環境變量)

為了確保讀取krb5.ini / conf,我手動設置系統屬性java.security.krb5.conf = C:/Windows/krb5.conf

在設置屬性javax.security.auth.useSubjectCredsOnly之前, GSSAPIAuthenticator.createSaslClient()異常GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

設置屬性javax.security.auth.useSubjectCredsOnly=false ,捕獲了InternalStreamConnection.open()拋出: java.lang.SecurityException: Unable to locate a login configuration

我真的很困惑。 我以為它使用的是KRB5CCNAME下指定的票證緩存。 如果我使用jaas配置,應將其分配給哪個名稱?

Name {
   com.sun.security.auth.module.Krb5LoginModule required
   useKeyTab=true
   keyTab="D:\\Kerberos\\people.keytab"
   useTicketCache=false;
};

我給它設置了一個隨機名稱,它開始抱怨GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null))

你們可以幫我嗎? 在這種情況下,我還能嘗試什么呢?還是可以使用更有用和詳細的日志?

安全錯誤消息是設計隱秘的:-/

但是有一個不錯的“ 安全跟蹤標志 ”屬性可以幫助您調試GSSAPI配置問題:

-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext

暫無
暫無

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

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