Net platformasi bilan tanishish clr, cts va cls
Autentifikatsiya va avtorizatsiya Web API
Download 428.24 Kb.
|
C# методичка
Autentifikatsiya va avtorizatsiya Web API
Autentifikatsiya va avtorizatsiya Web API dan farqli o'laroq, ba'zi xususiyatlarga ega ASP.NET MVC. Bu erda biz uchun autentifikatsiyaning uch turi mavjud: Cookie-fayllar orqali standart, tashqi xizmatlar orqali va token yordamida autentifikatsiya. Shu bilan birga Web API va ASP.NET MVC ular bir qator umumiy fikrlarga ega. Shunday qilib, kirishni cheklash uchun siz avtorizatsiya atributining o'rnatilgan dasturidan foydalanishingiz mumkin - AuthorizeAttribute, bu nom maydonida joylashgan System.Web.Http. U bir vaqtning o'zida foydalanuvchi tizimda autentifikatsiya qilinganligini tekshiradi, shuningdek Foydalanuvchining ushbu manbaga kirish huquqini tekshiradi (agar ushbu resurs faqat ma'lum rollarga yoki foydalanuvchilarga kirishni nazarda tutsa). Agar foydalanuvchi tasdiqlanmagan bo'lsa, tizim mijozga javoban 401 holat kodini yuboradi (Unauthorized). Ichida Web API foydalanuvchi autentifikatsiya qilinganida, serverda ob'ekt yaratiladi IPrincipal: public interface IPrincipal{ IIdentity Identity { get; } bool IsInRole(string role); } Mulk Identity mijoz haqidagi ma'lumotlarni saqlaydi: public interface IIdentity {// Autentifikatsiya turi string AuthenticationType { get; } // foydalanuvchi atuntified bool IsAuthenticated { get; } // Joriy foydalanuvchi nomi string Name { get; }} Berilgan ob'ekt IPrincipal keyin server tomonidan xususiyatni o'rnatish orqali so'rovni qayta ishlashning joriy oqimiga biriktiriladi Thread.CurrentPrincipal. Ob'ektda foydalanuvchini muvaffaqiyatli autentifikatsiya qilish bilan IPrincipal mulk o'rnatildi Identity.IsAuthenticated teng true. Tokenga asoslangan avtorizatsiya Ushbu qo'llanma eskirgan. Tegishli qo'llanma: qo'llanma ASP.NET Core Tokenga asoslangan avtorizatsiya bir nechta tarkibiy qismlardan iborat: Veb-xizmatga kiradigan mijoz. Veb-brauzer, mobil ilova, ish stoli ilovasi bo'lishi mumkin Mijoz resursiga kiradigan veb-xizmat Kirish belgisi (access token), uning mavjudligi veb-xizmat resurslariga kirish imkonini beradi Bearer- token-kirish tokenining maxsus turi Mijozga kirish tokenlarini beradigan avtorizatsiya server Foydalanuvchi avtorizatsiya ma'lumotlarini (Login, parol) kiritadi va yuborish tugmachasini bosadi Mijoz (veb-brauzer) ma'lumotlarni avtorizatsiya serveriga yuboradi Avtorizatsiya serveri foydalanuvchini tasdiqlaydi va kirish tokenini qaytaradi Veb-xizmat resursiga kirish uchun mijoz so'rovga ilgari olingan kirish tokenini qo'shadi Yuqorida avtorizatsiya serveri va veb-xizmat mavjud bo'lsa - da, lekin aslida ular ilova ichida bo'lgani kabi birlashtirilishi mumkin Web API: Ushbu loyihaning asosiy nuqtalari qanday? AccountController: hisoblarni boshqarish uchun bir qator usul va funktsiyalarni o'z ichiga olgan tekshirgich (ro'yxatdan o'tish, saytga kirish va HK). IdentityModels.cs: fayl foydalanuvchi modelining ta'rifini o'z ichiga oladi ApplicationUser va ma'lumotlar konteksti IdentityConfig.cs: sinf ta'rifini o'z ichiga oladi ApplicationUserManager, bu foydalanuvchilarni boshqarish uchun ishlatiladi ApplicationOAuthProvider: komponentlar bilan aloqani ta'minlaydigan avtorizatsiya provayderi OWIN. Unda ikkita usul mavjud, ulardan biri - GrantResourceOwnerCredentials() faqat token yaratish uchun ishlatiladi Startup.Auth.cs: infratuzilma sozlamalarini o'z ichiga oladi OWIN To'g'ridan-to'g'ri tokenlardan foydalanish faylning quyidagi qismini o'z ichiga oladi: PublicClientId = "self"; OAuthOptions = new OAuthAuthorizationServerOptions {
// o'rnatish URL, bu orqali mijoz Tokenni oladi TokenEndpointPath = new PathString("/Token"), // yuqorida belgilangan avtorizatsiya provayderiga ishora qiladi Provider = new ApplicationOAuthProvider(PublicClientId), AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }; // o'z ichiga oladi ichida ilova funktsionallik belgilar app.UseOAuthBearerTokens(OAuthOptions); Parametr TokenEndpointPath bildiradi yoqilgan yo'nalish uchun qabul qilish token Parametr Provider avtorizatsiya provayderiga ishora qiladi Parametr AuthorizeEndpointPath avtorizatsiya qilish uchun foydalanuvchi yo'naltiriladigan marshrutni bildiradi. Slash bilan boshlash kerak. WebApiConfig.cs. Usulda Register autentifikatsiya sozlamalari mavjud Web API, shuning uchun u faqat token autentifikatsiyasidan foydalanadi: config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); Hostauthenticationfilter klassi token autentifikatsiyasini ulaydi va SuppressDefaultHostAuthentication () usuli Web API-ga so'rovni qayta ishlash Web API quvur liniyasiga yetguncha sodir bo'ladigan har qanday autentifikatsiyani e'tiborsiz qoldirishni buyuradi. Bu sizga Kuk-ga asoslangan atuentatsiyani o'chirishga imkon beradi va shu bilan dasturni himoya qiladi CSRF- hujumlar. Endi biz ikkita fikrni tahlil qilamiz: Tokenni olish va tasdiqlash. Agar Tokenni olish kerak bo'lsa: Mijoz resursga murojaat qiladi /Token Tokenni olish uchun Agar kelgan so'rovda sarlavha bo'lsa "grant_type"va bu muhim "password", keyin tizim usulni chaqiradi GrantResourceOwnerCredentials() avtorizatsiya provayderi bilan ApplicationOAuthProvider Avtorizatsiya provayderi sinfga murojaat qiladi ApplicationUserManager olingan ma'lumotlarni tasdiqlash uchun (Login va parol) va ulardan ob'ekt yaratiladi claims identity Agar tasdiqlash muvaffaqiyatli bo'lsa, avtorizatsiya provayderi token yaratish uchun ishlatiladigan autentifikatsiya belgisini yaratadi Agar mijoz himoyalangan atributga murojaat qilsa Authorize mavjud token bilan resurs: Filtr HostAuthentication komponentlarga murojaat qiladi OAuth Tokenni tasdiqlash uchun Komponentlar OAuth ob'ektni token orqali tiklashga harakat qiling claims identity Keyin avtorizatsiya filtri tiklangan ob'ekt tomonidan taqdim etilgan foydalanuvchi kirish huquqiga ega yoki yo'qligini tekshiradi claims identity Agar hamma narsa muvaffaqiyatli bo'lsa, foydalanuvchi manbaga kirish huquqiga ega bo'ladi, aks holda unga 401 holat kodi yuboriladi (Unauthorized). Download 428.24 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling