Sdílet prostřednictvím


Výběr typu pověření

Přihlašovací údaje jsou data, která služba Windows Communication Foundation (WCF) používá k vytvoření deklarované identity nebo schopností. Cestovní pas je například přihlašovací údaje, které se týkají státní správy, aby bylo možné prokázat občanství v zemi nebo oblasti. V WCF můžou přihlašovací údaje mít mnoho formulářů, jako jsou tokeny uživatelského jména a certifikáty X.509. Toto téma popisuje přihlašovací údaje, způsob jejich použití ve WCF a výběr správných přihlašovacích údajů pro vaši aplikaci.

V mnoha zemích a oblastech je příkladem přihlašovacích údajů řidičská licence. Licence obsahuje data, která představují identitu a možnosti osoby. Obsahuje doklad o vlastnictví ve formě obrazu vlastníka. Licence je vydána důvěryhodnou autoritou, obvykle vládním oddělením licencování. Licence je zapečetěná a může obsahovat hologram, který ukazuje, že nebyla manipulována nebo padělaná.

Prezentace přihlašovacích údajů zahrnuje prezentaci dat i důkaz o vlastnictví dat. WCF podporuje různé typy přihlašovacích údajů na úrovni zabezpečení přenosu i zpráv. Představte si například dva typy přihlašovacích údajů podporovaných ve WCF: uživatelské jméno a přihlašovací údaje certifikátu X.509.

Pro přihlašovací údaje uživatelského jména představuje uživatelské jméno deklarovanou identitu a heslo poskytuje doklad o vlastnictví. Důvěryhodná autorita v tomto případě je systém, který ověřuje uživatelské jméno a heslo.

S přihlašovacími údaji certifikátu X.509 je možné použít název subjektu, alternativní název subjektu nebo konkrétní pole v certifikátu jako deklarace identity, zatímco jiná pole, například Valid From pole Valid To , určují platnost certifikátu.

Typy přenosů přihlašovacích údajů

Následující tabulka uvádí možné typy přihlašovacích údajů klienta, které lze použít vazbou v režimu zabezpečení přenosu. Při vytváření služby nastavte ClientCredentialType vlastnost na jednu z těchto hodnot a určete typ přihlašovacích údajů, které musí klient poskytnout pro komunikaci s vaší službou. Typy můžete nastavit v kódu nebo konfiguračních souborech.

Nastavení Popis
Nic Určuje, že klient nemusí prezentovat žádné přihlašovací údaje. To se přeloží na anonymního klienta.
Basic Určuje základní ověřování pro klienta. Další informace najdete v tématu RFC2617 – ověřování HTTP: základní ověřování a ověřování hodnotou hash.
Digest Určuje ověřování hodnotou hash pro klienta. Další informace najdete v tématu RFC2617 – ověřování HTTP: základní ověřování a ověřování hodnotou hash.
Ntlm Určuje ověřování NT LAN Manager (NTLM). To se používá, když z nějakého důvodu nemůžete použít ověřování protokolem Kerberos. Můžete také zakázat jeho použití jako záložní nastavení AllowNtlm vlastnosti false, což způsobí WCF, aby se co nejlépe vyvolaly výjimku, pokud se používá NTLM. Všimněte si, že nastavením této vlastnosti false nelze zabránit tomu, aby se přihlašovací údaje NTLM odesílaly přes drát.
Windows Určuje ověřování systému Windows. Chcete-li zadat pouze protokol Kerberos v doméně Systému Windows, nastavte AllowNtlm vlastnost na false (výchozí hodnota je true).
Certifikát Provádí ověřování klientů pomocí certifikátu X.509.
Heslo Uživatel musí zadat uživatelské jméno a heslo. Pomocí ověřování systému Windows nebo jiného vlastního řešení ověřte dvojici uživatelských jmen a hesel.

Typy přihlašovacích údajů klienta zpráv

Následující tabulka uvádí možné typy přihlašovacích údajů, které můžete použít při vytváření aplikace, která používá zabezpečení zpráv. Tyto hodnoty můžete použít v kódu nebo konfiguračních souborech.

Nastavení Popis
Nic Určuje, že klient nemusí prezentovat přihlašovací údaje. To se přeloží na anonymního klienta.
Windows Umožňuje výměnu zpráv SOAP v kontextu zabezpečení vytvořeném pomocí přihlašovacích údajů systému Windows.
Username Umožňuje službě vyžadovat ověření klienta pomocí přihlašovacích údajů uživatelského jména. Wcf neumožňuje žádné kryptografické operace s uživatelskými jmény, jako je generování podpisu nebo šifrování dat. WCF zajišťuje zabezpečení přenosu při použití přihlašovacích údajů uživatelského jména.
Certifikát Umožňuje službě vyžadovat ověření klienta pomocí certifikátu X.509.
Vystavený token Vlastní typ tokenu nakonfigurovaný podle zásad zabezpečení. Výchozí typ tokenu je SAML (Security Assertions Markup Language). Token vydává služba zabezpečených tokenů. Další informace najdete v tématu Federace a vystavené tokeny.

Model vyjednávání přihlašovacích údajů služby

Vyjednávání je proces navázání vztahu důvěryhodnosti mezi klientem a službou výměnou přihlašovacích údajů. Proces se provádí iterativním způsobem mezi klientem a službou, aby bylo možné zveřejnit pouze informace potřebné pro další krok v procesu vyjednávání. V praxi je konečným výsledkem doručení přihlašovacích údajů služby klientovi, který se použije v následných operacích.

S jednou výjimkou ve výchozím nastavení systémové vazby ve WCF vyjednávají přihlašovací údaje služby automaticky při použití zabezpečení na úrovni zpráv. (Výjimkou je BasicHttpBinding, která ve výchozím nastavení nepovoluje zabezpečení.) Chcete-li toto chování zakázat, podívejte se na vlastnosti NegotiateServiceCredential a NegotiateServiceCredential vlastnosti.

Poznámka:

Při použití zabezpečení SSL s rozhraním .NET Framework 3.5 a novějším klient WCF používá zprostředkující certifikáty v úložišti certifikátů i zprostředkující certifikáty přijaté během vyjednávání SSL k ověření řetězu certifikátů na certifikátu služby. Rozhraní .NET Framework 3.0 používá pouze zprostředkující certifikáty nainstalované v místním úložišti certifikátů.

Vyjednávání mimo pásmo

Pokud je automatické vyjednávání zakázané, musí se přihlašovací údaje služby zřídit u klienta před odesláním všech zpráv do služby. To se také označuje jako vzdálené zřizování. Pokud je například zadaný typ přihlašovacích údajů certifikátem a automatické vyjednávání je zakázané, klient musí kontaktovat vlastníka služby, aby obdržel a nainstaloval certifikát do počítače, na kterém je spuštěná klientská aplikace. Můžete to udělat například v případě, že chcete přísně řídit, kteří klienti mají přístup ke službě ve scénáři typu business-to-business. Toto vzdálené vyjednávání je možné provést e-mailem a certifikát X.509 je uložený v úložišti certifikátů systému Windows pomocí nástroje, jako je modul snap-in Certifikáty konzoly MMC (Microsoft Management Console).

Poznámka:

Vlastnost ClientCredentials slouží k poskytování služby certifikátem, který byl dosažen prostřednictvím vzdáleného vyjednávání. To je nezbytné při použití BasicHttpBinding třídy, protože vazba neumožňuje automatizované vyjednávání. Vlastnost se také používá v nekorozpočtovém duplexním scénáři. Jedná se o scénář, kdy server odešle klientovi zprávu, aniž by klient musel nejprve odeslat požadavek na server. Vzhledem k tomu, že server nemá požadavek od klienta, musí k zašifrování zprávy klientovi použít certifikát klienta.

Nastavení hodnot přihlašovacích údajů

Jakmile vyberete režim zabezpečení, musíte zadat skutečné přihlašovací údaje. Pokud je například typ přihlašovacích údajů nastavený na "certifikát", musíte ke službě nebo klientovi přidružit konkrétní přihlašovací údaje (například konkrétní certifikát X.509).

V závislosti na tom, jestli programujete službu nebo klienta, se metoda nastavení hodnoty přihlašovacích údajů mírně liší.

Nastavení přihlašovacích údajů služby

Pokud používáte režim přenosu a jako přenos používáte protokol HTTP, musíte použít buď Internetová informační služba (IIS), nebo nakonfigurovat port s certifikátem. Další informace naleznete v tématu Přehled zabezpečení přenosu a Zabezpečení přenosu HTTP.

Pokud chcete zřídit službu s přihlašovacími údaji v kódu, vytvořte instanci ServiceHost třídy a zadejte příslušné přihlašovací údaje pomocí třídy, ke kterým se ServiceCredentials přistupuje prostřednictvím Credentials vlastnosti.

Nastavení certifikátu

Pokud chcete zřídit službu s certifikátem X.509, který se má použít k ověření služby klientům, použijte SetCertificate metodu X509CertificateRecipientServiceCredential třídy.

Pokud chcete zřídit službu pomocí klientského certifikátu, použijte SetCertificate metodu X509CertificateInitiatorServiceCredential třídy.

Nastavení přihlašovacích údajů systému Windows

Pokud klient určuje platné uživatelské jméno a heslo, použije se k ověření klienta přihlašovací údaje. V opačném případě se použijí aktuální přihlašovací údaje přihlášeného uživatele.

Nastavení přihlašovacích údajů klienta

Klientské aplikace ve WCF používají klienta WCF pro připojení ke službám. Každý klient je odvozen od ClientBase<TChannel> třídy a ClientCredentials vlastnost na klientovi umožňuje specifikaci různých hodnot přihlašovacích údajů klienta.

Nastavení certifikátu

Pokud chcete zřídit službu s certifikátem X.509, který se používá k ověření klienta ve službě, použijte SetCertificate metodu X509CertificateInitiatorClientCredential třídy.

Způsob použití přihlašovacích údajů klienta k ověření klienta ve službě

Informace o přihlašovacích údaji klienta potřebné ke komunikaci se službou se poskytují buď pomocí ClientCredentials vlastnosti, nebo Credentials vlastnosti. Kanál zabezpečení používá tyto informace k ověření klienta ve službě. Ověřování se provádí jedním ze dvou režimů:

  • Přihlašovací údaje klienta se použijí jednou před odesláním první zprávy pomocí instance klienta WCF k vytvoření kontextu zabezpečení. Všechny zprávy aplikace se pak zabezpečí prostřednictvím kontextu zabezpečení.

  • Přihlašovací údaje klienta slouží k ověření každé zprávy aplikace odeslané do služby. V tomto případě není mezi klientem a službou vytvořen žádný kontext.

Vytvořené identity nelze změnit.

Při použití první metody je vytvořený kontext trvale přidružený k identitě klienta. To znamená, že po vytvoření kontextu zabezpečení nelze identitu přidruženou k klientovi změnit.

Důležité

Existuje situace, kdy se identita nedá přepnout (to znamená, že při navázání kontextu zabezpečení je zapnuté výchozí chování). Pokud vytvoříte službu, která komunikuje s druhou službou, nelze změnit identitu použitou k otevření klienta WCF druhé službě. Stává se to problémem, pokud má více klientů povoleno používat první službu a služba zosobňuje klienty při přístupu ke druhé službě. Pokud služba znovu použije stejného klienta pro všechny volající, všechna volání druhé služby se provádějí pod identitou prvního volajícího, který byl použit k otevření klienta ve druhé službě. Jinými slovy, služba používá identitu prvního klienta pro všechny své klienty ke komunikaci s druhou službou. To může vést ke zvýšení oprávnění. Pokud to není požadované chování vaší služby, musíte sledovat každého volajícího a vytvořit nového klienta pro každou jinou službu pro každého jedinečného volajícího a zajistit, aby služba ke komunikaci se druhou službou používala pouze správného klienta.

Další informace o přihlašovacích údajích a zabezpečených relacích najdete v tématu Důležité informace o zabezpečení pro zabezpečené relace.

Viz také