Delegace – komunikace na backend

Tohle je memorovací příspěvek. To je jeden z těch, které si píšu proto, abych se k nim mohl v budoucnu vrátit a upřímně se divit, že jsem byl něco takového schopen napsat – v dobrém nebo špatném.

Pokud mám uživatele „user“, který volá např. webovou aplikaci, která si sahá na backend pro data, musím zajistit pro funkčnost (a možnost ověřování Kerberosem = velmi dobře) následující:

  • webová aplikace musí běžet pod uživatelským (např. servisním) účtem – pokud bude běžet pod účtem počítače, nemůžu použít Kerberos, ale spadnu do NTLM (pokud nemám zapnutý Kernel-mode na IIS7)
  • SPN jmen (dlouhých i zkrácených) serverů (tedy i aliasů, zejména pokud jsou typu A-record a ne C-NAME) musí být registrovány na uživatelský (servisní) účet, pod kterým běží webová aplikace (setspn -q na W2k8, setspn -l na W2k3 zobrazí registrovaná SPN, nutno pouštět na DC)
  • na uživatelském (servisním) účtu je nutno v AD nastavit delegaci, nejlépe constrained (tj. např. pro vyhrazené služby, ale nikoliv s podvolbou „any authentication protocol“!)
  • nyní má možnost „user“ otevřít frontend, který získal možnost otevřít jeho jménem backend.

V kerbtray.exe (součást Resource Kitu W2k3) lze sledovat genezi tiketů a kontrolovat tak, jestli se tvoří TSG se na správný server (tj. zašifrovaný správným heslem).