Implementovat řešení Single Sign On pomocí základního ověřování a klientské aplikaci Internet Explorer


Souhrn


Při instalaci aktualizace zabezpečení v bulletinu zabezpečení MS04-004 v počítači, může přerušit některé webové aplikace, které předat pověření prostřednictvím adresy URL. Tento článek popisuje několik metod, jak tento problém obejít a popisuje omezení jednotlivých metod.

ÚVOD


Tento článek popisuje, jak předat pověření prostřednictvím adresy URL pro jednoho přihlášení (SSO) pomocí základního ověřování. Při instalaci aktualizace zabezpečení v bulletinu zabezpečení MS04-004, nelze předat pověření prostřednictvím adresy URL.

Další informace


Problém s Microsoft Security Bulletin MS04-004

Bulletin zabezpečení společnosti Microsoft MS04-004 poskytuje aktualizace zabezpečení pro aplikaci Microsoft Internet Explorer a závislost součást s názvem WinInet. Aktualizace zabezpečení MS04-004 vyhovuje bodu 3.2.2 požadavku pro komentáře RFC 2616 a oddíl 3.3 RFC 1738. Oba oddíly těchto standardů RFC uvádí, že adresy URL protokolu HTTP, musí mít následující formát:
http://host:port/path?querystring
Poznámka: hostitele, porta cestu jsou zástupné symboly pro název hostitele, číslo portu a umístění požadované webové stránky na serveru. kolekce QueryString je zástupný symbol pro parametry řetězce dotazu, které jsou přenášeny na server.

Bulletin zabezpečení MS04-004, obsahuje aktualizaci, která brání konkrétní problém podvodná URL. Falšování je praxe, přičemž uživatelé do poskytování hesel a dalších informací, které chcete umožnit neoprávněný přístup do systému. V tomto scénáři uživatelé jsou obelstěni a že procházejí určitý web, když si prohlížejí skutečně na jiný web. Aktualizace zabezpečení MS04-004, zabrání problému falšování adresy URL. Po instalaci aktualizace zabezpečení MS04-004, může přerušit některé webové aplikace. Webové aplikace, které jsou ovlivněny spoléhat na funkci, která předává pověření prostřednictvím adresy URL

Poznámka: Protože základní ověřování pověření jsou předány prostřednictvím sítě ve formátu prostého textu pro každý požadavek odeslaný na webový server ve webovém klientu, omezte používání základního ověřování. Používejte základní ověřování, pouze pokud jsou k dispozici jiné metody ověřování. Také použijte základní ověřování spolu se šifrováním, například TLS/SSL.

Microsoft se shoduje s následující upozornění, které jsou uvedeny v dokumentu RFC 2396 oddílu 7:
Je jasně odpojuje od použití adresy URL, která obsahuje heslo, které má být tajné. Zejména použití hesla v rámci "userinfo" část adresy URL je silně disrecommended kromě výjimečných případů, kde parametr "heslo" má být veřejné.
Společnost Microsoft doporučuje implementováno základní ověřování založeno SSO řešení. Nicméně tento článek obsahuje několik metod, které můžete použít, chcete-li vyřešit problém, který nastává po instalaci aktualizace zabezpečení MS04-004. Při použití této metody předchozí systémy, které implementují základní ověřování založeno SSO řešení pracovat stejně, jako tomu bylo před instalací aktualizace zabezpečení MS04-004.

Další informace o bulletinu zabezpečení MS04-004 naleznete na následujícím webu společnosti Microsoft:

Implementaci SSO

Následující kroky popisují implementaci řešení jednotného přihlášení k webu pomocí základního ověřování.

Poznámka: V tomto scénáři funguje před instalací aktualizace zabezpečení MS04-004.
  1. Webový klient požádá o PageOfInterest.asp z
    Server_a.

    Poznámka: PageOfInterest.aspa Server_a jsou zástupné symboly pro název požadované stránky a název serveru, kde požadovaná stránka uložena, v uvedeném pořadí.
  2. Server_a odpoví zprávou webového klienta pokyn k načtení webového klienta
    PageOfInterest.asp z následujícího umístění:
    http://sbUsername:sbPassword@ServerB/SomePath/PageOfInterest.asp
    Tento pokyn je buď odeslány do umístění hlavičky odpovědi protokolu HTTP s kódem stavu = 302, nebo je odeslána jako "meta refresh" značku v textu zprávy odpovědi protokolu HTTP s kódem stavu = 200.

    Poznámka: sbUsername, sbPassword, SomePath a ServerBjsou zástupné symboly pro uživatelské jméno, heslo, název serveru, kde jsou uloženy požadované stránky a umístění požadované webové stránky na serveru. Upravte tyto hodnoty podle vašeho prostředí.
  3. Požadavky klienta sítě WWW
    PageOfInterest.asp z
    ServerBa pak poskytuje pověření při ustavení.
Když aplikace Internet Explorer adresy URL canonicalized, před instalací aktualizace zabezpečení MS04-004, WinInet uloženy žádná pověření, které došlo mezi oddíly protokol a hostitelské adresy URL pro pozdější použití v komunikaci mezi webového klienta a serveru WWW. Rozhraní WinInet je komponentou aplikace Internet Explorer používá ke komunikaci prostřednictvím protokolu TCP/IP. V případě následného požadavku na stejné základní ověřovací sféru vrátil WWW-Authenticate: základní odezvou záhlaví, WinInet používá správně formátovaný povolení: základní požadavek záhlaví vydat další požadavek na webový server, který obsahuje pověření, které byly uloženy při interpretaci. Při ukládání pověření, webový klient může ověřit na webový server a uživatel není vyzván k zadání pověření.

Sekvence vzorku

Následuje ukázka dat HTTP vyměňované mezi klientem aplikace Internet Explorer a počítač serveru se systémem Internetová informační služba (IIS) v posloupnosti typických základní ověřování.

Poznámka: Tato ukázka byla shromážděna pomocí nástroji WFetch nástroj. \R\n znaky představují šestnáctkové znaky 0D 0A nebo znak ASCII CRLF. Další informace o nástroji WFetch nástroj, klepněte na následující číslo článku databáze Microsoft Knowledge Base:

284285 postup odstraňování potíží s připojením HTTP pomocí Wfetch.exe

  1. Prohlížeč problémy anonymního požadavku na webový server.
    GET /SomePath/PageOfInterest.aspx HTTP/1.1\r\nHost: ServerB\r\n
    Accept: */*\r\n
    \r\n

  2. Webový server odpoví na webový klient, že přístup byl odepřen a že požadovaný prostředek vyžaduje základní ověřování pověření.
    HTTP/1.1 401 Access Denied\r\nContent-Length: 4431\r\n
    Content-Type: text/html\r\n
    Server: Microsoft-IIS/6.0\r\n
    WWW-Authenticate: Basic realm="ServerB"\r\n
    X-Powered-By: ASP.NET\r\n
    Date: Mon, 16 Feb 2004 00:38:11 GMT\r\n
    \r\n
    [ *** HTTP MESSAGE-BODY REMOVED FOR BREVITY *** ]
    \r\n

  3. V prohlížeči znovu odešle stejný požadavek, který je odeslán v kroku 1. Nicméně tentokrát prohlížeče vloží povolení: základní hlavičky, který obsahuje pověření uživatele.
    GET /SomePath/PageOfInterest.aspx HTTP/1.1\r\nHost: ServerB\r\n
    Accept: */*\r\n
    Authorization: Basic TG9jYWxVc2VyOkxvY2FsUGFzc3dvcmQ=\r\n
    \r\n

  4. Jsou pověření platná a má uživatel přístupová oprávnění k požadovanému prostředku. Proto je vrácena data, která je požadována uživatelem.
    HTTP/1.1 200 OK\r\nDate: Mon, 16 Feb 2004 00:40:37 GMT\r\n\
    Server: Microsoft-IIS/6.0\r\n
    X-Powered-By: ASP.NET\r\n
    X-AspNet-Version: 1.1.4322\r\n
    Set-Cookie: ASP.NET_SessionId=zzseaci1a4tyhrymokckmau2; path=/\r\n
    Cache-control: private\r\n
    Content-Type: text/html\r\n
    Content-Length: 44\r\n
    \r\n
    [ *** HTTP MESSAGE-BODY REMOVED FOR BREVITY *** ]
    \r\n

Význam této ukázce komunikace je prokázat, že v posloupnosti typických základní ověřování webového klienta se nejprve pokusí komunikovat pomocí anonymního ověřování (to znamená bez povolení: základní požadavek záhlaví je odeslána). Server potom odpoví odpovědí, který obsahuje kód stavu 401přístup byl odepřen a WWW-Authenticate: základní odezvou záhlaví. Obvykle mezi kroky 2 a 3, prohlížeč vyzve uživatele dialogové okno, které vyzve uživatele k zadání pověření v reakci na server ověřit: základní challenge. Však za RFC 2617, většina prohlížečů (včetně aplikace Internet Explorer) poskytnout povolení: základní hlavičku, pokud uživatel již zadal pověření základního ověřování pro zadanou sférou. Po instalaci aktualizace zabezpečení MS04-004, aplikace Internet Explorer zahodí pověření, které jsou předávány prostřednictvím adresy URL a WinInet již automaticky předávat pověření. Uživatel tedy obdrží dialogové okno zobrazí výzvu k zadání pověření pro základní ověřování.

Jak potíže obejít


Chcete-li tento problém vyřešit, použijte jednu z následujících metod. Navrhovaný postup v této části odkazuje na tři hostitelé: Server_a
ServerBa webového klienta. Pokud Server_a je název požadované stránky a ServerB je název serveru, kde je uložena požadovaná stránka.

Poznámka: Vzhledem k tomu, že změny provedené v aktualizaci zabezpečení MS04-004, platí pouze pro verze systému Windows, aplikace Internet Explorer, webového klienta se považuje za verzi aplikace Internet Explorer, která byla aktualizována pomocí aktualizace zabezpečení MS04-004.

Můžete stáhnout ukázky z různých řešení, které jsou navržené v tomto článku. Je k dispozici pro stahování Microsoft Download Center následující soubor:
Download Stáhnout balíček ukázky. Další informace o stažení Microsoft Support soubory, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
119591 jak získat soubory podpory společnosti Microsoft ze serverů služeb Online
Microsoft zkontroloval tento soubor na přítomnost virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici k datu, kdy byl soubor vydán. Soubor je uložen na zabezpečených serverech, které pomáhají zabránit neoprávněné změny souboru.

Metoda 1: Použití objektu XMLHTTP

Pomocí objektu XMLHTTP provádět průběžné žádosti v klientský skript, který běží na webový klient, namísto spoléhání se na aplikaci Internet Explorer automaticky přesměrovat při obdrží odpověď 302 (přesměrování) z Server_a. Objekt XMLHTTP poskytuje několik vlastností, které umožňují vývojářům shromažďovat data z hlavičky odpovědi protokolu HTTP, řetězec dotazu nebo textu zprávy v HTML dokumentu.

Požadavky
  • (MSXML) musí být k dispozici pro skriptování na straně klienta (Analyzátor MSXML 3.0 je součástí systému Microsoft Windows 2000 a novější a je součástí aplikace Internet Explorer 6.0 a novější).
  • Změny konfigurace musí podporovat Server_a . Tato změna umožňuje serveru Server_a webového klienta odeslat stránku, která načte objekt XMLHTTP . Objekt XMLHTTP zachycuje zprávy přesměrování namísto pokusu o zpracování zprávy přesměrování jako před instalací aktualizace zabezpečení MS04 004.
Omezení
  • Chybu v analyzátoru MSXML brání toto řešení fungovat bez další konfigurace. Tato chyba byla opravena. Však aplikace Internet Explorer klientů, které jste nainstalovali zabezpečení aktualizace MS04-004 vyžadují aktualizovanou verzi analyzátoru msxml?. DLL. Další informace o aktualizované verzi analyzátoru msxml?. DLL, klepněte na následující číslo článku databáze Microsoft Knowledge Base:

    832414 volání XMLHTTP NEPROBĚHNE úspěšně u adres URL s vloženými pověřeními uživatele

Metoda 2: Použití serverové aplikace, která můžete upravit datový proud protokolu HTTP před spuštěním skriptu

Použijte na serverovou aplikaci, která lze upravit datový proud protokolu HTTP před spuštění skriptu (například filtr ISAPI nebo .NET HttpModule)
ServerB zachycení pověření, které jsou přeneseny pomocí webového klienta pomocí jiného oddílu platný požadavek HTTP a potom generovat platné povolení: základní záhlaví předat webového serveru pro ověřování.

Požadavky
  • Server_a musí podporovat změnu konfigurace (k odeslání webového klienta pověření v jiné části odpověď, jako je například řetězec dotazu nebo v souboru Cookie. Proto webový klient může přenášet tato pověření k ServerB filtru ISAPI nebo HttpModule zachytit)
Omezení
  • Serverové aplikace, například filtry ISAPI nebo HttpModules .NET, který se používá v tomto zástupném řešení musí podporovat ServerB .

Metoda 3: Použití serverové komponenty např ServerXMLHTTP WinHttp

Načíst obsah ze ServerBpřímo, pomocí server-side komponenty jako WinHttp objekt nebo objekt ServerXMLHTTPuvnitř stránky ASP nebo ASPX stránky na Server_a (to znamená na jménem uživatele) a vrátit obsah webového klienta. V tomto případě nikdy webový klient komunikuje s ServerB.


Požadavky
  • Programové ID WinHttp.WinHttpRequest.5.1 musí být k dispozici na
    Server_a. Ve výchozím nastavení WinHttp.WinHttpRequest.5.1 je součástí systému Microsoft Windows 2000 SP3, Microsoft Windows XP SP1 a Microsoft Windows Server 2003.
Omezení
  • WinHttp.WinHttpRequest.5.1 očekává ServerB se vraťte vyplněný obsah webového klienta. V tomto scénáři webový klient má verzi aplikace Internet Explorer nainstalován, která byla aktualizována pomocí aktualizace zabezpečení MS04-004. Pokud se očekává, že tento webový klient provést synchronní komunikaci s ServerB (prostřednictvím ovládacího prvku ActiveX nebo aplet v jazyce Java), toto řešení pravděpodobně nebude fungovat.
  • Společnost Microsoft nedoporučuje řešení, protože výkon serveru Server_a ovlivní funkce webového klienta, pokud má klient webové verze aplikace Internet Explorer nainstalován, která byla aktualizována pomocí aktualizace zabezpečení MS04-004.

Metoda 4: Použijte vlastní klientské aplikace.

Použijte vlastní klientské aplikace, jako je například ovládací prvek ActiveX, který volá rozhraní WinInet API nebo rozhraní API služby WinHttp nebo ovládací prvek formuláře systému Windows .NET, který používá obor názvů System.Net.Sockets , které můžete vytvořit instanci v kódu na straně klienta v prohlížeči. Tento vlastní objekt musí být schopen vytvořit připojení TCP a musí být schopen přenosu zpráv ve správném formátu HTTP (S) (včetně generování povolení: základní požadavek záhlaví).


Požadavky
  • Roztok ActiveX: uživatelé musí mít oprávnění k instalaci ovládacích prvků ActiveX v počítači.
  • Roztok ActiveX: nastavení zabezpečení v aplikaci Internet Explorer musí umožnit spuštění ActiveX aplikací.
  • .NET WinForms řešení: Microsoft rozhraní.NET Framework musí být nainstalována na webový klient.
Omezení
  • Uživatelé ve spravovaných prostředích, nebudete moci změnit nastavení jejich stažení a spuštění, chcete-li povolit ovládací prvky ActiveX nebo ovládací prvky WinForms rozhraní .NET.
  • Služba WinHttp (nazývané přímo pomocí modelu COM nebo pomocí rozhraní.NET Framework) používá jinou sadu API rozhraní než rozhraní WinInet (který používá aplikaci Internet Explorer). Žádné ověřování v aplikaci klienta musí proto dojít pro každý požadavek odeslaný na webový server.
  • .NET WinForms řešení: před spuštěním klienta ovládacího prvku, je nutné nakonfigurovat funkci zabezpečení .NET každého webového klienta.
  • .NET WinForms řešení: jediný způsob, jak ověřit vzdáleně nainstalované rozhraní.NET Framework na nespravované webový klient je do dotazu řetězce User Agent protokolu HTTP, který je k dispozici aplikace Internet Explorer. Však protože tuto hodnotu lze změnit pomocí nastavení registru, není vhodné tento druh detekce autoritativní.

Odkazy


Následující soubor je k dispozici pro stažení z Microsoft Download Center:
Download Stáhnout balíček Samples.exe. Další informace o stažení Microsoft Support soubory, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
119591 jak získat soubory podpory společnosti Microsoft ze serverů služeb Online
Microsoft zkontroloval tento soubor na přítomnost virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici k datu, kdy byl soubor vydán. Soubor je uložen na zabezpečených serverech, které pomáhají zabránit neoprávněné změny souboru.
Další informace naleznete na následujících webech Microsoft Developer Network (MSDN):
DHTML a .NET Host Secure, lightweight ovládací prvky na straně klienta v aplikaci Microsoft Internet Explorer
http://msdn.microsoft.com/msdnmag/issues/02/01/userctrl/
getResponseHeader metoda (IXMLHTTPRequest)
http://msdn2.microsoft.com/en-us/library/ms757006.aspx
Bulletin zabezpečení společnosti Microsoft MS04-004
http://www.microsoft.com/technet/security/bulletin/ms04-004.mspx
Další informace o požadavku for Comments (RFC) naleznete na následujících webech RFC:Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

815148 postup při úpravě zabezpečení rozhraní.NET Framework na základ pásmo podle zóny

259100 ukázka: Vbhttp.exe znázorňuje způsob použití HTTP WinInet API v jazyce Visual Basic

303436 ukázka: třídy Visual C# .NET sítě HTTP Internet klienta

182569 zóny zabezpečení aplikace Internet Explorer položky registru pro pokročilé uživatele

834489 aplikace Internet Explorer nepodporuje uživatelská jména a hesla v adresách webů (HTTP nebo HTTPS)

284285 postup odstraňování potíží s připojením HTTP pomocí Wfetch.exe

836640 nelze získat přístup aplikace Outlook Web Access a jediné přihlášení webové aplikace pomocí XMLHTTP po instalaci Internet Explorer aktualizace zabezpečení MS04-004