Varnost je glavna skrb spletnih aplikacij za podjetja. Ko morate podatke prenositi prek žice, se morate zavedati različnih orodij, s katerimi lahko te podatke zaščitite.
ASP.Net Web API je lahek okvir, ki se uporablja za izdelavo storitev RESTful brez državljanstva, ki se izvajajo na HTTP. Eden od načinov za zaščito storitev spletnega API-ja je avtorizacijski filtri.
V idealnem primeru bi morali preverjanje pristnosti in avtorizacijo izvesti zgodaj v cevovodu Web API. To pomaga odstraniti nepotrebne režijske stroške obdelave iz cikla zahteve. Ne glede na to, ali za preverjanje pristnosti uporabljate module HTTP ali upravljalnike sporočil HTTP, lahko trenutnega glavnega uporabnika (tj. Uporabnika) prikličete iz ApiController.User
lastnine.
Upoštevajte tudi, da se filtri za avtorizacijo spletnega API-ja izvedejo pred metodami delovanja krmilnika. Torej, če dohodna zahteva ni odobrena, bo storitev vrnila napako, zahteva bo prezrta in način dejanja storitve ne bo izveden.
Uporaba avtorizacijskega filtra AuthorizeAttribute
Vgrajeni filter za avtorizacijo AuthorizeAttribute
se lahko uporablja za avtorizacijo dohodnih zahtev. Lahko uporabišAuthorizeAttribute
da preverite, ali je uporabnik overjen. Če uporabnik ni overjen, bo vrnil kodo stanja HTTP 401. To pooblastilo lahko v spletnem API-ju uporabite globalno ali na ravni krmilnika.
Upoštevajte, da lahko za odobritev dostopa do načinov krmilnika uporabite tudi upravljalnik sporočil po meri, saj se filtri sporočil izvajajo veliko prej v življenjskem ciklusu spletnega API-ja.
Če želite omejiti dostop do vseh krmilnikov, lahko dodate AuthorizeAttribute
globalno do Filtri
zbirka HttpConfiguration
primer. Naslednji delček kode prikazuje, kako lahko dodate AuthorizeAttribute
do Filtri
zbirka HttpConfiguration
predmet.
javni statični void Register (HttpConfiguration config)
{
// Konfiguracija in storitve spletnega API-ja
// Poti spletnega API-ja
config.MapHttpAttributeRoutes ();
config.Routes.MapHttpRoute (
ime: "DefaultApi",
routeTemplate: “api / {krmilnik} / {id}”,
privzeto: novo {id = RouteParameter.O optional}
);
config.Filters.Add (novo AuthorizeAttribute ());
}
Uporaba atributa Authorize
Na ravni krmilnika lahko dostop omejite z uporabo Dovoli
atribut, kot je prikazano v naslednjem delčku kode.
[Dovoli]
javni razred EmployeesController: ApiController
{
// Tukaj napišite metode, ki ustrezajo glagolom Http
}
Uporabite lahko tudi Dovoli
atribut na ravni akcije, da omeji dostop do določene metode dejanja. Naslednji delček kode prikazuje, kako je to mogoče izvesti.
javni razred EmployeesController: ApiController
{
public HttpResponseMessage Get () {// Nekaj kode}
// Zahtevaj dovoljenje za določeno dejanje.
[Dovoli]
public HttpResponseMessage Post (Employee emp) {// Nekaj kode}
}
V delčku kode, ki je bil prikazan prej, dostop do datoteke Objavi ()
metoda je omejena, medtem ko je dostop do datoteke Pridobite ()
metoda ni omejena. Lahko tudi omejite krmilnik in nato omogočite anonimen dostop do enega ali več načinov dejanja. Delček kode, ki sledi, to ponazarja.
javni razred EmployeesController: ApiController
{
public HttpResponseMessage Get () {// Nekaj kode}
[AllowAnonymous]
public HttpResponseMessage Post (Employee emp) {// Nekaj kode}
}
Dovoli dejanja po vlogah in uporabnikih
Prav tako je mogoče omejiti dostop do akcijskih metod glede na vloge in uporabnike. Naslednji delček kode prikazuje, kako je to mogoče doseči.
[Pooblasti (Uporabniki = "Joydip, Jini")] // Omeji dostop uporabnika
javni razred EmployeesController: ApiController
{
// Tukaj napišite metode, ki ustrezajo glagolom Http
}
V zgornjem primeru nadzornik Employees omeji dostop samo na uporabnika Joydip in Jini. Spodnja koda prikazuje, kako lahko omejite dostop po vlogah.
[Pooblasti (Vloge = "Skrbniki")] // Omeji glede na vloge
javni razred EmployeesController: ApiController
{
// Tukaj napišite metode, ki ustrezajo glagolom Http
}
Vedno lahko dostopate do ApiController.User
lastnost znotraj metode krmilnika za pridobivanje trenutnega načela in odobritev pooblastila na podlagi vloge uporabnika. To je prikazano v spodnjem seznamu kod.
public HttpResponseMessage Get ()
{
if (User.IsInRole (“Administrators”))
{
// Tukaj napišite kodo
}
}
Uporaba filtrov za avtorizacijo po meri v spletnem API-ju ASP.Net
Avtorizacijski filter je razred, ki razširja AuthorizationFilterAttribute
razred in preglasi OnAuthorization ()
metoda. To je metoda, pri kateri lahko napišete logiko avtorizacije. Če pooblastilo ne uspe, lahko vrnete primerek datoteke UnauthorizedException
razred ali celo po meri HttpResponseMessage
.
Naslednji seznam kod prikazuje, kako lahko implementirate razred po meri za odobritev zahtev za vaš spletni API. Upoštevajte, da morate razširiti AuthorizeAttribute
razred za izvedbo lastnega razreda filtra za avtorizacijo.
javni razred CustomAuthorizeAttribute: AuthorizeAttribute
{
javno razveljavi void OnAuthorization (System.Web.Http.Controllers.HttpActionContext actionContext)
{
if (AuthorizeRequest (actionContext))
{
vrnitev;
}
HandleUnauthorizedRequest (actionContext);
}
zaščitena razveljavitev void HandleUnauthorizedRequest (System.Web.Http.Controllers.HttpActionContext actionContext)
{
// Koda za obdelavo nepooblaščene zahteve
}
private bool AuthorizeRequest (System.Web.Http.Controllers.HttpActionContext actionContext)
{
// Tukaj napišite kodo za izvedbo pooblastila
vrni res;
}
}