Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
- Passport Login Server
- ověřený požadavek
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.
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.
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.
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
Související témata
-
Ověřování ve službě WinHTTP