Sdílet prostřednictvím


Ověřování passportem ve službě WinHTTP

Služba Microsoft Windows HTTP Services (WinHTTP) plně podporuje použití ověřovacího protokolu Microsoft Passport na straně klienta. Toto téma obsahuje přehled transakcí, které se týkají ověřování Passportu, a o tom, jak je zpracovat.

Poznámka

Ve Službě WinHTTP 5.1 je ve výchozím nastavení ověřování passportem zakázané.

 

Passport 1.4

Passport je základní součástí služeb stavebního bloku Microsoft .NET. Umožňuje firmám vyvíjet a nabízet distribuované webové služby napříč širokou škálou aplikací a umožňuje členům používat na všech zúčastněných webech jedno přihlašovací jméno a heslo.

WinHTTP poskytuje podporu platformy pro Microsoft Passport 1.4 implementací protokolu na straně klienta pro ověřování Passport 1.4. Uvolní aplikace z podrobností o interakci s infrastrukturou Passportu a uloženými uživatelskými jmény a hesly v systému Windows XP. Díky této abstrakci se Passport neliší od pohledu vývojáře než použití tradičních schémat ověřování, jako je Základní nebo Digest.

Windows XP: Klíč registru HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Passport\NumRegistrationRuns klíč registru určuje, kolikrát se průvodce ověřováním Passportu zobrazí, když je vyžadováno ověření PassPortu. Pokud je hodnota tohoto klíče nastavená na číslo větší než 5, průvodce se nezobrazí.

Následující části popisují transakce spojené s ověřováním Passportem z pohledu klientské aplikace. Informace o vývoji služby Passport na straně serveru najdete v přehledu dokumentace k sadě Passport SDK.

Počáteční požadavek

Když klient požádá o prostředek na serveru, který vyžaduje ověření Passportem, server zkontroluje požadavek na přítomnost lístků . Pokud se s požadavkem odešle platný lístek , server odpoví požadovaným prostředkem. Pokud lístek na klientovi neexistuje, server odpoví stavovým kódem 302. Odpověď obsahuje hlavičku výzvy "WWW-Authenticate: Passport1.4". Klienti, kteří nepoužívají Passport, můžou postupovat podle přesměrování na přihlašovací server Passportu. Pokročilejší klienti obvykle kontaktuje passport nexus určit umístění přihlašovacího serveru Passport.

Poznámka

Centrum sítě Microsoft Passport je Passport Nexus, který usnadňuje synchronizaci webů účastníků Passportu, aby se zajistilo, že každá lokalita má nejnovější podrobnosti o konfiguraci sítě a dalších problémech. Každá součást Passportu (Passport Manager, přihlašovací servery, aktualizační servery atd.) pravidelně komunikuje s Nexusem, aby načetla informace, které potřebuje k vyhledání a správné komunikaci, s ostatními komponentami v síti Passport. Tyto informace se načtou jako dokument XML s názvem Dokument konfigurace komponenty nebo CCD.

 

Následující obrázek ukazuje počáteční žádost o přidružení passportu.

obrázek ukazuje počáteční žádost o přidružení pasu.

Přihlašovací server passportu

Přihlašovací server passportu zpracovává všechny požadavky na lístky pro jakýkoli prostředek v autoritě domény Passport. Před ověřením žádosti pomocí Passportu musí klientská aplikace kontaktovat přihlašovací server, aby získala příslušné lístky .

Když klient požádá o lístky ze přihlašovacího serveru Passportu, přihlašovací server obvykle odpoví stavovým kódem 401, který indikuje, že musí být zadány přihlašovací údaje uživatele. Po zadání těchto přihlašovacích údajů přihlašovací server odpoví lístky nutné pro přístup k zadanému prostředku na serveru, který obsahuje původně požadovaný prostředek. Přihlašovací server může také přesměrovat klienta na jiný server, který může poskytnout požadovaný prostředek.

obrázek znázorňuje žádost o lístek klienta na přihlašovací server pasu.

Ověřený požadavek

Pokud má klient lístky, které odpovídají danému serveru, jsou tyto lístky zahrnuty do všech požadavků na daný server. Pokud lístky nebyly od načtení z přihlašovacího serveru Passport změněny a lístky jsou platné pro server prostředků, odešle server prostředků odpověď, která obsahuje požadovaný prostředek i soubory cookie, které indikují, že je uživatel ověřen pro budoucí požadavky.

Další soubory cookie v odpovědi jsou určeny k urychlení procesu ověřování. Další žádosti ve stejné relaci týkající se prostředků na serverech ve stejné autoritě domény Passportu zahrnují všechny tyto další soubory cookie. Přihlašovací údaje není nutné znovu odesílat na přihlašovací server, dokud nevyprší platnost souborů cookie.

obrázek ukazuje ověřený požadavek na přihlašovací server pasu.

Použití Passportu ve službě WinHTTP

Ověřování passportem ve službě WinHTTP je velmi podobné jiným schématům ověřování. Přehled ověřování ve službě WinHTTP najdete v tématu Ověřování ve službě WinHTTP.

Ve Službě WinHTTP 5.1 je ověřování Passport ve výchozím nastavení zakázané a musí být explicitně povolené s WinHttpSetOption před použitím.

WinHTTP zpracovává řadu podrobností o transakcích interně pro ověřování Passportem. Během počátečního požadavku server odpoví stavovým kódem 302 v případě potřeby ověřování. Stavový kód 302 ve skutečnosti označuje přesměrování a je součástí protokolu Passport pro zpětnou kompatibilitu. WinHTTP skryje stavový kód 302 a kontaktuje nexus Passportu a pak přihlašovací server. Aplikace WinHTTP je upozorněna na stavový kód 401 odeslaný přihlašovacím serverem k vyžádání přihlašovacích údajů uživatele. Zdá se však, že stav 401 pochází ze serveru, ze kterého byl prostředek požadován. Tímto způsobem aplikace WinHTTP neví o interakcích s jinými servery a může zpracovávat ověřování Passport pomocí stejného kódu, který zpracovává jiná schémata ověřování.

Aplikace WinHTTP obvykle reaguje na stavový kód 401 zadáním ověřovacích přihlašovacích údajů. Při zadání přihlašovacích údajů s WinHttpSetCredentials nebo SetCredentials pro ověřování passportem se přihlašovací údaje skutečně odesílají na přihlašovací server, nikoli na server uvedený v požadavku.

Při odpovídání na stavový kód 407 však musí aplikace WinHTTP používat WinHttpSetOption k poskytování přihlašovacích údajů proxy, nikoli k WinHttpSetCredentials. Vzhledem k tomu, že WinHttpSetOption je méně bezpečný způsob, jak zadat přihlašovací údaje, mělo by se tomu obvykle vyhnout.

Po načtení se lístky spravují interně a automaticky se posílají na příslušné servery v budoucích požadavcích.

Poznámka

WinHTTP umožňuje zakázat automatické přesměrování voláním funkce WinHttpSetOption příznaku WINHTTP_OPTION_DISABLE_FEATURE a zadáním hodnoty WINHTTP_DISABLE_REDIRECTS. Zakázání přesměrování nezasahuje do přesměrování, které WinHTTP zpracovává interně pro transakce Passportu.

 

WinHTTP může úspěšně dokončit ověřování Passportem, i když aplikace zakáže automatické přesměrování. Po dokončení ověřování passportem ale musí dojít k implicitní přesměrování z adresy URL přihlašovacího serveru Passport zpět na původní adresu URL. Toto přesměrování není aktivováno odpovědí HTTP 302, ale je implicitní v protokolu Passport.

WinHTTP zpracovává toto implicitní přesměrování speciálně. Pokud aplikace zakázala automatické přesměrování, winHTTP vyžaduje, aby aplikace udělila winHTTP oprávnění k automatickému přesměrování v tomto speciálním případě.

Aby bylo možné po ověření přesměrovat WinHTTP zpět na původní adresu URL, musí aplikace zaregistrovat funkci zpětného volání pomocí WinHttpSetStatusCallback. WinHTTP pak může aplikaci upozornit pomocí zpětného volání WINHTTP_CALLBACK_STATUS_REDIRECT, což aplikaci umožní zrušit přesměrování. Aplikace nemusí poskytovat žádné funkce ve funkci zpětného volání; registrace zpětného volání je dostatečná k tomu, aby služba WinHTTP mohla postupovat podle tohoto speciálního přesměrování.

Zpráva ERROR_WINHTTP_LOGIN_FAILURE se vygeneruje, pokud aplikace nenastaví funkci zpětného volání.

Passport Cobranding

Na rozdíl od tradičních schémat ověřování podporovaných službou WinHTTP může být Passport značně cobranded. Po přijetí stavového kódu 401, který označuje výzvu, může aplikace načíst cobranding grafiku a text. Načtěte adresu URL obrázku voláním WinHttpQueryOption příznakem WINHTTP_OPTION_PASSPORT_COBRANDING_URL. Načtěte text voláním WinHttpQueryOption příznakem WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT. Tyto položky lze použít k přizpůsobení dialogového okna shromažďování přihlašovacích údajů.

Uložená uživatelská jména a hesla

Systém Windows XP představil koncept uložených uživatelských jmen a hesel. Pokud jsou přihlašovací údaje passportu uživatele uložené prostřednictvím Průvodce registrací služby Passport nebo standardním dialogovým oknem přihlašovacích údajů, uloží se do uložených uživatelských jmen a hesel. Pokud používáte WinHTTP ve Windows XP nebo novějším, WinHTTP automaticky použije přihlašovací údaje v uložených uživatelských jménech a heslech, pokud nejsou přihlašovací údaje explicitně nastaveny. Podobá se podpoře výchozích přihlašovacích údajů pro protokol NTLM/Kerberos. Použití výchozích přihlašovacích údajů passportu se však nevztahuje na nastavení zásad automatického přihlášení.

Zakázání ověřování passportem

Některé aplikace můžou vyžadovat možnost zakázat ověřování Passportem. Pokud například affiliate služba Passport odpoví počátečním stavovým kódem 302, může být vhodnější postupovat podle uvedeného přesměrování a vykreslit ověřovací stránku passportu HTML, a nepovolit službě WinHTTP interně zpracovávat ověřování. Ověřování passportem je ve službě WinHTTP zakázané voláním funkce WinHttpSetOption s možností WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH a předáním hodnoty WINHTTP_DISABLE_PASSPORT_AUTH. Později ho můžete znovu povolit pomocí WINHTTP_ENABLE_PASSPORT_AUTH.

Ověřování passportem nelze zakázat při použití objektu WinHttpRequest.

Jak jsme si poznamenali dříve v této části, ověřování passportem je ve výchozím nastavení ve WinHTTP 5.1 zakázané a musí být explicitně povolené s WinHttpSetOption před použitím.

Přepsání konfigurace Passportu použité k testování

WinHTTP spoléhá na informace o konfiguraci, které stáhne ze serveru passport nexus, a podporuje ověřování Passport 1.4. Ve výchozím nastavení je tento zabezpečený server (SSL) nexus.passport.com a konfigurační prostředek je rdr/pprdr.asp, který se označuje jako konfigurace live passportu. Formát informací je vlastní hlavička HTTP PassportURLs následovaná dvojicemi atribut-hodnota oddělených čárkami.

Například "https://nexus.passport.com/rdr/pprdr.asp" vrátí následující informace o konfiguraci:

PassportURLs: DARealm=Passport.net,
DALogin=login.passport.com/login2.asp,
DAReg=https://register.passport.com/defaultwiz.asp,
Properties=https://memberservices.passport.com/ppsecure/MSRV_EditProfile.asp,
Privacy=https://www.passport.com/consumer/privacypolicy.asp,
GeneralRedir=https://nexusrdr.passport.com/redir.asp,
Help=https://memberservices.passport.com/UI/MSRV_UI_Help.asp,
ConfigVersion=2
\r\n

Části, které jsou relevantní pro WinHTTP, jsou DARealm, DALogin a ConfigVersion. Z důvodů výkonu se ukládají do mezipaměti po celou dobu životnosti relace WinHTTP. Tyto tři hodnoty je možné přepsat aplikacemi, které jsou potřeba pro práci s jinou infrastrukturou pasu než s nastavením živého provozu, a to změnou odpovídajícího nastavení registru v části

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Internet Settings
                  WinHttp
                     Passport Test
LoginServerRealm (REG_SZ)    For example: abc.net
LoginServerUrl (REG_SZ)      For example: https://private-login.passport.com/login2.asp
ConfigVersion (REG_DWORD)    For example: 10

Pokud je v registru k dispozici LoginServerUrl, WinHTTP nekontaktuje server nexus s dalšími konfiguračními hodnotami. V tomto případě by mělo být loginServerRealm a ConfigVersion také nastaveno prostřednictvím registru pro správné hodnoty.

Aplikace může být pro účely testování nutná ke stažení konfigurace pasu z privátního serveru nexus. To lze provést přepsáním dvou hodnot registru v části

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Internet Settings
                  WinHttp
                     Passport Test
NexusHost (REG_SZ)    e.g. private-nexus.passport.com
NexusObj(REG_SZ)      e.g. config/passport.asp

Ověřování ve službě WinHTTP