мы уже используем CAS в нашей «внутренней» сети с Kerberos на одном сайте, и он работает без проблем.
Теперь мы хотим настроить второй сайт самостоятельно, но с немного другой конфигурацией (DNS-имена/SPN).
Я пытаюсь объяснить.. Сначала нерабочий конфиг, а потом рабочий конфиг с небольшими изменениями..
Мы пытаемся запустить CAS с помощью SPNEGO.
Мы можем использовать kinit
(команда linux) с cas.keytab
и получить действительный билет Kerberos от kdc of REALM2.DE
, но это не работает с CAS. CAS всегда возвращается к NTLM. Что нам нужно сделать, чтобы это сработало? Возможно, он использует неправильную запись SPN из keytab? Я не могу понять.
- Ubuntu 16 LTS и Ubuntu 18 LTS
- КАС: 5.2.7
- REALM1 = Windows Active Directory (есть пользователи)
- REALM2 = MIT Linux Kerberos Realm (есть сервер CAS)
- acme.de = Интернет-домен для официального SSL-сертификата
- REALM Доверительные отношения между REALM1 и REALM2 работают.
Описание не работающей конфигурации:
Имя участника-службы похоже на HTTP/[email protected]
/etc/krb5.conf:
[libdefaults]
default_keytab_name = /etc/cas/cas.keytab
[realms]
REALM1.DE = {
kdc = ad1.realm1.de
kdc = ad2.realm1.de
kdc = ad3.realm1.de
}
REALM2.DE = {
kdc = kerberos.realm2.de
kdc = kerberos-1.realm2.de
kdc = kerberos-2.realm2.de
admin_server = kadmin.realm2.de
}
cas.properties:
cas.server.name=https://cas.acme.de:8443
cas.server.prefix=https://cas.acme.de:8443/cas
cas.authn.attributeRepository.defaultAttributesToRelease=cn,givenName,uid,mail
# KERBEROS / SPNEGO
cas.authn.spnego.kerberosConf=/etc/krb5.conf
# cas.authn.spnego.mixedModeAuthentication=false
cas.authn.spnego.mixedModeAuthentication=true
cas.authn.spnego.cachePolicy=600
cas.authn.spnego.timeout=300000
cas.authn.spnego.jcifsServicePrincipal=HTTP/[email protected]
cas.authn.spnego.jcifsNetbiosWins=
cas.authn.spnego.loginConf=/etc/cas/login.conf
cas.authn.spnego.ntlmAllowed=true
cas.authn.spnego.hostNamePatternString=.+
cas.authn.spnego.jcifsUsername=
cas.authn.spnego.useSubjectCredsOnly=false
cas.authn.spnego.supportedBrowsers=MSIE,Trident,Firefox,AppleWebKit
cas.authn.spnego.jcifsDomainController=
cas.authn.spnego.dnsTimeout=2000
cas.authn.spnego.hostNameClientActionStrategy=hostnameSpnegoClientAction
cas.authn.spnego.kerberosKdc=192.169.1.3
cas.authn.spnego.alternativeRemoteHostAttribute=alternateRemoteHeader
cas.authn.spnego.jcifsDomain=
cas.authn.spnego.ipsToCheckPattern=
cas.authn.spnego.kerberosDebug=
cas.authn.spnego.send401OnAuthenticationFailure=true
cas.authn.spnego.kerberosRealm=REALM2.DE
cas.authn.spnego.ntlm=false
cas.authn.spnego.principalWithDomainName=true
cas.authn.spnego.jcifsServicePassword=
cas.authn.spnego.jcifsPassword=
cas.authn.spnego.spnegoAttributeName=userPrincipalName
cas.authn.spnego.name=
/etc/cas/login.conf:
jcifs.spnego.initiate {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/etc/cas/cas.keytab";
};
jcifs.spnego.accept {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/etc/cas/cas.keytab";
};
cas.keyвкладка:
root@cas:/etc/cas# klist -k /etc/cas/cas.keytab -e -t
Keytab name: FILE:/etc/cas/cas.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 17.05.2019 11:38:56 HTTP/[email protected] (aes256-cts-hmac-sha1-96)
2 17.05.2019 11:38:56 HTTP/[email protected] (aes128-cts-hmac-sha1-96)
2 17.05.2019 11:38:56 HTTP/[email protected] (arcfour-hmac)
2 17.05.2019 11:39:03 HTTP/[email protected] (aes256-cts-hmac-sha1-96)
2 17.05.2019 11:39:03 HTTP/[email protected] (aes128-cts-hmac-sha1-96)
2 17.05.2019 11:39:03 HTTP/[email protected] (arcfour-hmac)
kinit HTTP/[email protected] -k -t /etc/cas/cas.keytab
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/[email protected]
Valid starting Expires Service principal
04.12.2019 12:54:18 05.12.2019 12:54:18 krbtgt/[email protected]
root@cas:/etc/cas# nslookup cas.acme.d
Server: 192.169.1.1
Address: 192.169.1.1#53
Name: cas.acme.de
Address: 192.169.1.140
root@cas:/etc/cas# nslookup 192.169.1.140
140.1.169.192.in-addr.arpa name = cas.realm2.de.
Описание рабочей конфигурации:
Только SPN и DNS-имя в Интернете изменены
Имя участника-службы похоже на HTTP/[email protected]
/etc/krb5.conf:
[libdefaults]
default_keytab_name = /etc/cas/cast.keytab
[realms]
REALM1.DE = {
kdc = ad1.realm1.de
kdc = ad2.realm1.de
kdc = ad3.realm1.de
}
REALM2.DE = {
kdc = kerberos.realm2.de
kdc = kerberos-1.realm2.de
kdc = kerberos-2.realm2.de
admin_server = kadmin.realm2.de
}
cas.properties:
cas.server.name=https://cast.realm2.de:8443
cas.server.prefix=https://cast.realm2.de:8443/cas
# KERBEROS / SPNEGO
cas.authn.spnego.kerberosConf=/etc/krb5.conf
#cas.authn.spnego.mixedModeAuthentication=false
cas.authn.spnego.mixedModeAuthentication=true
cas.authn.spnego.cachePolicy=600
cas.authn.spnego.timeout=300000
cas.authn.spnego.jcifsServicePrincipal=HTTP/[email protected]
cas.authn.spnego.jcifsNetbiosWins=
cas.authn.spnego.loginConf=/etc/cas/login.conf
cas.authn.spnego.ntlmAllowed=true
cas.authn.spnego.hostNamePatternString=.+
cas.authn.spnego.jcifsUsername=
cas.authn.spnego.useSubjectCredsOnly=false
cas.authn.spnego.supportedBrowsers=MSIE,Trident,Firefox,AppleWebKit
cas.authn.spnego.jcifsDomainController=
cas.authn.spnego.dnsTimeout=2000
cas.authn.spnego.hostNameClientActionStrategy=hostnameSpnegoClientAction
cas.authn.spnego.kerberosKdc=192.169.1.3
cas.authn.spnego.alternativeRemoteHostAttribute=alternateRemoteHeader
cas.authn.spnego.jcifsDomain=
cas.authn.spnego.ipsToCheckPattern=
cas.authn.spnego.kerberosDebug=
cas.authn.spnego.send401OnAuthenticationFailure=true
cas.authn.spnego.kerberosRealm=REALM2.DE
cas.authn.spnego.ntlm=false
cas.authn.spnego.principalWithDomainName=true
cas.authn.spnego.jcifsServicePassword=
cas.authn.spnego.jcifsPassword=
cas.authn.spnego.spnego
/etc/cas/login.conf:
jcifs.spnego.initiate {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/etc/cas/cas-t.keytab";
};
jcifs.spnego.accept {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/etc/cas/cas-t.keytab";
};
cast.keyвкладка:
klist -k cas-t.keytab -e -t
Keytab name: FILE:cas-t.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 04.10.2018 11:17:39 HTTP/[email protected] (aes256-cts-hmac-sha1-96)
2 04.10.2018 11:17:39 HTTP/[email protected] (aes128-cts-hmac-sha1-96)
2 04.10.2018 11:17:39 HTTP/[email protected] (arcfour-hmac)
2 04.10.2018 11:17:42 HTTP/[email protected] (aes256-cts-hmac-sha1-96)
2 04.10.2018 11:17:43 HTTP/[email protected] (aes128-cts-hmac-sha1-96)
2 04.10.2018 11:17:43 HTTP/[email protected] (arcfour-hmac)
kinit HTTP/[email protected] -k -t ./cas-t.keytab
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/[email protected]
Valid starting Expires Service principal
04.12.2019 12:33:51 05.12.2019 12:33:51 krbtgt/[email protected]
root@cas:/etc/cas# nslookup cast.realm2.de
Server: 192.169.1.1
Address: 192.169.1.1#53
Name: cast.realm2.de
Address: 192.169.1.65
root@cas:/etc/cas# nslookup 192.169.1.65
65.1.169.192.in-addr.arpa name = cast.realm2.de.
Мы уже пытались выполнить отладку самостоятельно, но не смогли.
Мы надеемся, что кто-нибудь поможет нам решить эту проблему.
Пожалуйста, дайте нам знать, если вам нужна дополнительная информация
Спасибо!