【问题标题】:Why can't I do a kinit with an SPN?为什么我不能使用 SPN 执行 kinit?
【发布时间】:2016-10-16 14:34:39
【问题描述】:

我正在关注此tutorial 为 web 应用程序设置 Apache Directory Studio 以开发和测试 kerberos 身份验证(使用 spnego)。我设置了 ldap 和票证授予服务以及一些基本用户帐户。我可以使用用户帐户进行 kinit,因此我知道该部分运行良好。

因此,当前的日志表明它无法解密票证。我尝试将 keytab 文件与 kinit 一起使用,但它不起作用,所以我只是尝试执行 kinit 并手动输入密码 - 这也不起作用(即使在 Apache Directory Studio 中验证密码正确之后) .这是我用于创建 spn 的 ldif 文件:

dn: uid=HTTP/example.com,ou=users,dc=security,dc=example,dc=com
objectClass: top
objectClass: krb5KDCEntry
objectClass: inetOrgPerson
objectClass: krb5Principal
objectClass: person
objectClass: organizationalPerson
cn: HTTP/example.com
krb5KeyVersionNumber: 1
krb5PrincipalName: HTTP/example.com@EXAMPLE.COM
sn: Something
uid: HTTP/example.com
userPassword: secret

每当我执行kinit -V HTTP/example.com 并输入密码时,我都会得到:

HTTP/example.com@EXAMPLE.COM's Password: 
kinit: Password incorrect

这是我的 krb5.conf:

[libdefaults]
debug = true
default_realm = EXAMPLE.COM

[realms]
EXAMPLE.COM = {
    kdc = example.com:60088
    admin_server = example.com:60088
    default_domain = EXAMPLE.COM
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

【问题讨论】:

    标签: kerberos spnego apacheds gssapi keytab


    【解决方案1】:

    因此,显然您无法设置与默认领域相同的 SPN。我必须创建一个子域 (myapp.example.com) 并导入相关的新 ldif 文件:

    dn: uid=HTTP/myapp.example.com,ou=users,dc=security,dc=example,dc=com
    objectClass: top
    objectClass: krb5KDCEntry
    objectClass: inetOrgPerson
    objectClass: krb5Principal
    objectClass: person
    objectClass: organizationalPerson
    cn: HTTP/myapp.example.com
    krb5KeyVersionNumber: 1
    krb5PrincipalName: HTTP/myapp.example.com@EXAMPLE.COM
    sn: myapp
    uid: HTTP/myapp.example.com
    userPassword: secret
    

    在那之后,我可以使用HTTP/myapp.example.com 启动。然后我可以设置一个 keytab 并将其加载到我的网络服务器中并让 SSO 工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-24
      • 1970-01-01
      • 2011-01-03
      相关资源
      最近更新 更多