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.
A ASP.NET tagsági rendszert 2005-ben vezették be a ASP.NET 2.0-val, és azóta számos változás történt abban, hogy a webalkalmazások általában hogyan kezelik a hitelesítést és az engedélyezést. ASP.NET Identitás egy új megközelítést kínál arra, hogyan kellene kinéznie a tagsági rendszernek a modern webes, telefonos vagy táblagépes alkalmazások építése során.
Javasoljuk, hogy a legbiztonságosabb hitelesítési lehetőséget használja. Az Azure-ban üzembe helyezett .NET-alkalmazásokért lásd:
- Azure Key Vault-kódtárak .NET-
- .NET Aspire Azure Key Vault integráció
Az Azure Key Vault és .NET Aspire biztosítják a titkos kódok tárolásának és lekérésének legbiztonságosabb módját. Az Azure Key Vault egy felhőalapú szolgáltatás, amely védi a titkosítási kulcsokat és titkos kulcsokat, például a tanúsítványokat, a kapcsolati sztringeket és a jelszavakat. A .NET Aspire-ről a Az üzemeltetés és az ügyfélintegrációk közötti biztonságos kommunikációcímű témakörben olvashat.
Kerülje az erőforrás-tulajdonos jelszó hitelesítő adatainak megadását, mert:
- Elérhetővé teszi a felhasználó jelszavát az ügyfél számára.
- Jelentős biztonsági kockázat.
- Csak akkor használható, ha más hitelesítési folyamatok nem lehetségesek.
Amikor az alkalmazást egy tesztkiszolgálón helyezik üzembe, egy környezeti változóval a kapcsolati sztringet egy tesztadatbázis-kiszolgálóra állíthatja be. A környezeti változók általában egyszerű, titkosítatlan szövegben vannak tárolva. Ha a gép vagy a folyamat sérült, a környezeti változókat nem megbízható felek érhetik el. Nem javasoljuk, hogy környezeti változók segítségével tároljon éles kapcsolati sztringet, mivel nem ez a legbiztonságosabb megközelítés.
Konfigurációs adatokra vonatkozó irányelvek:
- Soha ne tároljon jelszavakat vagy más bizalmas adatokat konfigurációszolgáltatói kódban vagy egyszerű szöveges konfigurációs fájlokban.
- Ne használjon éles titkos kódokat fejlesztési vagy tesztelési környezetekben.
- Adja meg a projekten kívüli titkokat, hogy véletlenül ne kerüljenek véglegesítésre egy forráskódtárba.
ASP.NET tagság: Háttér
ASP.NET tagság
ASP.NET tagsági szolgáltatás a 2005-ben gyakori webhelytagsági követelmények megoldására tervezték, amelyek Űrlaphitelesítést és egy SQL Server-adatbázist foglaltak magukban, a felhasználónevek, jelszavak és profiladatok kezelésére. Ma sokkal szélesebb körű adattárolási lehetőségek állnak rendelkezésre a webalkalmazások számára, és a legtöbb fejlesztő engedélyezni szeretné, hogy webhelyeik a közösségi identitásszolgáltatókat használják a hitelesítéshez és az engedélyezéshez. A ASP.NET tagság kialakításának korlátai megnehezítik ezt az átmenetet:
- Az adatbázissémát sql serverhez tervezték, és nem módosíthatja. Hozzáadhat profiladatokat, de a további adatok egy másik táblába vannak csomagolva, ami megnehezíti a hozzáférését bármilyen módon, kivéve a Profilszolgáltató API-val.
- A szolgáltatói rendszer lehetővé teszi a háttéradattár módosítását, de a rendszer a relációs adatbázisnak megfelelő feltételezések köré van kialakítva. Megírhat egy szolgáltatót, hogy a tagsági adatokat egy nem relációs tárolási mechanizmusban, például az Azure Storage-táblákban tárolja, de a relációs tervezést sok kód és sok
System.NotImplementedExceptionkivétel írásával kell megkerülnie a NoSQL-adatbázisokra nem alkalmazható metódusok esetében. - Mivel a bejelentkezési/kijelentkezési funkció űrlaphitelesítésen alapul, a tagsági rendszer nem használhatja OWIN. Az OWIN köztesszoftver-összetevőket tartalmaz a hitelesítéshez, beleértve a külső identitásszolgáltatókat (például Microsoft-fiókokat, Facebookot, Google-t, Twittert) használó bejelentkezések támogatását, valamint a helyszíni Active Directoryból vagy az Azure Active Directoryból származó szervezeti fiókokat használó bejelentkezéseket. Az OWIN az OAuth 2.0, a JWT és a CORS támogatását is tartalmazza.
ASP.NET egyszerű tagság
Az ASP.NET egyszerű tagsági rendszert az ASP.NET weblapok tagsági rendszereként fejlesztették ki. A WebMatrix és a Visual Studio 2010 SP1 kiadásban jelent meg. Az egyszerű tagság célja az volt, hogy megkönnyítse a tagsági funkciók hozzáadását egy weblapalkalmazáshoz.
Az egyszerű tagság megkönnyítette a felhasználói profiladatok testreszabását, de továbbra is osztja a ASP.NET tagsággal kapcsolatos egyéb problémákat, és bizonyos korlátozásokkal rendelkezik:
- Nehéz volt a tagsági rendszer adatait nem relációs tárolóban tárolni.
- Nem használható az OWIN-nal.
- Nem működik jól a meglévő ASP.NET tagságszolgáltatókkal, és nem bővíthető.
ASP.NET univerzális szolgáltatók
ASP.NET univerzális szolgáltatókat úgy fejlesztették ki, hogy lehetővé tegyék a tagsági adatok megőrzését a Microsoft Azure SQL Database-ben, és az SQL Server Compacttal is együttműködnek. Az univerzális szolgáltatók az Entity Framework Code First megközelítésre épültek, ami azt jelenti, hogy az univerzális szolgáltatók az EF által támogatott bármely adattárolóban használhatók az adatok megőrzésére. Az egyetemes szolgáltatóknál az adatbázis sémáját is jelentősen megtisztították.
Az univerzális szolgáltatók a ASP.NET tagsági infrastruktúrára épülnek, így továbbra is ugyanazokat a korlátozásokat hordozzák magukban, mint az SqlMembership-szolgáltató. Ez azt jelzi, hogy relációs adatbázisokhoz lettek tervezve, és nehéz testre szabni a profilokat és a felhasználói adatokat. Ezek a szolgáltatók továbbra is űrlapalapú hitelesítést használnak a bejelentkezéshez és a kijelentkezéshez.
ASP.NET Identity
Ahogy a ASP.NET tagsági története az évek során tovább fejlődött, a ASP.NET csapat sokat tanult az ügyfelek visszajelzéseiből.
Az a feltételezés, hogy a felhasználók a saját alkalmazásban regisztrált felhasználónév és jelszó megadásával fognak bejelentkezni, már nem érvényes. Az internet egyre inkább közösségivé vált. A felhasználók valós időben kommunikálnak egymással olyan közösségi csatornákon keresztül, mint a Facebook, a Twitter és más közösségi webhelyek. A fejlesztők azt szeretnék, hogy a felhasználók be tudjanak jelentkezni a közösségi identitásukkal, hogy gazdag élményt nyújthassanak a webhelyeiken. A modern tagsági rendszernek engedélyeznie kell az átirányításon alapuló bejelentkezéseket olyan hitelesítésszolgáltatóknak, mint a Facebook, a Twitter és mások.
Ahogy a webfejlesztés fejlődik, úgy a webfejlesztés mintái is. Az alkalmazáskódok egységtesztelése alapvető problémát váltott ki az alkalmazásfejlesztők számára. 2008-ban ASP.NET hozzáadott egy új keretrendszert a Model-View-Controller (MVC) mintán alapuló, részben a fejlesztők számára tesztelhető ASP.NET alkalmazások létrehozásához. Azok a fejlesztők, akik egyesíteni akarták az alkalmazáslogika tesztelését, azt a tagsági rendszerrel is meg akarták tenni.
A webalkalmazás-fejlesztés ezen változásait figyelembe véve a ASP.NET Identity a következő célokkal lett kifejlesztve:
Egyetlen ASP.NET identitásrendszer
- ASP.NET Az identitás az összes ASP.NET keretrendszerhez használható, például ASP.NET MVC, Webes űrlapok, Weblapok, Webes API és SignalR.
- ASP.NET Identitás használható webes, telefonos, áruházi vagy hibrid alkalmazások készítésekor.
A felhasználói profiladatok egyszerű csatlakoztatása
- Ön szabályozhatja a felhasználói és profiladatok sémáját. Például egyszerűen engedélyezheti a rendszer számára, hogy tárolja a felhasználók által megadott születési dátumokat, amikor regisztrálnak egy fiókot az alkalmazásban.
Perzisztencia szabályozás
- Alapértelmezés szerint a ASP.NET identitásrendszer az összes felhasználói adatot egy adatbázisban tárolja. ASP.NET Identity az Entity Framework Code First használatával implementálja az összes adatmegőrzési mechanizmusát.
- Mivel ön szabályozza az adatbázis sémáját, egyszerűen elvégezhetők olyan gyakori feladatok, mint a táblanevek módosítása vagy az elsődleges kulcsok adattípusának módosítása.
- Egyszerűen csatlakoztathat különböző tárolási mechanizmusokat, például a SharePointot, az Azure Storage Table Service-t, a NoSQL-adatbázisokat stb., anélkül, hogy
System.NotImplementedExceptionskivételeket kellene kivennie.
egység tesztelhetősége
- ASP.NET Identity egységtesztelhetőbbé teszi a webalkalmazást. Az alkalmazás ASP.NET Identity-et használó részeire vonatkozó egységteszteket írhat.
szerepkör-szolgáltató
- Van egy szerepkör-szolgáltató, amellyel szerepkörök szerint korlátozhatja az alkalmazás egyes részeihez való hozzáférést. Egyszerűen létrehozhat olyan szerepköröket, mint a "Rendszergazda", és hozzáadhat felhasználókat a szerepkörökhöz.
jogcímalapú
- ASP.NET Az identitás támogatja a jogcímalapú hitelesítést, ahol a felhasználó identitása jogcímek halmazaként jelenik meg. A jogcímek lehetővé teszik, hogy a fejlesztők sokkal kifejezőbbek legyenek a felhasználó identitásának leírásában, mint a szerepkörök. Míg a szerepkör-tagság csak egy logikai érték (tag vagy nem tag), addig az állítások részletes információkat tartalmazhatnak a felhasználó identitásáról és tagságáról.
közösségi bejelentkezési szolgáltatók
- Egyszerűen hozzáadhat közösségi bejelentkezéseket, például Microsoft-fiókot, Facebookot, Twittert, Google-t és másokat az alkalmazásához, és tárolhatja a felhasználóspecifikus adatokat az alkalmazásban.
OWIN-integráció
- ASP.NET hitelesítés mostantól OWIN köztes szoftveren alapul, amely bármely OWIN-alapú gazdagépen használható. ASP.NET Identitásnak nincs semmilyen függősége a System.Web-re. Ez egy teljes mértékben megfelelő OWIN-keretrendszer, és bármely OWIN által üzemeltetett alkalmazásban használható.
- ASP.NET Identitás OWIN-hitelesítést használ a webhely felhasználóinak bejelentkezéséhez/kijelentkezéshez. Ez azt jelenti, hogy ahelyett, hogy FormsAuthentication használatával hozna létre cookie-t, az alkalmazás OWIN CookieAuthentication használatával teszi ezt meg.
NuGet-csomag
- ASP.NET Identity a Visual Studio 2017-et tartalmazó ASP.NET MVC, Web Forms és Webes API-sablonokba telepített NuGet-csomagként van terjesztve. Ezt a NuGet-csomagot a NuGet-katalógusból töltheti le.
- A ASP.NET Identity NuGet-csomagként való kiadása megkönnyíti a ASP.NET csapat számára az új funkciók és hibajavítások iterálását, és ezeket a fejlesztőknek agilis módon kézbesíti.
Az ASP.NET Identity használatának első lépései
ASP.NET Identity ASP.NET MVC, Web Forms, Web API és SPA Visual Studio 2017 projektsablonjaiban használható. Ebben az útmutatóban bemutatjuk, hogyan használják a projektsablonok a ASP.NET Identity szolgáltatást a felhasználók regisztrálásához, bejelentkezéséhez és kijelentkezéséhez.
ASP.NET Identitás implementálása az alábbi eljárással történik. A cikk célja, hogy magas szintű áttekintést nyújtson ASP.NET Identitásról; lépésről lépésre követheti, vagy egyszerűen elolvashatja a részleteket. Az alkalmazások ASP.NET Identity használatával történő létrehozásával kapcsolatos részletesebb útmutatásért, beleértve az új API használatát a felhasználók, szerepkörök és profiladatok hozzáadásához, tekintse meg a cikk végén található Következő lépések szakaszt.
Hozzon létre egy ASP.NET MVC-alkalmazást egyéni fiókokkal. Az ASP.NET Identity használható ASP.NET MVC, Web Forms, Web API, SignalR stb. alkalmazásokban. Ebben a cikkben egy ASP.NET MVC-alkalmazással kezdjük.
A létrehozott projekt az alábbi három csomagot tartalmazza az ASP.NET Identityhez.
Microsoft.AspNet.Identity.EntityFramework
Ez a csomag rendelkezik a ASP.NET Identity Entity Framework-implementációval, amely megőrzi a ASP.NET identitásadatokat és sémákat az SQL Serveren.Microsoft.AspNet.Identity.Core
Ez a csomag rendelkezik az ASP.NET Identity alapvető felületével. Ez a csomag olyan implementáció írására használható ASP.NET Identity számára, amely különböző adatmegőrzési tárolókat céloz meg, például az Azure Table Storage-t, a NoSQL-adatbázisokat stb.Microsoft.AspNet.Identity.OWIN
Ez a csomag olyan funkciókat tartalmaz, amelyek az OWIN-hitelesítés ASP.NET Identitással való csatlakoztatására szolgálnak ASP.NET alkalmazásokban. Ez akkor használatos, ha bejelentkezési funkciókat ad hozzá az alkalmazáshoz, és meghívja az OWIN Cookie Authentication köztes szoftverét egy cookie létrehozásához.
Felhasználó létrehozása.
Indítsa el az alkalmazást, majd kattintson a Regisztrálás hivatkozásra a felhasználó létrehozásához. Az alábbi képen a felhasználónév és a jelszó gyűjtését végző Regisztrációs oldal látható.
Amikor a felhasználó kiválasztja a Regisztrálás gombot, a fiókvezérlő
Registerművelete a felhasználót a ASP.NET Identity API meghívásával hozza létre az alábbiak szerint:[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser() { UserName = model.UserName }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInAsync(user, isPersistent: false); return RedirectToAction("Index", "Home"); } else { AddErrors(result); } } // If we got this far, something failed, redisplay form return View(model); }Bejelentkezés.
Ha a felhasználó sikeresen létrejött, aSignInAsyncmetódussal jelentkezik be.[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return RedirectToAction("Index", "Home"); } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }A
SignInManager.SignInAsyncmetódus létrehoz egy ClaimsIdentity. Mivel ASP.NET Identitás és OWIN Cookie-hitelesítés jogcímalapú rendszer, a keretrendszer megköveteli, hogy az alkalmazás létrehozzon egy Jogcímekdentitást a felhasználó számára. A ClaimsIdentity információval rendelkezik a felhasználó összes jogcíméről, például arról, hogy a felhasználó milyen szerepkörökhöz tartozik.Jelentkezz ki.
Válassza a Kijelentkezés hivatkozást a fiókvezérlőBen a LogOff művelet meghívásához.// POST: /Account/LogOff [HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOff() { AuthenticationManager.SignOut(); return RedirectToAction("Index", "Home"); }A fenti kiemelt kód az OWIN
AuthenticationManager.SignOutmetódust mutatja. Ez hasonló a FormsAuthentication.SignOut metódushoz, amelyet a webes űrlapok FormsAuthentication modulja használ.
Az ASP.NET Identity összetevői
Az alábbi ábrán az ASP.NET Identity rendszer összetevői láthatók (válasszon a vagy a elemre, vagy kattintson az ábrára a nagyításhoz). A zöld színnel ellátott csomagok alkotják a ASP.NET Identitásrendszert. Az összes többi csomag függőség, amelyek szükségesek a ASP.NET Identitásrendszer ASP.NET alkalmazásokban való használatához.
Az alábbiakban a korábban nem említett NuGet-csomagok rövid leírása látható:
-
Microsoft.Owin.Security.Cookies
Köztes szoftver, amely lehetővé teszi az alkalmazás számára a cookie-alapú hitelesítés használatát, hasonlóan az ASP.NET űrlaphitelesítéséhez. -
EntityFramework
Az Entity Framework a Microsoft ajánlott adathozzáférési technológiája a relációs adatbázisokhoz.
Migrálás tagságból ASP.NET identitásba
Reméljük, hogy hamarosan útmutatást nyújtunk az ASP.NET tagságot vagy egyszerű tagságot használó meglévő alkalmazások áttelepítéséhez az új ASP.NET Identitásrendszerbe.
Következő lépések
-
ASP.NET MVC 5 alkalmazás létrehozása Facebook és Google OAuth2, valamint OpenID bejelentkezési rendszerrel
Az oktatóanyag a ASP.NET Identity API használatával adja hozzá a profiladatokat a felhasználói adatbázishoz, és hogyan hitelesíthető a Google és a Facebook használatával. -
ASP.NET MVC-alkalmazás létrehozása hitelesítéssel és SQL DB-vel, és üzembe helyezés az Azure App Service
Ez az oktatóanyag bemutatja, hogyan adhat hozzá felhasználókat és szerepköröket az Identity API-val. - https://github.com/rustd/AspnetIdentitySample
Mintaalkalmazás, amely bemutatja, hogyan adhat hozzá alapszintű szerepköröket és felhasználói támogatást, valamint hogyan hajthat végre szerepköröket és felhasználókezelést.