IdentityServer natív felhőbeli alkalmazásokhoz

Borravaló

Ez a tartalom a „Az Azure-hoz készült natív felhőalapú .NET-alkalmazások tervezése” című eBookból egy részlet, amely elérhető a .NET Docs oldalán, vagy ingyenesen letölthető PDF fájlként, amely offline módban is olvasható.

PDF- letöltése

Azure-szolgáltatásban futó Cloud Native .NET-alkalmazások ebook borítójának miniatűrje.

A Duende IdentityServer az OpenID Connect (OIDC) és az OAuth 2.x szabványnak megfelelő hitelesítési kiszolgáló ASP.NET Core használatával történő létrehozásához használható keretrendszer.

Úgy tervezték, hogy általános módot biztosítson az összes alkalmazás kéréseinek hitelesítésére, legyen szó webes, natív, mobil vagy API-végpontokról. Az IdentityServer több alkalmazáshoz és alkalmazástípushoz is használható egyetlen Sign-On (SSO) implementálásához. A tényleges felhasználók hitelesítésére használható bejelentkezési űrlapokon és hasonló felhasználói felületeken, valamint olyan szolgáltatásalapú hitelesítésen keresztül, amely általában a jogkivonatok kiállítását, ellenőrzését és megújítását foglalja magában felhasználói felület nélkül. Összevonási átjáróként is működhet a hitelesítésszolgáltatók egyesítése érdekében.

Az IdentityServer testre szabható megoldásként lett kialakítva. Az egyes példányok általában testre vannak szabva annak érdekében, hogy megfeleljenek egy adott szervezet vagy egy alkalmazáskészlet igényeinek.

Gyakori webalkalmazás-forgatókönyvek

Az alkalmazásoknak általában támogatniuk kell a következő forgatókönyvek némelyikét vagy mindegyikét:

  • Az emberi felhasználók böngészővel férnek hozzá a webalkalmazásokhoz.
  • A háttérbeli webes API-kat böngészőalapú alkalmazásokból elérő emberi felhasználók.
  • A háttérbeli webes API-kat elérő mobil- és natív alkalmazások emberi felhasználói.
  • Egyéb alkalmazások, amelyek háttérbeli webes API-kat érnek el (aktív felhasználói felület vagy felhasználói felület nélkül).
  • Előfordulhat, hogy bármely alkalmazásnak más webes API-kkal kell együttműködnie, saját identitást használva vagy a felhasználó identitására való delegálással.

alkalmazástípusok és forgatókönyvek

Ábra 8–1. Alkalmazástípusok és forgatókönyvek.

Ezen forgatókönyvek mindegyikében a közzétett funkciókat védeni kell a jogosulatlan használat ellen. Ehhez általában az erőforrásra vonatkozó kérést küldő felhasználó vagy tag hitelesítése szükséges. Ez a hitelesítés számos gyakori protokoll egyikét használhatja, például az SAML2p, a WS-Fed vagy az OpenID Connect protokollt. Az API-kkal való kommunikáció általában az OAuth 2 protokollt és annak biztonsági jogkivonatok támogatását használja. Ezeknek a kritikus, horizontális biztonsági problémáknak és azok megvalósítási részleteinek az alkalmazásoktól való elkülönítése biztosítja a konzisztenciát, és javítja a biztonságot és a karbantarthatóságot. Ezeknek a problémáknak a kiszervezése egy dedikált termékre, például az IdentityServerre segít abban, hogy minden alkalmazás maga oldja meg ezeket a problémákat.

Az IdentityServer olyan köztes szoftvereket biztosít, amelyek egy ASP.NET Core-alkalmazásban futnak, és támogatja az OpenID Connectet és az OAuth 2.x-et (lásd a támogatott specifikációkat). Az IdentityServer használatával a szervezetek létrehozhatják saját ASP.NET Core-alkalmazásukat az IdentityServer köztes szoftverrel, hogy az összes jogkivonat-alapú biztonsági protokolljuk engedélyezési kiszolgálójaként működjenek. Az IdentityServer köztes szoftver végpontokat tesz elérhetővé a szabványos funkciók támogatásához, beleértve a következőket:

  • Engedélyezés (a végfelhasználó hitelesítése)
  • Token (jogkivonat kérése programozott módon)
  • Felderítés (metaadatok a kiszolgálóról)
  • Felhasználói adatok (felhasználói adatok lekérése érvényes hozzáférési jogkivonattal)
  • Eszköz engedélyezése (az eszközfolyamat-engedélyezés elindításához használatos)
  • Önvizsgálat (token érvényesítés)
  • Visszavonás (jogkivonat visszavonása)
  • Munkamenet befejezése (egyszeri kijelentkezés aktiválása az összes alkalmazásban)
  • Küldött engedélyezési kérelmek (a biztonságosabb hitelesítési folyamathoz)

Első lépések

Az IdentityServer elérhető:

A díjszabással kapcsolatos további információkért tekintse meg a hivatalos termék díjszabási oldalát.

NuGet-csomagjaival hozzáadhatja az alkalmazásokhoz. A fő csomag IdentityServer, amelyet több mint négymillió alkalommal töltöttek le. Az alapcsomag nem tartalmaz felhasználói felületi kódot, és csak a memórián belüli konfigurációt támogatja. Ha adatbázissal szeretné használni, szüksége lesz egy olyan adatszolgáltatóra is, mint Duende.IdentityServer.Storage, amely az Entity Framework Core használatával tárolja az IdentityServer konfigurációs és működési adatait. A felhasználói felületen a mintaadattárból másolhat fájlokat a ASP.NET Core MVC-alkalmazásba, hogy támogatást adjon a bejelentkezéshez és a kijelentkezéshez az IdentityServer köztes szoftverrel.

Konfiguráció

Az IdentityServer különböző protokollokat és közösségi hitelesítésszolgáltatókat támogat, amelyek az egyes egyéni telepítések részeként konfigurálhatók. Ez általában a ASP.NET Core-alkalmazás osztályában Program történik. A konfiguráció magában foglalja a támogatott protokollok, valamint a használni kívánt kiszolgálók és végpontok elérési útvonalának megadását. A 8–2. ábra egy példakonfigurációt mutat be az IdentityServer gyorsútmutatójából ASP.NET Core-alkalmazások projekthez:

// 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;
    });
}

8-2. ábra. Az IdentityServer konfigurálása.

JavaScript-ügyfelek

Számos natív felhőalkalmazás használ kiszolgálóoldali API-kat és gazdag ügyféloldali alkalmazásokat (SPA-kat) az előtérben, például React, Angular vagy Blazor WebAssembly használatával. Az ilyen típusú kliensekhez a backend-for-frontend (BFF) mintát használják, így a jogkivonatok a böngészőtől elzárva tarthatók. Ez a minta az IETF OAuth 2.0 Browser-Based Applications specifikáció követelményeit követi.

Hivatkozások