IdentityServer pro aplikace nativní pro cloud

Spropitné

Tento obsah je výňatek z elektronické knihy Architektura cloud-native .NET aplikací pro Azure, která je k dispozici na .NET Docs nebo jako bezplatné PDF ke stažení, které si můžete přečíst offline.

miniatura obálky e-knihy Cloud-nativní aplikace .NET pro Azure.

Duende IdentityServer je architektura pro sestavení ověřovacího serveru kompatibilního se standardem OpenID Connect (OIDC) a OAuth 2.x s využitím ASP.NET Core.

Je navržená tak, aby poskytovala běžný způsob ověřování požadavků na všechny vaše aplikace, ať už jde o webové, nativní, mobilní nebo koncové body rozhraní API. IdentityServer lze použít k implementaci jednoho Sign-On (SSO) pro více aplikací a typů aplikací. Dá se použít k ověřování skutečných uživatelů prostřednictvím přihlašovacích formulářů a podobných uživatelských rozhraní a ověřování na základě služeb, které obvykle zahrnuje vystavování, ověřování a prodlužování platnosti tokenů bez uživatelského rozhraní. Může také fungovat jako federační brána ke sjednocení zprostředkovatelů ověřování.

IdentityServer je navržený tak, aby byl přizpůsobitelným řešením. Každá instance je obvykle přizpůsobená tak, aby vyhovovala jednotlivým organizacím nebo potřebám sady aplikací.

Běžné scénáře webových aplikací

Aplikace obvykle potřebují podporovat některé nebo všechny následující scénáře:

  • Uživatelé, kteří přistupují k webovým aplikacím pomocí prohlížeče
  • Uživatelé, kteří přistupují k backendovým webovým rozhraním API z aplikací využívajících prohlížeč.
  • Lidé na mobilních nebo nativních klientech přistupující k back-endovým webovým rozhraním API.
  • Jiné aplikace, které přistupují k back-endovým webovým rozhraním (bez aktivního uživatele nebo uživatelského rozhraní).
  • Každá aplikace může potřebovat interakci s jinými webovými rozhraními API pomocí vlastní identity nebo delegování na identitu uživatele.

typy aplikací a scénáře

obrázek 8-1. Typy aplikací a scénáře.

V každém z těchto scénářů musí být vystavené funkce zabezpečené proti neoprávněnému použití. Minimálně to obvykle vyžaduje ověření uživatele nebo principála, který žádá o zdroj. Toto ověřování může používat jeden z několika běžných protokolů, jako je SAML2p, WS-Fed nebo OpenID Connect. Komunikace s rozhraními API obvykle používá protokol OAuth 2 a jeho podporu pro tokeny zabezpečení. Oddělení těchto důležitých problémů se zabezpečením a podrobností o jejich implementaci od samotných aplikací zajišťuje konzistenci a zlepšuje zabezpečení a udržovatelnost. Outsourcing těchto problémů na specializované produkty, jako je IdentityServer, snižuje potřebu každé aplikace řešit tyto problémy samostatně.

IdentityServer poskytuje middleware, který běží v aplikaci ASP.NET Core a přidává podporu openID Connect a OAuth 2.x (viz podporované specifikace). Pomocí IdentityServer mohou organizace vytvořit vlastní aplikaci ASP.NET Core pomocí middlewaru IdentityServer, který bude fungovat jako autorizační server pro všechny protokoly zabezpečení založené na tokenech. Middleware IdentityServer zveřejňuje koncové body pro podporu standardních funkcí, včetně:

  • Autorizace (ověření koncového uživatele)
  • Token (žádost o token prostřednictvím kódu programu)
  • Zjišťování (metadata o serveru)
  • Informace o uživateli (získání informací o uživateli s platným přístupovým tokenem)
  • Autorizace zařízení (používá se ke spuštění autorizace toku zařízení)
  • Introspection (ověření tokenu)
  • Odvolání (odvolání tokenu)
  • Ukončit relaci (aktivovat jednotné přihlašování napříč všemi aplikacemi)
  • Nabízené žádosti o autorizaci (pro bezpečnější proces ověřování)

Začínáme

IdentityServer je k dispozici:

Další informace o cenách najdete na oficiální stránce s cenami produktu .

Můžete ho přidat do svých aplikací pomocí jeho balíčků NuGet. Hlavní balíček je IdentityServer, který byl stažen více než čtyři milionykrát. Základní balíček neobsahuje žádný kód uživatelského rozhraní a podporuje pouze konfiguraci v paměti. Pokud ho chcete použít s databází, budete chtít také zprostředkovatele dat, jako je Duende.IdentityServer.Storage, který používá Entity Framework Core k ukládání konfiguračních a provozních dat pro IdentityServer. Pro uživatelské rozhraní můžete zkopírovat soubory z úložiště ukázek do aplikace ASP.NET Core MVC a přidat podporu pro přihlášení a odhlášení pomocí middlewaru IdentityServer.

Konfigurace

IdentityServer podporuje různé druhy protokolů a zprostředkovatelů sociálního ověřování, které je možné nakonfigurovat jako součást každé vlastní instalace. Toto se obvykle provádí v třídě Program aplikace ASP.NET Core. Konfigurace zahrnuje zadání podporovaných protokolů a cest k serverům a koncovým bodům, které se budou používat. Obrázek 8-2 zobrazuje příklad konfigurace z IdentityServer Quickstartu pro projekt aplikací ASP.NET Core.

// some details omitted
builder.Services.AddIdentityServer();

builder.Services.AddAuthentication(options =>
    {
        options.DefaultScheme = "Cookies";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("Cookies")
    .AddGoogle("Google", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

        options.ClientId = "<insert here>";
        options.ClientSecret = "<insert here>";
    })
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://localhost:5001";

        options.ClientId = "web";
        options.ClientSecret = "secret";
        options.ResponseType = "code";

        options.Scope.Clear();
        options.Scope.Add("openid");
        options.Scope.Add("profile");

        options.MapInboundClaims = false; // Don't rename claim types

        options.SaveTokens = true;
    });
}

obrázek 8–2. Konfigurace IdentityServeru

Klienti JavaScriptu

Mnoho cloudově nativních aplikací používá na front-endu serverová rozhraní API a bohaté klientské jednostránkové aplikace, například React, Angular nebo Blazor WebAssembly. Model back-endu pro front-end (BFF) se používá pro tyto typy klientů, což umožňuje zachovat tokeny mimo dosah prohlížeče. Tento model následuje specifikaci IETF OAuth 2.0 pro aplikace založené na prohlížeči.

Odkazy