【问题标题】:How do I get JNDIRealm in Tomcat to use Kerberos auth?如何让 Tomcat 中的 JNDIRealm 使用 Kerberos 身份验证?
【发布时间】:2010-11-28 03:57:49
【问题描述】:

我正在尝试使用 Kerberos 进行身份验证 (authentication="GSSAPI") 运行 tomcat JNDIRealm。

但是,我得到了这个:

严重:Catalina.start: LifecycleException:打开目录服务器连接异常: javax.naming.AuthenticationException:GSSAPI [根异常是 javax.security.sasl.SaslException: GSS 启动失败 [由 GSSException 引起:未提供有效凭据 (机制级别:尝试获取新的 INITIATE 凭据失败!(null)) ]]

我在 server.xml 中有这个:

知道我在这里缺少什么吗?

【问题讨论】:

    标签: tomcat ldap kerberos


    【解决方案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
    

    【讨论】:

    • 是的。过去了,但我正在使用 Kerberos/JAAS :
       
      并得到这个:javax.security.auth.login.LoginException: javax.naming.NamingException: [LDAP: error code 1 - 00000000 :Lda,注释:为了执行此操作,必须在连接上完成成功的绑定。数据名称'ou=LIMUsers,dc=lim,dc=com'
    【解决方案2】:

    乔尔:

    除了定义领域/KDC 的初始问题外,错误消息中还描述了您收到的 NamingException --- 您的 LDAP 服务器“blah.xxx.com”不允许匿名绑定,并且tomcat 正在尝试在没有绑定的情况下运行搜索。

    如果您希望使用用户的凭据搜索 LDAP,那么问题在于它没有将凭据转发到 LDAP。我还不熟悉这些东西在 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 问题。

    【讨论】:

      【解决方案3】:

      你需要通过系统属性来传递:

      • krb5.conf/ini 的路径
      • login.conf 的路径具有默认 Sun 名称和 Krb5Module 配置如何获取凭据。

      【讨论】:

        猜你喜欢
        • 2018-12-10
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 2015-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多