Net platformasi bilan tanishish clr, cts va cls


Autentifikatsiya va avtorizatsiya Web API


Download 428.24 Kb.
bet18/18
Sana07.05.2023
Hajmi428.24 Kb.
#1437478
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
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:
1   ...   10   11   12   13   14   15   16   17   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling