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 ve výsledku delegována na Active Directory.

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

V návodu níže používáme následující hodnoty a příklady. Přizpůsobte je svému prostředí.

Table 1. Použité hodnoty
Pojem Hodnota v příkladech

Doménový řadič (DC), Microsoft Active Directory (MSAD, AD)

ad.domain.tld

Hostname appliance, na kterém jsou dostupné služby.

iam-appliance.tld

Musí být vždy použit celý hostname. Fragmenty "á la NetBIOS" bez uvedení domény nejsou dovoleny.

AD doména

DOMAIN.TLD

Hodnota musí být vždy uppercase.

Název služby registrovaný v AD (Service principal name, SPN).

HTTP/iam-appliance.tld@DOMAIN.TLD

Jméno uživatelského účtu v AD (UPN logon name), na který navážeme registrovanou službu.

cas-user@domain.tld

Nastavení v MS AD a generování keytabu

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

    1. 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 UPN logon na cas-user@domain.tld.

    3. sAMAccountName nastavte na cas-user, zpravidla stejná hodnota jako UPN ale bez uvedení domény. Utilita ktpass spouštěná v pozdějších krocích uživateli jeho jméno změní na správné.

    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. Heslo je nutné nastavit až po konfiguraci výše zmíněných parametrů, protože jinak se parametry neuplatní.

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

    ktpass -out file.keytab -princ HTTP/iam-appliance.tld@DOMAIN.TLD -mapUser cas-user@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.

Pokud při volání nástroje ktpass uděláte chybu, nelze ho jednoduše spustit znovu, protože by na úrovni AD vzniklo více SPN záznamů a integrace by nefungovala. V případě chyby kompletně smažte účet cas-user@domain.tld a vytvořte ho znovu načisto.

Příprava konfiguračních souborů

Pro SPNEGO autentizaci je v CASu potřeba připravit následující soubory:

  1. file.keytab - ten jsme vygenerovali v předchozím kroku, je třeba jej nahrát na server s appliance

  2. krb5.conf - v appliance je připravena šablona, kterou je nutno modifikovat

  3. 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 (Key Distribution Center, v případě AD tuto službu poskytuje doménový řadič).

Š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. V našem případě bude výsledek vypadat 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/iam-appliance.tld@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://iam-appliance.tld (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://iam-appliance.tld (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://iam-appliance.tld/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 je dostupný v souboru /data/logs/cas/cas.log.

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.