vrijdag 3 mei 2013

Windows Identity Foundation met ACS

Wie denkt dat BesteProduct alleen maar wat prijzen en reviews ophoest, heeft het helemaal mis. Naast ontwikkelaars, die de site uitbreiden en onderhouden, is de groep invoerders continu bezig om producten actueel te houden. Deze groep is ook verantwoordelijk voor het doorspitten van honderden tijdschriften uit alle hoeken van de wereld, op zoek naar tests. Deze testresultaten worden via een invoerapplicatie in de database opgeslagen. Verder is er nog een legertje redacteuren aanwezig die artikelen schrijven, filmpjes maken en zelf producten testen.
Redacteuren zijn een slag apart. Ze bedienen zich van allerlei hippe apparaten, begeven zich op de meest uiteenlopende sociale netwerken en zijn luidruchtig. Door die sociale media hebben ze veel accounts en dus veel wachtwoorden te onthouden. Voor het invoersysteem komt daar nog een account extra bij en dat werd net teveel van het goede. Vandaar dat besloten is om het aanmelden via de bestaande accountdiensten (Live ID, Google, Facebook) te laten verlopen. Bijkomend voordeel is de beveiliging. Dat moet je zelf niet willen doen. Nadeel is dat al die diensten weer verschillende protocollen hanteren waardoor het weer te bewerkelijk wordt. Hier komt Access Control System (ACS) om de hoek kijken. Dit is een dienst van het Windows Azure platform dat de data van al die verschillende aanmelddiensten transformeert naar een uniforme set (claims).
Om goed om te kunnen gaan met ACS is het dus van belang dat je weet wat Claim Based Identity inhoudt. Claim Based Identity laat zich het best vergelijken met een paspoort. Hierin staat bijvoorbeeld jouw naam, geboortedatum en sofi-nummer (claims). Om vervalsingen tegen te gaan, wordt zo'n paspoort uitgegeven door een geautoriseerde dienst (issuer). In ons geval de overheid. Wanneer je nu een nachtclub in wilt, kan de uitsmijter op basis van jouw geboortedatum (claim) besluiten of hij jou al dan niet binnenlaat. Ook andere landen kunnen onze overheid vertrouwen waardoor het paspoort in het buitenland ook bruikbaar is. Men spreekt dan van een zogenaamde "trust" relatie. Wanneer die trust er niet of gedeeltelijk is, zul je naar een ambassade moeten alwaar jouw paspoort met een visum (claim) wordt verrijkt.
Met Claim Based Security werkt het eigenlijk hetzelfde. De issuer is dan Live ID, Google of Yahoo!. Welke claims je krijgt, hangt van de issuer af, maar in ieder geval krijg je een unieke identifier. Afhankelijk van de provider kun je ook het email-adres of de naam van de gebruiker terugkrijgen.

Om van ACS gebruik te kunnen maken, moeten we eerst een namespace hiervoor definiëren. Daarvoor ga je eerst naar de Azure Portal (afbeelding 1). Van daaruit ga je naar het menu "Active Directory" en het submenu "Access Control Namespaces".


Afbeelding 1. Active Directory window in de Azure Portal.
Vervolgens selecteer je "Create New Namespace" hetgeen leidt tot het scherm in afbeelding 2. Hierin geef je de namespace op en de locatie van het datacenter waar die aangemaakt wordt.


Afbeelding 2. Aanmaken van de namespace.
Wanneer dit alles geslaagd is, zie je in het Active Directory scherm (na enige tijd) een "Manage" knop verschijnen (afbeelding 3). Deze knop leidt naar het ACS-configuratiescherm (afbeelding 4).


Afbeelding 3. Na enige tijd verschijnt de "Manage" knop onderin beeld.

Afbeelding 4. Het ACS-configuratiescherm.
Het ACS-configuratiescherm schrijft vier stappen voor die je moet doen om jouw web applicatie gebruik te laten maken met ACS:
  1. Identity Providers toekennen. Identity Providers zijn bijvoorbeeld Live ID, Google, Facebook, Yahoo! en Active Directory Federation Services (ADFS) (afbeelding 5).
  2. Relying Party Applications instellen. Hier moet je het adres van de website, waarvoor je ACS wilt gebruiken, opgeven. Daarnaast kun je eigenschappen van het security token aanpassen, welke Identity Providers je wilt gebruiken en welke claims van de Identity Providers je wilt gebruiken.
  3. Rule Groups. Hierin kun je instellen welke claims van de Identity Providers je wilt gebruiken. Daarnaast kun je de claims verrijken met extra claims (de visum stempels).
  4. (Optioneel) kun je hier instellen hoe ACS zich in jouw applicatie zal gedragen.
Afbeelding 5. Aangeven welke identity providers je wilt gebruiken.
Wanneer je de stappen 1, 2 en 3 hebt doorlopen, kun je aan jouw web applicatie gaan werken. Daarvoor kun je het best de Windows Identity Foundation (WIF) SDK installeren. WIF komt voor .NET Framework versies 3.5 en 4. Voor Visual Studio 2012 en het .NET Framework 4.5, waar het grootste deel van WIF in is geïntegreerd, moet je de Identity and Access Tool installeren en kun je stappen 2 en 3 in het ACS-configuratiescherm overslaan. In deze blog ga ik verder uit van .NET Framework 4.5 en Visual Studio 2012.

Nadat je de Identity en Access Tool hebt geïnstalleerd, kun je een web applicatie gaan bouwen. In afbeelding 6 is een nagenoeg kale MVC 4 web applicatie in gereedheid gebracht.


Afbeelding 6. Een basic ASP.NET MVC 4 web application.
Om nu van ACS gebruik te kunnen maken, selecteer je "Identity and Access..." uit het contextmenu van het project welke leidt tot de configuratieschermen in afbeelding 7.


Afbeelding 7. ACS configureren.
In het eerste scherm geef je aan dat je gebruik wilt maken van het Windows Azure Access Control System. Vervolgens ga je naar "Configure..." hetgeen het tweede scherm start. Hierin geef je de ACS-namespace op en de access key. Die access key vind je in het ACS-configuratiescherm (afbeelding 8). Tenslotte geef je aan welke logindiensten je wilt aanbieden (afbeelding 7, laatste scherm) en ACS is klaar voor gebruik.


Afbeelding 8. Management key ophalen.
Optioneel kun je op het tabblad "Configuration" aangeven hoe omgegaan moet worden met ongeldige credentials.

Wanneer je de web applicatie start, zal eerst een keuzemenu getoond worden en vervolgens het loginscherm (afbeelding 9).


Afbeelding 9. Kies welke identity provider je wilt hebben en meld je aan (Hiervoor heb ik schoorvoetend een Facebook account aangemaakt)
Wanneer je jouw credentials hebt opgegeven, zul je eenmalig een melding van de aanmelddienst krijgen dat ACS jouw gegevens gaat gebruiken. Wanneer je dat toestaat, beland je op de site (afbeelding 10).


Afbeelding 10. Waarschuwingsvenster van Google en de uiteindelijke website.
Het opzetten van ACS en het gebruik daarvan met behulp van WIF is ogenschijnlijk vrij eenvoudig, maar nu heb je een web site die alleen gebruikers met een geldige login toelaat. In de praktijk zul je ook willen bepalen wat die aangemelde gebruikers allemaal mogen. Dan komen we op het gebied van de  autorisatie en dat is een verhaal apart. Daarover een volgende keer meer. 

1 opmerking:


  1. Dit product met de naam joystick is een noodzakelijk artikel voor PlayStation-gamers en het moet van de beste kwaliteit zijn. Dus ze moeten het kopen door een heleboel zorgvuldig selectieproces, anders is het product misschien niet goed.

    BeantwoordenVerwijderen