Ověření webové služby RESTful
HTTP podporuje použití několika ověřovacích mechanismů pro řízení přístupu k prostředkům. Základní ověřování poskytuje přístup k prostředkům pouze klientům, kteří mají správné přihlašovací údaje. Tento článek ukazuje, jak pomocí základního ověřování chránit přístup k prostředkům webové služby RESTful.
Poznámka
V iOSu 9 a vyšším vynucuje Zabezpečení přenosu aplikací (ATS) zabezpečená připojení mezi internetovými prostředky (například back-end serverem aplikace) a aplikací, což brání náhodnému zpřístupnění citlivých informací. Vzhledem k tomu, že je ATS v aplikacích sestavených pro iOS 9 ve výchozím nastavení povolený, budou všechna připojení podléhat požadavkům na zabezpečení ATS. Pokud připojení tyto požadavky nesplňuje, dojde k selhání s výjimkou.
Pokud není možné používat protokol a zabezpečenou komunikaci pro internetové prostředky, může se služba ATS HTTPS odhlásit. Toho lze dosáhnout aktualizací souboru Info.plist aplikace. Další informace najdete v tématu App Transport Security.
Ověřování uživatelů přes HTTP
Základní ověřování je nejjednodušší ověřovací mechanismus podporovaný protokolem HTTP a zahrnuje odesílání uživatelského jména a hesla klientem jako nešifrovaný text s kódováním Base64. Funguje takto:
- Pokud webová služba obdrží požadavek na chráněný prostředek, odmítne ji se stavový kódem HTTP 401 (přístup odepřen) a nastaví hlavičku odpovědi WWW-Authenticate, jak je znázorněno na následujícím diagramu:

- Pokud webová služba obdrží požadavek na chráněný prostředek se správně nastavenou hlavičkou, webová služba odpoví stavový kód HTTP 200, který označuje, že požadavek byl úspěšný a že v odpovědi jsou požadované
Authorizationinformace. Tento scénář je znázorněn v následujícím diagramu:

Poznámka
Základní ověřování by se mělo používat jenom přes připojení HTTPS. Při použití přes připojení HTTP je možné hlavičku snadno dekódovat, pokud útočník Authorization zachytá provoz HTTP.
Zadání základního ověřování ve webovém požadavku
Použití základního ověřování se zadá takto:
- Řetězec Basic se přidá do
Authorizationhlavičky požadavku. - Uživatelské jméno a heslo se zkombinují do řetězce ve formátu "uživatelské_jméno:heslo", který se pak zakóduje do kódování Base64 a přidá se
Authorizationdo hlavičky požadavku.
Proto se pomocí uživatelského jména XamarinUser a hesla XamarinPassword stane hlavička:
Authorization: Basic WGFtYXJpblVzZXI6WGFtYXJpblBhc3N3b3Jk
Třída HttpClient může nastavit hodnotu Authorization hlavičky u vlastnosti HttpClient.DefaultRequestHeaders.Authorization . Vzhledem k tomu, že instance existuje napříč více požadavky, je nutné hlavičku nastavit pouze jednou, nikoli při provádění každého požadavku, jak je znázorněno v HttpClientAuthorization následujícím příkladu kódu:
public class RestService : IRestService
{
HttpClient _client;
...
public RestService ()
{
var authData = string.Format ("{0}:{1}", Constants.Username, Constants.Password);
var authHeaderValue = Convert.ToBase64String (Encoding.UTF8.GetBytes (authData));
_client = new HttpClient ();
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue ("Basic", authHeaderValue);
}
...
}
Když se pak na operaci webové služby vyžádá požadavek, podepíše se hlavičkou , která označuje, jestli má uživatel oprávnění Authorization k vyvolání operace.
Důležité
I když tento kód ukládá přihlašovací údaje jako konstanty, neměly by být uložené v nezabezpečeném formátu v publikované aplikaci.
Zpracování autorizační hlavičky na straně serveru
Služba REST by měla každou akci dekorovat [BasicAuthentication] atributem . Tento atribut se používá k parsování hlavičky a určení, jestli jsou přihlašovací údaje zakódované v kódování Base64 platné, porovnáním s hodnotami uloženými AuthorizationAuthorization. I když je tento přístup vhodný pro ukázkovou službu, vyžaduje rozšíření pro veřejně přístupnou webovou službu.
V modulu základního ověřování používaném službou IIS se uživatelé ověřují pomocí svých Windows přihlašovacích údajů. Proto uživatelé musí mít účty v doméně serveru. Model základního ověřování se ale může nakonfigurovat tak, aby povoloval vlastní ověřování, kdy se uživatelské účty ověřují vůči externímu zdroji, jako je například databáze. Další informace najdete v tématu Základní ověřování ASP.NET webovém rozhraní API na ASP.NET webu.
Poznámka
Základní ověřování nebylo navrženo ke správě odhlášení. Standardním přístupem k základnímu ověřování pro odhlášení je proto ukončení relace.