Ohjelmointi

Kuinka suojata ASP.Net-Web-sovellusliittymät valtuutussuodattimilla

Turvallisuus on suuri huolenaihe verkkopohjaisissa yrityssovelluksissa. Kun sinun on lähetettävä tietoja langan kautta, sinun tulee olla tietoinen erilaisista työkaluista, joita voit käyttää tietojen suojaamiseen.

ASP.Net Web API on kevyt kehys, jota käytetään HTTP: llä toimivien valtiottomien RESTful-palvelujen rakentamiseen. Yksi tapa suojata Web-sovellusliittymäpalveluja on valtuutussuodattimet.

Ihannetapauksessa sinun on suoritettava todennus ja valtuutus Web-sovellusliittymän varhaisessa vaiheessa. Tämä auttaa poistamaan tarpeettomat käsittelykulut pyyntöjaksolta. Huomaa, että riippumatta siitä, käytätkö HTTP-moduuleja tai HTTP-viestinkäsittelijöitä todennukseen, voit noutaa nykyisen päämiehen (eli käyttäjän) ApiController.User omaisuus.

Muista myös, että Web-sovellusliittymän valtuutussuodattimet suoritetaan ennen ohjaimen toimintatapoja. Joten jos saapuvaa pyyntöä ei ole valtuutettu, palvelu palauttaa virheen, pyyntö jätetään huomioimatta eikä palvelun toimintatapaa suoriteta.

AuthorizeAttribute-valtuutussuodattimen käyttäminen

Sisäänrakennettu valtuutussuodatin AuthorizeAttribute voidaan käyttää saapuvien pyyntöjen valtuuttamiseen. Voit käyttääAuthorizeAttribute tarkistaa, onko käyttäjä todennettu. Jos käyttäjää ei ole todennettu, se palauttaa HTTP-tilakoodin 401. Tätä valtuutusta voidaan käyttää Web-sovellusliittymässä globaalisti tai ohjaimen tasolla.

Huomaa, että voit myös ottaa käyttöön mukautetun viestinkäsittelijän, joka valtuuttaa pääsyn ohjaimen menetelmiin, kun sanomasuodattimet suoritetaan paljon aikaisemmin Web-sovellusliittymän elinkaaressa.

Voit rajoittaa kaikkien ohjaimien käyttöä lisäämällä AuthorizeAttribute maailmanlaajuisesti Suodattimet kokoelma Http-kokoonpano ilmentymä. Seuraava koodinpätkä näyttää, kuinka voit lisätä AuthorizeAttribute että Suodattimet kokoelma Http-kokoonpano esine.

public static void Register (HttpConfiguration config)

        {

// Web-sovellusliittymän määritykset ja palvelut

// Web-sovellusliittymän reitit

config.MapHttpAttributeRoutes ();

config.Routes.MapHttpRoute (

nimi: “DefaultApi”,

routeTemplate: "api / {ohjain} / {id}",

   oletusarvot: uusi {id = RouteParameter.Optional}

            ); 

config.Filters.Add (uusi AuthorizeAttribute ());

        } 

Käytä Authorize-määritettä

Ohjaimen tasolla voit rajoittaa pääsyä soveltamalla Valtuuta määritteen seuraavassa annetussa koodinpätkässä.

[Valtuuta]

julkisen luokan EmployeesController: ApiController

{

// Kirjoita tähän Http-verbejä vastaavat menetelmät

}

Voit myös käyttää Valtuuta attribute toimintotasolla rajoittaa pääsyä tiettyyn toimintamenetelmään. Seuraava koodinpätkä kuvaa, miten tämä voidaan toteuttaa.

julkisen luokan EmployeesController: ApiController

{

public HttpResponseMessage Get () {// Jotkut koodit}

// Vaadi lupa tiettyyn toimintoon.

[Valtuuta]

public HttpResponseMessage Post (Employee emp) {// Jotkut koodit}

Aiemmin näytetyssä koodinpätkässä pääset käyttämään Lähettää() - menetelmä on rajoitettu Saada() menetelmää ei ole rajoitettu. Voit myös rajoittaa ohjainta ja antaa sitten anonyymin pääsyn yhdelle tai useammalle toimintatavalle. Seuraava koodinpätkä kuvaa tätä.

julkisen luokan EmployeesController: ApiController

{

public HttpResponseMessage Get () {// Jotkut koodit}

[AllowAnonymous]

public HttpResponseMessage Post (Employee emp) {// Jotkut koodit}

}

Valtuuta toimet roolien ja käyttäjien mukaan

On myös mahdollista rajoittaa toimintamenetelmien käyttöä roolien ja käyttäjien mukaan. Seuraava koodinpätkä osoittaa, miten tämä voidaan saavuttaa.

[Valtuuta (käyttäjät = "Joydip, Jini")] // Rajoita käyttäjän pääsyä

julkisen luokan EmployeesController: ApiController

{

// Kirjoita tähän Http-verbejä vastaavat menetelmät

}

Yllä olevassa esimerkissä Employees-ohjain rajoittaa pääsyä vain käyttäjille Joydip ja Jini. Alla oleva koodi näyttää, kuinka voit rajoittaa pääsyä rooleilla.

[Valtuuta (roolit = "Järjestelmänvalvojat")] // Rajoita rooleilla

julkisen luokan EmployeesController: ApiController

{

// Kirjoita tähän Http-verbejä vastaavat menetelmät

}

Voit aina käyttää ApiController.User ominaisuus ohjaimen menetelmässä nykyisen periaatteen noutamiseksi ja käyttöoikeuden myöntämiseksi käyttäjän roolin perusteella. Tämä näkyy alla olevassa koodiluettelossa.

public HttpResponseMessage Get ()

{

jos (User.IsInRole ("Järjestelmänvalvojat"))

    {

// Kirjoita koodi tähän

    }

}

Mukautettujen valtuutussuodattimien käyttö ASP.Net Web -sovellusliittymässä

Valtuutussuodatin on luokka, joka laajentaa AuthorizationFilterAttribute luokka ja ohittaa OnAuthorization () menetelmä. Tämä on tapa, jolla voit kirjoittaa valtuutuslogiikan. Jos valtuutus epäonnistuu, voit palauttaa Luvaton poikkeus luokka tai jopa mukautettu HttpResponseMessage.

Seuraava koodiluettelo näyttää, kuinka voit toteuttaa mukautetun luokan valtuuttamalla pyynnöt Web-sovellusliittymään. Huomaa, että sinun tulisi laajentaa AuthorizeAttribute luokka ottamaan käyttöön oman valtuutussuodatinluokan.

julkinen luokka CustomAuthorizeAttribute: AuthorizeAttribute

    {

public override void OnAuthorization (System.Web.Http.Controllers.HttpActionContext actionContext)

        {

jos (AuthorizeRequest (actionContext))

            {

palata;

            }

HandleUnauthorizedRequest (actionContext);

        }

suojattu ohitus void HandleUnauthorizedRequest (System.Web.Http.Controllers.HttpActionContext actionContext)

        {

// Koodi luvattomien pyyntöjen käsittelemiseksi

        }

private bool AuthorizeRequest (System.Web.Http.Controllers.HttpActionContext actionContext)

        {

// Kirjoita koodi tähän suorittaaksesi valtuutuksen

palaa tosi;

        }

    }