Autorisatie via data-annotaties in .NET

Geschreven door: op maandag 31 oktober 2016

Leestijd:

Sommige webapplicaties die online staan moeten alleen toegankelijk zijn voor bepaalde ingelogde gebruikers of bezoekers vanaf een reeks IP-adressen. In andere gevallen wil je dat de webapplicatie zelf beschikbaar is voor alle bezoekers, maar bepaalde methodes niet.

.NET heeft verschillende mogelijkheden om hiervoor te zorgen. Bijvoorbeeld via een validatie via code in de methode zelf of via data-annotaties. Die laatste staan hieronder beschreven.

Methoden in .NET

Een methode kan een bepaalde functie zijn die wordt aangeroepen door een bezoeker om een PDF-bestand te downloaden of bijvoorbeeld een view zoals een overzicht met alle gebruikers in de webapplicatie. In het MVC-framework van .NET zijn deze methoden Actions binnen Controllers, waarbij de methode altijd een ActionResult teruggeeft, in het geval van een view is dat View en in het geval van het downloaden van een bestand, kan dat een File zijn. Validatie via data-annotaties kan worden toegepast op zowel Controller als Action.

Data-annotaties

Data-annotaties zijn stukjes tekst die extra context of informatie geven aan de code, zonder de code zelf aan te passen. Een voorbeeld is [Required], waarmee je kan aangeven dat een eigenschap verplicht is:


  public class Klant
    {
        [Required]
        [Display(Name = "E-mail")]
        public string Email { get; set; }
    }

Rollen via data-annotaties

 

 

Via deze data-annotaties kan je er ook voor zorgen dat gebruikers ingelogd moeten zijn met een bepaalde rol voordat ze een Action mogen uitvoeren. Er zijn een aantal belangrijke data-annotaties:

 

 

  1. [Authorize]: hiermee wordt aangegeven dat een Controller of Action alleen toegankelijk is voor ingelogde gebruikers.
  2. [AllowAnonymous]: Niet-ingelogde bezoekers mogen de Action uitvoeren, zelfs als de Controller een ingelogde bezoeker verwacht.

Voorbeeld rollen via data-annotaties

  


[Authorize]
    public class WinkelController : Controller
    {

       [Authorize(Roles = "Beheerder, Administrator")]
        public ActionResult OverzichtBestellingen()
        {
            return View();
        }

        [AllowAnonymous]
        [HttpPost]
        public ActionResult Login()
        {
            /* Logincode */
            return View();
        }

 

In bovenstaande voorbeeld staat ook een methode om via Roles= aan te geven welke rollen (één van de) verplicht zijn.

IP-filter via data-annotatie

Sommige functionaliteit in een Controller wil je alleen beschikbaar hebben voor gebruikers vanaf een bepaald IP-adres. Door data-annotaties uit te breiden met een nieuwe annotatie, kan je dit bewerkstelligen. Deze uitbreiding is al gemaakt: Restrict Access to an MVC Action or Controller by IP Address using a Custom Action Filter.

Voeg bovenstaande ActionFilterAttribute aan je project toe en plaats in je app.config of web.config de toegestane IP-adressen: <add value="::1, 127.0.0.1, 10.0.*.*, 79.88.44.33" key="AuthorizeIPAddresses" />.

Nu kan je via de data-annotatie [AuthorizeIPAddress] elke Controller en Action naar wens alleen toegankelijk maken vanaf een of een aantal bepaalde IP-adressen.


Andere blogartikelen

  • SQL: Geclusterde en niet-geclusterde index

    Geschreven door: op zondag 30 juni 2019

    Het kan soms voorkomen dat het veel tijd kost voordat een bepaalde query resultaten teruggeeft. Dit kan liggen aan een scala aan problemen, zoals het gebruik van veel joins. Wat de query kan helpen ve ...

    Bekijk het artikel »
  • Hoe werkt OAuth 2.0

    Geschreven door: op zondag 30 juni 2019

    In de huidige samenleving is iedereen bijna altijd online, zo ook de applicaties waarvan de mensen gebruik maken. Als je jouw applicatie niet goed afschermt, kan dit allemaal veiligheidsrisico’s met z ...

    Bekijk het artikel »
  • OAuth 2.0: JWT token en claims

    Geschreven door: op zondag 30 juni 2019

    In mijn vorige blog heb ik uitgelegd hoe OAuth 2.0 ervoor kan zorgen dat derde partijen op een veilige manier gebruik kunnen maken van jouw applicatie met behulp van tokens. In deze blog gaan we wat m ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten