Hlavní názvy
Aby klient vytvořil vzájemně ověřenou relaci pomocí serverového programu, musí zadat očekávaný hlavní název serveru. Některé protokoly, jako je Kerberos, vyžadují pro všechny ověřené relace správný hlavní název serveru. Objekt zabezpečení je entita, kterou systém zabezpečení rozpozná. To zahrnuje lidské uživatele i systémové služby. Všechny hlavní názvy mají pro daného zprostředkovatele podpory zabezpečení (SSP) podobný formát. Zprostředkovatel sdílených služeb je softwarový modul, který provádí ověření zabezpečení. Další informace najdete v tématu přehled architektury SSPI. Aby byla jednotnost zachována, poskytovatel zabezpečení obvykle dává systémovým službám podobné názvy jako uživatelé. U některých poskytovatelů zabezpečení nemusí systémové služby mít hlavní název.
Server zaregistruje hlavní název poskytovatele zabezpečení pomocí funkce RpcServerRegisterAuthInfo. Pro každého zprostředkovatele zabezpečení lze použít pouze jeden hlavní název serveru. Pokud je zaregistrováno více než jedno jméno, je jeden název náhodně vybrán a použit. Zprostředkovatel sdílených služeb určuje formát hlavního názvu. Například protokol Kerberos/Negotiate SSP pro systémovou službu vypadá přibližně takto: machine_name$@childdomain.parentdomain1.parentdomain2.COM.
Doporučeným postupem generování hlavních názvů je použití zdokumentovaných rozhraní API (například funkce DsMakeSpn) místo vytvoření výsečového grafu hlavního názvu z řetězců. Použití zdokumentovaných rozhraní API zvyšuje přenositelnost mezi různými prostředími nasazení a eliminuje možnost chyb.
Zadání nesprávného hlavního názvu může klientovi a serveru zabránit v navázání ověřené relace. Zprostředkovatel zabezpečení SCHANNEL má hlavní názvy v některé ze dvou forem:
- První hlavní název SCHANNEL je msstd formulář. Názvy ve formuláři msstd obecně následují ve vzoru msstd:servername@serverdomain.com. Tato vlastnost se označuje jako vlastnost e-mailového názvu. Pokud certifikát obsahuje vlastnost e-mailového názvu a obsahuje znak at (@), hlavní název je msstd:email name. Jinak musí obsahovat vlastnost běžného názvu. Vnitřní zpětná lomítka se zdvojnásobí, stejně jako v řetězových vazbách.
- Druhý hlavní název SCHANNEL je fullsic formulář. Jedná se o řadu RFC1779 kompatibilních názvů ohraničených úhlovými závorkami a oddělených zpětnými lomítky. Obvykle se řídí vzorem fullsic:\<\Authority\SubAuthority\.....\Person> nebo fullsic:\<\Authority\SubAuthority\.....\ServerProgram>.
Pokud se název neshoduje s certifikátem, ERROR_ACCESS_DENIED se vrátí. Pokud je formát názvu neplatný, vrátí zprostředkovatel sdílených služeb SCHANNEL kód ERROR_INVALID_PARAMETER.
K dotazování na hlavní název serveru mohou aplikace volat RpcMgmtInqServerPrincName. Tím se přidělí řetězec ukončený hodnotou null, který bude obsahovat hlavní název. Před ukončením aplikace musí vyvolat RpcStringFree uvolnit paměť, která tento řetězec zabírá.
Dotazování na název serveru tímto způsobem není bezpečné a mělo by se jim vyhnout. V případě ověřování serveru by klientský program měl vědět, ke kterému serveru se připojuje, a měl by vytvořit hlavní název serveru úplně od začátku.