Megosztás a következőn keresztül:


A ASP.NET Core-hitelesítés áttekintése

Készítette : Mike Rousos

A hitelesítés a felhasználó identitásának meghatározására szolgáló folyamat. Az engedélyezés annak meghatározására szolgáló folyamat, hogy a felhasználó rendelkezik-e hozzáféréssel egy erőforráshoz. A ASP.NET Core-ban a hitelesítést a hitelesítési szolgáltatás kezeli, IAuthenticationServiceamelyet a közbenső szoftver hitelesítése használ. A hitelesítési szolgáltatás regisztrált hitelesítéskezelőket használ a hitelesítéssel kapcsolatos műveletek végrehajtásához. Példák a hitelesítéssel kapcsolatos műveletekre:

  • Felhasználó hitelesítése.
  • Válasz, ha egy nem hitelesített felhasználó megpróbál hozzáférni egy korlátozott erőforráshoz.

A regisztrált hitelesítési kezelők és konfigurációs beállításaik neve "sémák".

A hitelesítési sémák a hitelesítési szolgáltatások regisztrálásával vannak megadva a következő helyen Program.cs:

  • Egy sémaspecifikus bővítménymetódus meghívásával, például AddJwtBearer vagy AddCookie, egy AddAuthentication hívás után. Ezek a bővítménymetelyek a megfelelő beállításokkal rendelkező sémák regisztrálására használhatók AuthenticationBuilder.AddScheme .
  • Ritkábban, közvetlenül hívva AuthenticationBuilder.AddScheme .

Például az alábbi kód a hitelesítési szolgáltatások és kezelők regisztrációját végzi a cookie és a JWT-vivő hitelesítési sémákhoz.

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

A AddAuthentication paraméter JwtBearerDefaults.AuthenticationScheme annak a sémanak a neve, amelyet alapértelmezés szerint használni kell, ha egy adott sémát nem kérnek.

Ha több sémát használ, az engedélyezési szabályzatok (vagy engedélyezési attribútumok) meg tudják adni azt a hitelesítési sémát (vagy sémákat), amelyektől a felhasználó hitelesítése függ. A fenti példában a cookie hitelesítési séma a nevének megadásával használható (CookieAuthenticationDefaults.AuthenticationScheme alapértelmezés szerint, de híváskor AddCookiemás nevet is megadhat).

Bizonyos esetekben a rendszer automatikusan meghívja a hívásokat AddAuthentication más bővítménymetelyek segítségével. Ha például a ASP.NET Core-t Identityhasználja, AddAuthentication a rendszer belsőleg hívja meg.

A hitelesítési middleware-t a Program.cs hívásával adjuk hozzá UseAuthentication. A hívás UseAuthentication regisztrálja a korábban regisztrált hitelesítési sémákat használó köztes szoftvereket. Mielőtt bármilyen köztes szoftvert használna, amely a felhasználók hitelesítésére támaszkodik, hívja meg a UseAuthentication-t.

Hitelesítési fogalmak

A hitelesítés feladata, hogy meghatalmazást nyújtson az ClaimsPrincipal engedélyekkel kapcsolatos döntések meghozatalához. Több hitelesítési séma módszere is van annak kiválasztására, hogy melyik hitelesítési kezelő felelős a megfelelő jogcímkészlet létrehozásához:

Ha csak egyetlen hitelesítési séma van regisztrálva, az lesz az alapértelmezett séma. Ha több séma van regisztrálva, és nincs megadva az alapértelmezett séma, egy sémát kell megadni az engedélyezési attribútumban, ellenkező esetben a következő hibaüzenet jelenik meg:

InvalidOperationException: Nincs megadva authenticationScheme, és nem található DefaultAuthenticateScheme. Az alapértelmezett sémák az AddAuthentication(string defaultScheme) vagy az AddAuthentication(Action<AuthenticationOptions> configureOptions) használatával állíthatók be.>

DefaultScheme

Ha csak egyetlen hitelesítési séma van regisztrálva, az egyetlen hitelesítési séma:

Az egyetlen hitelesítési séma automatikus letiltásához használja a következő hívást: DefaultSchemeAppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme").

Hitelesítési séma

A hitelesítési séma kiválaszthatja, hogy melyik hitelesítéskezelő felelős a megfelelő jogcímkészlet létrehozásához. További információ: Engedélyezés egy adott sémával.

Egy hitelesítési séma egy olyan név, amely az alábbiakat azonosítja:

  • Egy hitelesítési kezelő.
  • A kezelő adott példányának konfigurálásának beállításai.

A sémák a társított kezelő hitelesítésére, kihívására és tiltására szolgáló mechanizmusként hasznosak. Az engedélyezési házirendek például sémanevek használatával adhatók meg, hogy melyik hitelesítési sémát (vagy sémákat) kell használni a felhasználó hitelesítéséhez. A hitelesítés konfigurálásakor gyakran meg kell adni az alapértelmezett hitelesítési sémát. Az alapértelmezett sémát akkor használja a rendszer, ha egy erőforrás nem kér egy adott sémát. A következő lehetőségek is lehetségesek:

  • Adjon meg különböző alapértelmezett sémákat a hitelesítéshez, a kihíváshoz és a tiltáshoz.
  • Több sémát egyesíthet egyetlen irányelvséma használatával.

Hitelesítési kezelő

Hitelesítési kezelő:

A hitelesítési séma konfigurációja és a bejövő kérelemkörnyezet alapján a hitelesítéskezelők:

  • Ha a hitelesítés sikeres, hozzon létre AuthenticationTicket objektumokat, amelyek a felhasználó identitását jelölik.
  • "Nincs eredmény" vagy "hiba" értéket ad vissza, ha a hitelesítés sikertelen.
  • Olyan módszerekkel rendelkezik, amelyekkel megtámadhatja és megtilthatja a műveleteket, amikor a felhasználók megpróbálnak hozzáférni az erőforrásokhoz:
    • Nem férhetnek hozzá (tiltsák meg).
    • Ha nincs hitelesítve (kihívás).

RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> az a hitelesítés osztálya, amely távoli hitelesítési lépést igényel. Amikor a távoli hitelesítési lépés befejeződik, a kezelő visszahívja a kezelő által beállított CallbackPath-t. A kezelő befejezi a hitelesítési lépést a visszahívási HandleRemoteAuthenticateAsync útvonalnak átadott információk alapján. Az OAuth 2.0 és az OIDC is ezt a mintát használja. A JWT és a cookie-k ezt nem teszik, mivel közvetlenül használhatják az "Authorization: Bearer" fejlécet és a cookie hitelesítéshez. Ebben az esetben a távolról üzemeltetett szolgáltató:

  • A hitelesítésszolgáltató.
  • Ilyen például a Facebook, a Twitter, a Google, a Microsoft és bármely más OIDC-szolgáltató, amely kezeli a felhasználók hitelesítését a kezelői mechanizmus használatával.

Hitelesít

A hitelesítési séma hitelesítési művelete felelős a felhasználó identitásának a kérelemkörnyezet alapján történő létrehozásához. AuthenticateResult Azt jelzi, hogy a hitelesítés sikeres volt-e, és ha igen, a felhasználó identitása egy hitelesítési jegyben. Lásd a(z) AuthenticateAsync. A hitelesítési példák a következők:

  • Egy cookie hitelesítési séma, amely a felhasználó identitását hozza létre a cookie-kból.
  • A JWT-bearer séma egy JWT-bearer token deszerializálásával és érvényesítésével hozza létre a felhasználó identitását.

Kihívás

Hitelesítési kihívást az engedélyezés hív meg, ha egy hitelesítés nélküli felhasználó hitelesítést igénylő végpontot kér. Hitelesítési kihívást jelent például, ha egy névtelen felhasználó korlátozott erőforrást kér, vagy egy bejelentkezési hivatkozást követ. Az engedélyezés a megadott autentikációs séma(k) használatával indít egy kihíváskérést, vagy ha nincs megadva, akkor az alapértelmezettet. Lásd a(z) ChallengeAsync. A hitelesítési kihívások például a következők:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy bejelentkezési lapra.
  • Egy JWT jogosult séma, amely visszaad egy 401-es eredményt egy www-authenticate: bearer fejléccel.

A kihívásokkal kapcsolatos műveletnek tudatnia kell a felhasználóval, hogy milyen hitelesítési mechanizmust kell használnia a kért erőforrás eléréséhez.

Tilt

A hitelesítési séma tiltó műveletét az engedélyezés hívja meg, amikor egy hitelesített felhasználó olyan erőforráshoz próbál hozzáférni, amelyhez nem fér hozzá. Lásd a(z) ForbidAsync. Authentikáció során tiltott példák közé tartoznak:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy olyan oldalra, amely azt jelzi, hogy a hozzáférés tiltott volt.
  • Egy JWT-tulajdonosi séma, amely 403-as eredményt ad vissza.
  • Egyéni hitelesítési séma, amely átirányít egy lapra, ahol a felhasználó hozzáférést kérhet az erőforráshoz.

A tiltó művelet tudathatja a felhasználóval:

  • Hitelesítve vannak.
  • Nem férhetnek hozzá a kért erőforráshoz.

A kihívások és a tiltás közötti különbségekért tekintse meg az alábbi hivatkozásokat:

Hitelesítésszolgáltatók bérlőnként

ASP.NET Core nem rendelkezik beépített megoldással a több-bérlős hitelesítéshez. Bár az ügyfelek a beépített funkciókkal írhatnak egyet, javasoljuk, hogy fontolja meg az Orchard Core, az ABP Framework vagy a Finbuckle.MultiTenant használatát a több-bérlős hitelesítéshez.

Az Orchard Core a következőket tartalmazza:

  • Nyílt forráskódú, moduláris és több-bérlős alkalmazás-keretrendszer ASP.NET Core használatával.
  • Az alkalmazás-keretrendszerre épülő tartalomkezelő rendszer (CMS).

Tekintse meg az Orchard Core-forrást , amely a bérlőnkénti hitelesítésszolgáltatókat szemlélteti.

Az ABP-keretrendszer számos architektúramintát támogat, beleértve a modularitást, a mikroszolgáltatásokat, a tartományalapú tervezést és a több-bérlős kialakítást. Lásd az ABP-keretrendszer forrását a GitHubon.

Finbuckle.MultiTenant:

  • Nyílt forráskód
  • Bérlőfeloldást biztosít
  • Könnyű
  • Adatelkülönítést biztosít
  • Alkalmazás viselkedésének egyedi konfigurálása az egyes bérlőkhöz

További erőforrások

Készítette : Mike Rousos

A hitelesítés a felhasználó identitásának meghatározására szolgáló folyamat. Az engedélyezés annak meghatározására szolgáló folyamat, hogy a felhasználó rendelkezik-e hozzáféréssel egy erőforráshoz. A ASP.NET Core-ban a hitelesítést a hitelesítési szolgáltatás kezeli, IAuthenticationServiceamelyet a közbenső szoftver hitelesítése használ. A hitelesítési szolgáltatás regisztrált hitelesítéskezelőket használ a hitelesítéssel kapcsolatos műveletek végrehajtásához. Példák a hitelesítéssel kapcsolatos műveletekre:

  • Felhasználó hitelesítése.
  • Válasz, ha egy nem hitelesített felhasználó megpróbál hozzáférni egy korlátozott erőforráshoz.

A regisztrált hitelesítési kezelők és konfigurációs beállításaik neve "sémák".

A hitelesítési sémák a hitelesítési szolgáltatások regisztrálásával vannak megadva a következő helyen Program.cs:

  • Egy sémaspecifikus bővítménymetódus meghívásával, például AddJwtBearer vagy AddCookie, egy AddAuthentication hívás után. Ezek a bővítménymetelyek a megfelelő beállításokkal rendelkező sémák regisztrálására használhatók AuthenticationBuilder.AddScheme .
  • Ritkábban, közvetlenül hívva AuthenticationBuilder.AddScheme .

Például az alábbi kód a hitelesítési szolgáltatások és kezelők regisztrációját végzi a cookie és a JWT-vivő hitelesítési sémákhoz.

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

A AddAuthentication paraméter JwtBearerDefaults.AuthenticationScheme annak a sémanak a neve, amelyet alapértelmezés szerint használni kell, ha egy adott sémát nem kérnek.

Ha több sémát használ, az engedélyezési szabályzatok (vagy engedélyezési attribútumok) meg tudják adni azt a hitelesítési sémát (vagy sémákat), amelyektől a felhasználó hitelesítése függ. A fenti példában a cookie hitelesítési séma a nevének megadásával használható (CookieAuthenticationDefaults.AuthenticationScheme alapértelmezés szerint, de híváskor AddCookiemás nevet is megadhat).

Bizonyos esetekben a rendszer automatikusan meghívja a hívásokat AddAuthentication más bővítménymetelyek segítségével. Ha például a ASP.NET Core-t Identityhasználja, AddAuthentication a rendszer belsőleg hívja meg.

A hitelesítési middleware-t a Program.cs hívásával adjuk hozzá UseAuthentication. A hívás UseAuthentication regisztrálja a korábban regisztrált hitelesítési sémákat használó köztes szoftvereket. Mielőtt bármilyen köztes szoftvert használna, amely a felhasználók hitelesítésére támaszkodik, hívja meg a UseAuthentication-t.

Hitelesítési fogalmak

A hitelesítés feladata, hogy meghatalmazást nyújtson az ClaimsPrincipal engedélyekkel kapcsolatos döntések meghozatalához. Több hitelesítési séma módszere is van annak kiválasztására, hogy melyik hitelesítési kezelő felelős a megfelelő jogcímkészlet létrehozásához:

Nincs automatikus próbajáték a sémákban. Ha az alapértelmezett séma nincs megadva, a sémát meg kell adni az engedélyezési attribútumban, ellenkező esetben a következő hibaüzenet jelenik meg:

InvalidOperationException: Nincs megadva authenticationScheme, és nem található DefaultAuthenticateScheme. Az alapértelmezett sémák az AddAuthentication(string defaultScheme) vagy az AddAuthentication(Action<AuthenticationOptions> configureOptions) használatával állíthatók be.>

Hitelesítési séma

A hitelesítési séma kiválaszthatja, hogy melyik hitelesítéskezelő felelős a megfelelő jogcímkészlet létrehozásához. További információ: Engedélyezés egy adott sémával.

Egy hitelesítési séma egy olyan név, amely az alábbiakat azonosítja:

  • Egy hitelesítési kezelő.
  • A kezelő adott példányának konfigurálásának beállításai.

A sémák a társított kezelő hitelesítésére, kihívására és tiltására szolgáló mechanizmusként hasznosak. Az engedélyezési házirendek például sémanevek használatával adhatók meg, hogy melyik hitelesítési sémát (vagy sémákat) kell használni a felhasználó hitelesítéséhez. A hitelesítés konfigurálásakor gyakran meg kell adni az alapértelmezett hitelesítési sémát. Az alapértelmezett sémát akkor használja a rendszer, ha egy erőforrás nem kér egy adott sémát. A következő lehetőségek is lehetségesek:

  • Adjon meg különböző alapértelmezett sémákat a hitelesítéshez, a kihíváshoz és a tiltáshoz.
  • Több sémát egyesíthet egyetlen irányelvséma használatával.

Hitelesítési kezelő

Hitelesítési kezelő:

A hitelesítési séma konfigurációja és a bejövő kérelemkörnyezet alapján a hitelesítéskezelők:

  • Ha a hitelesítés sikeres, hozzon létre AuthenticationTicket objektumokat, amelyek a felhasználó identitását jelölik.
  • "Nincs eredmény" vagy "hiba" értéket ad vissza, ha a hitelesítés sikertelen.
  • Olyan módszerekkel rendelkezik, amelyekkel megtámadhatja és megtilthatja a műveleteket, amikor a felhasználók megpróbálnak hozzáférni az erőforrásokhoz:
    • Nem férhetnek hozzá (tiltsák meg).
    • Ha nincs hitelesítve (kihívás).

RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> az a hitelesítés osztálya, amely távoli hitelesítési lépést igényel. Amikor a távoli hitelesítési lépés befejeződik, a kezelő visszahívja a kezelő által beállított CallbackPath-t. A kezelő befejezi a hitelesítési lépést a visszahívási HandleRemoteAuthenticateAsync útvonalnak átadott információk alapján. Az OAuth 2.0 és az OIDC is ezt a mintát használja. A JWT és a cookie-k ezt nem teszik, mivel közvetlenül használhatják az "Authorization: Bearer" fejlécet és a cookie hitelesítéshez. Ebben az esetben a távolról üzemeltetett szolgáltató:

  • A hitelesítésszolgáltató.
  • Ilyen például a Facebook, a Twitter, a Google, a Microsoft és bármely más OIDC-szolgáltató, amely kezeli a felhasználók hitelesítését a kezelői mechanizmus használatával.

Hitelesít

A hitelesítési séma hitelesítési művelete felelős a felhasználó identitásának a kérelemkörnyezet alapján történő létrehozásához. AuthenticateResult Azt jelzi, hogy a hitelesítés sikeres volt-e, és ha igen, a felhasználó identitása egy hitelesítési jegyben. Lásd a(z) AuthenticateAsync. A hitelesítési példák a következők:

  • Egy cookie hitelesítési séma, amely a felhasználó identitását hozza létre a cookie-kból.
  • A JWT-bearer séma egy JWT-bearer token deszerializálásával és érvényesítésével hozza létre a felhasználó identitását.

Kihívás

Hitelesítési kihívást az engedélyezés hív meg, ha egy hitelesítés nélküli felhasználó hitelesítést igénylő végpontot kér. Hitelesítési kihívást jelent például, ha egy névtelen felhasználó korlátozott erőforrást kér, vagy egy bejelentkezési hivatkozást követ. Az engedélyezés a megadott autentikációs séma(k) használatával indít egy kihíváskérést, vagy ha nincs megadva, akkor az alapértelmezettet. Lásd a(z) ChallengeAsync. A hitelesítési kihívások például a következők:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy bejelentkezési lapra.
  • Egy JWT jogosult séma, amely visszaad egy 401-es eredményt egy www-authenticate: bearer fejléccel.

A kihívásokkal kapcsolatos műveletnek tudatnia kell a felhasználóval, hogy milyen hitelesítési mechanizmust kell használnia a kért erőforrás eléréséhez.

Tilt

A hitelesítési séma tiltó műveletét az engedélyezés hívja meg, amikor egy hitelesített felhasználó olyan erőforráshoz próbál hozzáférni, amelyhez nem fér hozzá. Lásd a(z) ForbidAsync. Authentikáció során tiltott példák közé tartoznak:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy olyan oldalra, amely azt jelzi, hogy a hozzáférés tiltott volt.
  • Egy JWT-tulajdonosi séma, amely 403-as eredményt ad vissza.
  • Egyéni hitelesítési séma, amely átirányít egy lapra, ahol a felhasználó hozzáférést kérhet az erőforráshoz.

A tiltó művelet tudathatja a felhasználóval:

  • Hitelesítve vannak.
  • Nem férhetnek hozzá a kért erőforráshoz.

A kihívások és a tiltás közötti különbségekért tekintse meg az alábbi hivatkozásokat:

Hitelesítésszolgáltatók bérlőnként

ASP.NET Core nem rendelkezik beépített megoldással a több-bérlős hitelesítéshez. Bár az ügyfelek a beépített funkciókkal írhatnak egyet, javasoljuk, hogy fontolja meg az Orchard Core vagy az ABP-keretrendszer használatát a több-bérlős hitelesítéshez.

Az Orchard Core a következőket tartalmazza:

  • Nyílt forráskódú, moduláris és több-bérlős alkalmazás-keretrendszer ASP.NET Core használatával.
  • Az alkalmazás-keretrendszerre épülő tartalomkezelő rendszer (CMS).

Tekintse meg az Orchard Core-forrást , amely a bérlőnkénti hitelesítésszolgáltatókat szemlélteti.

Az ABP-keretrendszer számos architektúramintát támogat, beleértve a modularitást, a mikroszolgáltatásokat, a tartományalapú tervezést és a több-bérlős kialakítást. Lásd az ABP-keretrendszer forrását a GitHubon.

További erőforrások

Készítette : Mike Rousos

A hitelesítés a felhasználó identitásának meghatározására szolgáló folyamat. Az engedélyezés annak meghatározására szolgáló folyamat, hogy a felhasználó rendelkezik-e hozzáféréssel egy erőforráshoz. A ASP.NET Core-ban a hitelesítést a hitelesítési szolgáltatás kezeli, IAuthenticationServiceamelyet a közbenső szoftver hitelesítése használ. A hitelesítési szolgáltatás regisztrált hitelesítéskezelőket használ a hitelesítéssel kapcsolatos műveletek végrehajtásához. Példák a hitelesítéssel kapcsolatos műveletekre:

  • Felhasználó hitelesítése.
  • Válasz, ha egy nem hitelesített felhasználó megpróbál hozzáférni egy korlátozott erőforráshoz.

A regisztrált hitelesítési kezelők és konfigurációs beállításaik neve "sémák".

A hitelesítési sémák a hitelesítési szolgáltatások regisztrálásával vannak megadva a következő helyen Startup.ConfigureServices:

  • Egy sémaspecifikus bővítménymetódus meghívásával a hívás AddAuthentication után (például AddJwtBearer vagy AddCookie). Ezek a bővítménymetelyek a megfelelő beállításokkal rendelkező sémák regisztrálására használhatók AuthenticationBuilder.AddScheme .
  • Ritkábban, közvetlenül hívva AuthenticationBuilder.AddScheme .

Az alábbi kód például a hitelesítési szolgáltatásokat és kezelőket regisztrálja a cookie és a JWT hordozó hitelesítési sémákhoz.

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => Configuration.Bind("CookieSettings", options));

A AddAuthentication paraméter JwtBearerDefaults.AuthenticationScheme annak a sémanak a neve, amelyet alapértelmezés szerint használni kell, ha egy adott sémát nem kérnek.

Ha több sémát használ, az engedélyezési szabályzatok (vagy engedélyezési attribútumok) meg tudják adni azt a hitelesítési sémát (vagy sémákat), amelyektől a felhasználó hitelesítése függ. A fenti példában a cookie hitelesítési séma a nevének megadásával használható (CookieAuthenticationDefaults.AuthenticationScheme alapértelmezés szerint, de híváskor AddCookiemás nevet is megadhat).

Bizonyos esetekben a rendszer automatikusan meghívja a hívást AddAuthentication más bővítményi módszerek segítségével. Ha például a ASP.NET Core-t Identityhasználja, AddAuthentication a rendszer belsőleg hívja meg.

A hitelesítési köztes szoftver a UseAuthentication hívásával lesz hozzáadva Startup.Configure-hez. A hívás UseAuthentication regisztrálja a korábban regisztrált hitelesítési sémákat használó köztes szoftvereket. Hívja meg a UseAuthentication-et bármelyik köztes szoftver előtt, amely a felhasználók hitelesítésétől függ. Végpont-útválasztás használatakor a hívásnak a következőre UseAuthentication kell mennie:

  • Ezután UseRoutingaz útvonaladatok elérhetők a hitelesítési döntésekhez.
  • Korábban UseEndpoints, hogy a végpontok elérése előtt a felhasználók hitelesítve legyenek.

Hitelesítési fogalmak

A hitelesítés feladata, hogy meghatalmazást nyújtson az ClaimsPrincipal engedélyekkel kapcsolatos döntések meghozatalához. Több hitelesítési séma módszere is van annak kiválasztására, hogy melyik hitelesítési kezelő felelős a megfelelő jogcímkészlet létrehozásához:

Nincs automatikus próbajáték a sémákban. Ha az alapértelmezett séma nincs megadva, a sémát meg kell adni az engedélyezési attribútumban, ellenkező esetben a következő hibaüzenet jelenik meg:

InvalidOperationException: Nincs megadva hitelesítési séma, és nem található alapértelmezett hitelesítési séma. Az alapértelmezett sémák az AddAuthentication(string defaultScheme) vagy az AddAuthentication(Action<AuthenticationOptions configureOptions) használatával állíthatók> be.

Hitelesítési séma

A hitelesítési séma kiválaszthatja, hogy melyik hitelesítéskezelő felelős a megfelelő jogcímkészlet létrehozásához. További információ: Engedélyezés egy adott sémával.

A hitelesítési séma olyan név, amely megfelel az alábbiaknak:

  • Egy hitelesítési kezelő.
  • A kezelő adott példányának konfigurálásának beállításai.

A sémák a társított kezelő hitelesítésére, kihívására és tiltására szolgáló mechanizmusként hasznosak. Az engedélyezési házirendek például sémanevek használatával adhatók meg, hogy melyik hitelesítési sémát (vagy sémákat) kell használni a felhasználó hitelesítéséhez. A hitelesítés konfigurálásakor gyakran meg kell adni az alapértelmezett hitelesítési sémát. Az alapértelmezett sémát akkor használja a rendszer, ha egy erőforrás nem kér egy adott sémát. A következő lehetőségek is lehetségesek:

  • Adjon meg különböző alapértelmezett sémákat a hitelesítéshez, a kihíváshoz és a tiltáshoz.
  • Több sémát egyesíthet egyetlen irányelvséma használatával.

Hitelesítési kezelő

Hitelesítési kezelő:

A hitelesítési séma konfigurációja és a bejövő kérelemkörnyezet alapján a hitelesítéskezelők:

  • Ha a hitelesítés sikeres, hozzon létre AuthenticationTicket objektumokat, amelyek a felhasználó identitását jelölik.
  • "Nincs eredmény" vagy "hiba" értéket ad vissza, ha a hitelesítés sikertelen.
  • Olyan módszerekkel rendelkezik, amelyekkel megtámadhatja és megtilthatja a műveleteket, amikor a felhasználók megpróbálnak hozzáférni az erőforrásokhoz:
    • Nem férhetnek hozzá (tiltsák meg).
    • Ha nincs hitelesítve (kihívás).

RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> az a hitelesítés osztálya, amely távoli hitelesítési lépést igényel. Amikor a távoli hitelesítési lépés befejeződik, a kezelő visszahívja a CallbackPath-t, amelyet a kezelő állított be. A kezelő befejezi a hitelesítési lépést a visszahívási HandleRemoteAuthenticateAsync útvonalnak átadott információk alapján. Az OAuth 2.0 és az OIDC is ezt a mintát használja. A JWT és a cookie-k nem, mivel közvetlenül használhatják a bearer headert és a cookie a hitelesítéshez. Ebben az esetben a távolról üzemeltetett szolgáltató:

  • A hitelesítésszolgáltató.
  • Ilyen például a Facebook, a Twitter, a Google, a Microsoft és bármely más OIDC-szolgáltató, amely kezeli a felhasználók hitelesítését a kezelői mechanizmus használatával.

Hitelesít

A hitelesítési séma hitelesítési művelete felelős a felhasználó identitásának a kérelemkörnyezet alapján történő létrehozásához. AuthenticateResult Azt jelzi, hogy a hitelesítés sikeres volt-e, és ha igen, akkor a felhasználó identitása egy hitelesítési jegyben. Lásd a(z) AuthenticateAsync. A hitelesítési példák a következők:

  • Egy cookie hitelesítési séma, amely a felhasználó identitását hozza létre a cookie-kból.
  • JWT-tulajdonosi séma egy JWT-tulajdonosi jogkivonat deszerializálása és érvényesítése a felhasználó identitásának létrehozásához.

Kihívás

Hitelesítési kihívást az engedélyezés hív meg, ha egy hitelesítés nélküli felhasználó hitelesítést igénylő végpontot kér. Hitelesítési kihívást jelent például, ha egy névtelen felhasználó korlátozott erőforrást kér, vagy egy bejelentkezési hivatkozást követ. Az engedélyezés a megadott hitelesítési sémák használatával indít egy kihívást, vagy ha nincs megadva, az alapértelmezett sémát használja. Lásd a(z) ChallengeAsync. A hitelesítési kihívások például a következők:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy bejelentkezési lapra.
  • Egy JWT-hitelesítési séma, amely egy 401-es eredményt ad vissza egy www-authenticate: bearer fejléccel.

A kihívásokkal kapcsolatos műveletnek tudatnia kell a felhasználóval, hogy milyen hitelesítési mechanizmust kell használnia a kért erőforrás eléréséhez.

Megtiltás

A hitelesítési séma tiltó műveletét az engedélyezés hívja meg, amikor egy hitelesített felhasználó olyan erőforráshoz próbál hozzáférni, amelyhez nem fér hozzá. Lásd a(z) ForbidAsync. A hitelesítés által tiltott példák a következők:

  • Egy cookie hitelesítési séma, amely átirányítja a felhasználót egy olyan oldalra, amely azt jelzi, hogy a hozzáférés tiltott volt.
  • Egy JWT-hordozó séma, amely egy 403-as hibakódot ad vissza.
  • Egyéni hitelesítési séma, amely átirányít egy lapra, ahol a felhasználó hozzáférést kérhet az erőforráshoz.

A tiltó művelet tudathatja a felhasználóval:

  • Hitelesítve vannak.
  • Nem férhetnek hozzá a kért erőforráshoz.

A kihívások és a tiltás közötti különbségekért tekintse meg az alábbi hivatkozásokat:

Hitelesítésszolgáltatók bérlőnként

ASP.NET Core-keretrendszer nem rendelkezik beépített megoldással a több-bérlős hitelesítéshez. Bár az ügyfelek több-bérlős hitelesítéssel is írhatnak alkalmazást, javasoljuk, hogy használja az alábbi asp.net alapvető alkalmazás-keretrendszerek egyikét, amelyek támogatják a több-bérlős hitelesítést:

Orchard Core

Orchard Core. Tekintse meg az Orchard Core-forrást , amely a bérlőnkénti hitelesítésszolgáltatókat szemlélteti.

ABP-keretrendszer

Az ABP-keretrendszer számos architektúramintát támogat, beleértve a modularitást, a mikroszolgáltatásokat, a tartományalapú tervezést és a több-bérlős kialakítást. Lásd az ABP-keretrendszer forrását a GitHubon.

További erőforrások