2009-09-14 96 views
0

我想運行一個使用Kerberos進行身份驗證的tomcat JNDIRealm(authentication =「GSSAPI」)。如何獲取Tomcat中的JNDIRealm以使用Kerberos身份驗證?

不過,我得到這個:

 
SEVERE: Catalina.start: 
LifecycleException: Exception opening directory server connection: 
javax.naming.AuthenticationException: GSSAPI 
[Root exception is javax.security.sasl.SaslException: GSS initiate failed 
[Caused by GSSException: No valid credentials provided 
(Mechanism level: Attempt to obtain new INITIATE credentials failed! (null)) 
]] 

我有這樣的server.xml中:

 
<Realm className="org.apache.catalina.realm.JNDIRealm" 
         authentication="GSSAPI" 
         connectionName="CN=XXX User,OU=XXXGenericAccounts,\ 
                DC=xxx,DC=com" 
         connectionPassword="blah" 
         connectionURL="ldap://blah.xxx.com:389" 
         alternateURL="ldap://blah.xxx.com:389" 
         roleBase="OU=XXXGroups,DC=xxx,DC=com" 
         roleName="cn" 
         roleSearch="member={0}" 
         roleSubtree="true" 
         userBase="OU=XXXUsers,DC=xxx,DC=com" 
         userSearch="sAMAccountName={0}" 
         userSubtree="true"/> 

任何想法是什麼,我在這裏失蹤?

回答

1

錯誤表示Kerberos安裝不正確。

您需要使用-D或System.setProperty()設置以下JVM參數要麼,

java.security.krb5.realm : Default realm, like EXAMPLE.COM 
java.security.krb5.kdc : KDC hostname, like ad.example.com 
+0

是的。有過去,這,但我使用Kerberos/JAAS:

  
並獲得這樣的: javax.security.auth.login.LoginException:javax.naming.NamingException中:LDAP:錯誤代碼1 - 00000000:LDA,評論:爲了執行此操作,必須在連接上完成成功綁定。,數據名稱'ou = LIMUsers,dc = lim,dc = com' – Jorel 2009-09-17 19:07:32

1

jorel:

除了定義的境界/ KDC,你過NamingException的初始發行在錯誤消息中描述了獲取 - 您的LDAP服務器「blah.xxx.com」不允許匿名綁定,並且tomcat正在嘗試運行搜索而沒有綁定。

如果您希望使用用戶憑證搜索LDAP,則問題在於它不會將憑證轉發給LDAP。我還不熟悉Java在Java內部的工作原理,但有幾個可能的原因:

  1. Tomcat沒有請求可以轉發/委派的票證。
  2. 客戶沒有提供這樣的票據。有關瀏覽器配置,請參閱: http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/index.jsp?topic=/com.ibm.connections.25.help/t_install_kerb_edit_browsers.html
  3. Tomcat不會嘗試使用正確請求/給定票證進行SASL綁定到LDAP服務器。

如果您嘗試使用connectionName DN作爲bindDN進行搜索,請檢查LDAP服務器上的故障---即, 「憑據無效」(用戶/傳遞不正確)或ACL問題。

1

您將需要通過系統屬性來傳遞:

  • 路徑的krb5.conf/INI
  • 路徑與login.conf中有默認的姓孫的與配置如何獲得證書的Krb5Module 。