我正在关注这个tutorial关于为webapp设置Apache Directory Studio以开发和测试kerberos身份验证(使用spnego)。我设置了ldap和票证授予服务以及一些基本用户帐户。我可以用用户帐户做一个kinit,所以我知道该部分运行良好。
因此,当前的日志表明它无法解密故障单。我尝试使用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
答案 0 :(得分: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正常工作!