2016-10-16 50 views
1

我正在關注這個tutorial關於設置Apache Directory Studio的webapp來開發和測試kerberos認證(使用spnego)。我設置了ldap和票證授予服務以及一些基本的用戶帳戶。我能夠用用戶帳戶做一個kinit,所以我知道這部分工作正常。爲什麼我不能用SPN做一個kinit?

因此,當前的日誌表明它不能解密票證。我試着用kinit使用keytab文件並且它不工作,所以然後我只是試着做一個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/[email protected] 
sn: Something 
uid: HTTP/example.com 
userPassword: secret 

每當我做了kinit -V HTTP/example.com並鍵入密碼,我只是得到:

HTTP/[email protected]'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 

回答

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/[email protected] 
sn: myapp 
uid: HTTP/myapp.example.com 
userPassword: secret 

在那之後,我能夠與HTTP/myapp.example.com來執行kinit。然後,我可以設置一個密鑰表並將其加載到我的網絡服務器並獲得SSO工作!

相關問題