Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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.
Á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ő:
- Közösségi licenccel, amely lehetővé teszi a IdentityServer ingyenes használatát kisvállalatok és nonprofit (a feltételek érvényesek)
- Fizetős, amely lehetővé teszi az IdentityServer kereskedelmi forgatókönyvben való használatát
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.