Autentizace pomocí SPNEGO
Autentizace pomocí SPNEGO umožňuje uživatelům, kteří jsou přihlášeni do počítače svým doménovým účtem, automatické přihlášení k CASu (a službám, které se přes CAS autentizují). Autentizace je tak delegována na MS AD.
-
Prerekvizity.
-
Nastavení v MS AD a generování keytabu
-
Příprava konfiguračních souborů
-
Konfigurace CASu
-
Nastavení prohlížeče
-
Testování
Prerekvizity
K nastavení autentizace přes SPNEGO pomůže následující přehled pojmů s příklady, k nimž se odkazuje dále.
Pojem | Význam | Příklad v příručce |
---|---|---|
1. DC |
Doménový řadič MS AD, resp. jeho hostname |
|
2. APPLIANCE HOSTNAME |
Hostname appliance, kde jsou dostupné služby appliance (např. CzechIdM) (zde používáno bez |
|
3. DOMAIN |
AD doména |
|
4. KDC HOSTNAME |
Hostname KDC (Kerberos Key Distribution Center) |
|
5. USER UPN LOGON |
Název služby v AD. Musí se shodovat s názvem hostname s appliance a doménou |
|
Nastavení v MS AD a generování keytabu
-
Vytvořte v MS AD uživatele pro CAS
-
Přejděte do DC MS AD. V aplikaci Active Directory Administrative Center přejděte do relevantní domény a založte v ní uživatelský účet.
-
Uživateli nastavte User UPN logon na
HTTP/<APPLIANCE HOSTNAME>@<DOMAIN>
(v našem případěHTTP/moje-appliance.bcv@DOMAIN.TLD
). -
User sAMAccountName logon nastavte na
<DOMAIN>\<APPLIANCE HOSTNAME>
(v našem případěDOMAIN\moje-appliance.bcv
). -
Křestní jméno a příjmení nastavte libovolně.
-
U účtu zatrhněte:
-
Account expires:
never
-
Password never expires
(pod Password options, Other password options) -
User cannot change password
(pod Password options, Other password options) -
Pod
Encryption options
zaškrtněte:-
Store password using reversible encryption
-
This account supports Kerberos AES 128 bit encryption
-
This account supports Kerberos AES 256 bit encryption
-
-
-
Účtu nastavte heslo a uložte jej
-
-
Otevřete příkazovou řádku (zadejte
cmd
v menu Start) a vygenerujte keytab pro uživatele příkazemktpass -out file.keytab -princ <USER UPN LOGON> -mapUser <APPLIANCE HOSTNAME>@<DOMAIN> -crypto all -pass * -ptype KRB5_NT_PRINCIPAL
V našem případě tedy:
ktpass -out file.keytab -princ HTTP/moje-appliance.bcv@DOMAIN.TLD -mapUser moje-appliance.bcv@DOMAIN.TLD -crypto all -pass * -ptype KRB5_NT_PRINCIPAL
-
Zvolte a zadejte nové heslo. Nemusí být stejné jako pro založeného uživatele.
-
Keytab soubor
file.keytab
si stáhněte, v dalším kroku bude potřeba jej nahrát na disk appliance.
Příprava konfiguračních souborů
Pro SPNEGO autentizaci je v CASu potřeba připravit následující soubory: . file.keytab - ten jsme vygenerovali v předchozím kroku, je třeba jej nahrát na server s appliance . krb5.conf - v appliance je připravená šablona, kterou je nutno modifikovat . login.conf - v appliance je připraven výchozí konfigurační soubor, který zpravidla není nutné nijak editovat
file.keytab
Vygenerovaný soubor file.keytab
nahrajte na disk appliance do adresáře /data/volumes/cas/spnego/
.
krb5.conf
Soubor obsahuje informace o doménách a odpovídajících KDC.
Šablona souboru je umístěna v /data/volumes/cas/spnego/krb5.conf
. V souboru je třeba upravit název domény. Vyskytuje se na několika místech v různých formátech jako EXAMPLE.COM
či example.com
. Nahraďte všechny tyto výskyty názvem domény, zachovejte přitom existující formát (velikost znaků, tečka na začátku řetězce, apod.).
Dále je třeba doplnit hostname KDC (na řádku kdc = kdc.example.com:88
), jako KDC uvedeme doménový řadič.
V našem případě tedy bude výsledný soubor vypadat takto:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] ticket_lifetime = 24000 default_realm = DOMAIN.TLD default_keytab_name = /etc/cas/config/file.keytab dns_lookup_realm = false dns_lookup_kdc = false default_tgs_enctypes = rc4-hmac des-cbc-md5 des-cbc-crc aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96 default_tkt_enctypes = rc4-hmac des-cbc-md5 des-cbc-crc aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96 [realms] DOMAIN.TLD = { kdc = ad.domain.tld:88 } [domain_realm] .domain.tld = DOMAIN.TLD domain.tld = DOMAIN.TLD
Konfigurace CASu
Pomocí nástroje nano
či vim
upravte konfigurační soubor CASu v umístění /data/registry/node-active-config/docker-compose-cas.yml
. Najděte následující klíče, odkomentujte je, a doplňte hodnoty.
- CAS_SPNEGO_ENABLED=true - CAS_KERBEROS_REALM=<DOMAIN> - CAS_KERBEROS_DEBUG=false - CAS_KERBEROS_KDC=<KDC HOSTNAME> - CAS_KERBEROS_SERVICE_PRINCIPAL=<USER UPN LOGON>
V našem případě by výsledná konfigurace vypadala takto:
- CAS_SPNEGO_ENABLED=true - CAS_KERBEROS_REALM=DOMAIN.TLD - CAS_KERBEROS_DEBUG=false - CAS_KERBEROS_KDC=ad.domain.tld - CAS_KERBEROS_SERVICE_PRINCIPAL=HTTP/moje-appliance.bcv@DOMAIN.TLD
Po úpravě konfigurace je třeba CAS restartovat příkazem systemctl restart iam-cas.service
.
Do - CAS_KERBEROS_KDC lze uvést více položek, pokud používáte více KDC. Jednotlivé KDC oddělte jednou mezerou.
|
Nastavení prohlížeče
Pokud používáte Google Chrome či Microsoft Edge, nastavte konfiguraci v dialogu "Možnosti Internetu" v Internet Exploreru. Tyto prohlížeče konfiguraci pro SPNEGO načítají z něj. |
Internet Explorer
Spusťte Internet Explorer a přejděte do Internet Options (pod ozubeným kolečkem) > Security > Trusted Sites
. Klikněte na Sites
, pod Add this website to the zone
zadejte https:<HOSTNAME> (hostname appliance).
Následně přejděte do Internet Options > Security > Trusted Sites > Custom level
a pod User Authentication > Logon
a zatrhněte možnost Automatic logon with current user name and password
.
Testování
Přihlaste se do Windows svým doménovým účtem. V nakonfigurovaném prohlížeči přejděte na adresu https://APPLIANCEHOSTNAME/cas/login
. Pokud se autentizace zdaří, uvidíte v prohlížeči, že jste byli úspěšně přihlášeni. V opačném případě se vám zobrazí přihlašovací dialog CASu. Spojení je potom potřeba odladit, log CASu získáte v appliance zadáním příkazu docker logs cas
.
Doporučujeme pro testování a případné ladění přepnout v konfiguračním souboru /data/registry/node-active-config/docker-compose-czechidm.yml hodnotu - CAS_KERBEROS_DEBUG= na true . Po dokončení testování ji však nezapomeňte přepnout zpět na false, jinak dojde k výraznému nárůstu velikosti a znepřehlednění logů CASu.
|