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.

Kroky k nastavení autentizace pomocí SPNEGO
  1. Prerekvizity.

  2. Nastavení v MS AD a generování keytabu

  3. Příprava konfiguračních souborů

  4. Konfigurace CASu

  5. Nastavení prohlížeče

  6. 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.

Table 1. Terminologie a příklady
Pojem Význam Příklad v příručce

1. DC

Doménový řadič MS AD, resp. jeho hostname

ad.domain.tld

2. APPLIANCE HOSTNAME

Hostname appliance, kde jsou dostupné služby appliance (např. CzechIdM) (zde používáno bez https://)

moje-appliance.bcv

3. DOMAIN

AD doména

DOMAIN.TLD

4. KDC HOSTNAME

Hostname KDC (Kerberos Key Distribution Center)

ad.domain.tld

5. USER UPN LOGON

Název služby v AD. Musí se shodovat s názvem hostname s appliance a doménou

HTTP/moje-appliance.bcv@DOMAIN.TLD

Nastavení v MS AD a generování keytabu

  1. Vytvořte v MS AD uživatele pro CAS

    1. 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.

    2. Uživateli nastavte User UPN logon na HTTP/<APPLIANCE HOSTNAME>@<DOMAIN> (v našem případě HTTP/moje-appliance.bcv@DOMAIN.TLD).

    3. User sAMAccountName logon nastavte na <DOMAIN>\<APPLIANCE HOSTNAME> (v našem případě DOMAIN\moje-appliance.bcv).

    4. Křestní jméno a příjmení nastavte libovolně.

    5. U účtu zatrhněte:

      1. Account expires: never

      2. Password never expires (pod Password options, Other password options)

      3. User cannot change password (pod Password options, Other password options)

      4. Pod Encryption options zaškrtněte:

        1. Store password using reversible encryption

        2. This account supports Kerberos AES 128 bit encryption

        3. This account supports Kerberos AES 256 bit encryption

    6. Účtu nastavte heslo a uložte jej

  2. Otevřete příkazovou řádku (zadejte cmd v menu Start) a vygenerujte keytab pro uživatele příkazem

    ktpass -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
  3. Zvolte a zadejte nové heslo. Nemusí být stejné jako pro založeného uživatele.

  4. 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.

Firefox

Do adresního řádku Firefoxu zadejte about:config a potvrďte, že skutečně chcete provést změny. Do vyhledávacího pole zadejte network.negotiate-auth.trusted-uris, možnost rozklikněte a přidejte https:<HOSTNAME>` (hostname appliance).

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.