Советказинов Әлімжан
Web API-де Аутентификация және авторизация ASP.NET MVC тен қарағанда кейбір ерекшеліктерге ие. Мұнда іс жүзінде бізге аутентификацияның үш түрі қолжетімді: стандартты куки арқылы, сыртқы қызметтер арқылы және токен арқылы аутентификация.
Сонымен қатар Web API және ASP.NET MVC-де бірқатар жалпы сәттер бар.Сонымен, қол жеткізуді шектеу үшін Сіз SystemWebHttp аттар кеңістігінде орналасқан авторизация атрибуты - AuthorizeAttribute-ді қолдана аласыз. Ол бір уақытта пайдаланушының жүйеде аутентификацияланғанын тексереді, сонымен қатар пайдаланушының осы ресурсқа кіру құқығын тексереді (егер бұл ресурс тек белгілі бір рөлдерге немесе пайдаланушыларға қол жеткізуді білдірсе). Егер пайдаланушы расталмаған болса, жүйе клиентке жауап ретінде 401 мәртебесін жібереді (Unauthorized).
- Бұл үлгі пайдаланушыны басқару үшін әдепкі ApplicationUser және Entity Framework Core қосылымдарын қамтамасыз етеді. Қосылым жолы осы деректерді сақтағыңыз келетін дерекқорды көрсететін модификатор болуы мүмкін appsettingsjson JWT токендері шағымдарды инкапсуляциялай алатындықтан, стандартты пайдаланушы аты немесе электрондық пошта мекенжайы мәндерінен басқа пайдаланушылар үшін кейбір шағымдарды қосу қызықты. Көрсету мақсатында екі түрлі талаптар түрін қосамыз.
Web API-де пайдаланушыны серверде аутентификациялау кезінде IPrincipal нысаны(объект) жасалады:
public interface IPrincipal
{
IIdentity Identity { get; }
bool IsInRole(string role);
}
Тікелей таңбалауыштарды пайдалану файлдың келесі бөлігін қамтиды:
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
// устанавливает URL, по которому клиент будет получать токен
TokenEndpointPath = new PathString("/Token"),
// указывает на вышеопределенный провайдер авторизации
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
// включает в приложении функциональность токенов
app.UseOAuthBearerTokens(OAuthOptions);
Достарыңызбен бөлісу: |