Procedure: Op rollen gebaseerde Access Control (RBAC) implementeren in een claimbewuste ASP.NET toepassing met behulp van WIF en ACS
Bijgewerkt: 19 juni 2015
Van toepassing op: Azure
Van toepassing op
Microsoft Azure Active Directory Access Control (ook wel Access Control Service of ACS genoemd)
® Windows Identity Foundation (WIF)
ASP.NET
Samenvatting
In dit onderwerp wordt uitgelegd hoe u op rollen gebaseerde Access Control -autorisatie (RBAC) implementeert in claimbewuste ASP.NET webtoepassingen met behulp van WIF en ACS.
Inhoud
Doelen
Overzicht
Samenvatting van de stappen
Stap 1: een eenvoudige claimbewuste ASP.NET webtoepassing maken
Stap 2: Rolclaims configureren in ACS
Stap 3: rolcontroles implementeren in een ASP.NET-webtoepassing
Stap 4: een claimtransformatie implementeren met behulp van een Custom ClaimsAuthenticationManager
Stap 5: Uw werk testen
Verwante items
Doelen
Rolclaims configureren met ACS.
Rolclaims transformeren met behulp van de ClaimsAuthenticationManager.
Implementeer op rollen gebaseerd toegangsbeheercontroles met behulp van de Methode IsInRole en de PrinciaplPermission-kenmerken.
Overzicht
RBAC is een veelgebruikte benadering voor het beperken van de toegang in toepassingen. In ASP.NET webtoepassingen wordt deze aanpak geïmplementeerd met behulp van de Methode IsInRole, het kenmerk PrincipalPermission of de eisen die sinds ASP.NET 1.0 beschikbaar zijn. U kunt claims voor autorisatie gebruiken, waardoor goed vastgestelde procedures behouden blijven tijdens het gebruik van nieuwe technologieën, zoals WIF en ACS. U kunt de WIF-runtime en SDK hier downloaden:
Samenvatting van de stappen
Stap 1: een eenvoudige ASP.NET webtoepassing maken
Stap 2: Rolclaims configureren in ACS
Stap 3: rolcontroles implementeren in een ASP.NET-webtoepassing
Stap 4: een claimtransformatie implementeren met behulp van een Custom ClaimsAuthenticationManager
Stap 5: Uw werk testen
Stap 1: een eenvoudige ASP.NET webtoepassing maken
In deze stap ziet u hoe u een eenvoudige ASP.NET webtoepassing maakt die wordt gebruikt als basislijn voor het implementeren van RBAC.
Een eenvoudige ASP.NET-webtoepassing maken
Startmenu Visual Studio met de optie Uitvoeren als administrator. Dit is vereist voor WIF.
Maak een nieuwe ASP.NET Lege webtoepassing.
Voeg het aspx-webformulier toe en geef het vervolgens een naam, bijvoorbeeld default.aspx.
Stap 2: Rolclaims configureren in acs
In deze stap ziet u hoe u rolclaims configureert in de ACS-beheerportal met behulp van regelgroepen. Raadpleeg procedure: Tokentransformatielogica implementeren met behulp van regels voor een volledige stapsgewijze procedure.
Rolclaims configureren in de ACS-beheerportal
Schuif op de pagina Relying Party-toepassing bewerken omlaag naar de sectie Regelgroepen en klik vervolgens op de koppeling van de gewenste groep. Zorg ervoor dat deze is geselecteerd.
Schuif op de pagina Regelgroep bewerken omlaag naar de sectie Regel en klik vervolgens op de koppeling Regel toevoegen .
Schuif op de pagina Claimregel toevoegen omlaag naar de sectie Uitvoerclaimtype , klik op het keuzerondje Type selecteren en kies vervolgens het volgende claimtype.
https://schemas.microsoft.com/ws/2008/06/identity/claims/role
Klik in de sectie Uitvoerclaimwaarde op Waarde invoeren en voer de volgende tekst in als een waarde in het tekstvak:
GebruikerVoeg eventueel een beschrijving toe (aanbevolen) en klik vervolgens op Opslaan.
U hebt zojuist de gebruikersrolclaim geconfigureerd die aan elk token kan worden toegevoegd. Het scenario kan verschillen, afhankelijk van uw vereisten. Zie Instructies voor het implementeren van tokentransformatielogica met behulp van regels voor meer informatie over het configureren van complexere regels.
Stap 3: rolcontroles implementeren in een ASP.NET-webtoepassing
In deze stap ziet u hoe u RBAC implementeert.
RBAC implementeren op een ASP.NET webpagina
Voeg een verwijzing toe naar de Microsoft.IdentityModel-assembly.
Open de code achter default.aspx.cs.
Voeg het volgende toe met behulp van declaraties.
using System.Security.Permissions; using System.Threading; using Microsoft.IdentityModel.Claims; using System.Security;
Verfraaid de Page_Load gebeurtenishandler met de volgende beveiligingsvraag. Met dit kenmerk wordt gecontroleerd of de huidige gebruiker de rol Gebruiker heeft. Zo niet, dan wordt er een uitzondering gegenereerd.
[PrincipalPermission(SecurityAction.Demand, Role = "User")]
Voeg de volgende code toe aan de hoofdtekst van Page_Load gebeurtenis-handler. Dit is precies hetzelfde als de vraag die in de code wordt uitgedrukt.
PrincipalPermission p = new PrincipalPermission(null, "User"); p.Demand();
Voeg de volgende code toe aan de hoofdtekst van Page_Load gebeurtenis. In tegenstelling tot de vorige code genereert deze code geen uitzondering. In plaats daarvan retourneert IsInRole Booleaanse waarde die aangeeft of de huidige gebruiker de opgegeven rol heeft.
if (!User.IsInRole("User")) throw new SecurityException("Access is denied.");
De voltooide code moet er ongeveer als volgt uitzien.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Security.Permissions; using System.Threading; using Microsoft.IdentityModel.Claims; using System.Security; namespace WebIsInRoleACS { public partial class _default : System.Web.UI.Page { //THIS SHOULD THROW AN EXCEPTION [PrincipalPermission(SecurityAction.Demand, Role = "User")] protected void Page_Load(object sender, EventArgs e) { //THIS SHOULD THROW AN EXCEPTION PrincipalPermission p = new PrincipalPermission(null, "User"); p.Demand(); //THIS RETURNS BOOL if (!User.IsInRole("User")) throw new SecurityException("Access is denied."); } } }
Stap 4: een claimtransformatie implementeren met behulp van een Custom ClaimsAuthenticationManager
Dit is een optionele taak. In deze stap ziet u hoe u claims transformeert met claimsAuthenticationManager, dat deel uitmaakt van de WIF-pijplijn die wordt uitgevoerd binnen de context van de ASP.NET-toepassing, in plaats van de claimtransformatieregels die worden uitgevoerd op ACS, zoals beschreven in stap 2: Rolclaims configureren in de ACS.
De claimtransformatie implementeren met behulp van een aangepaste ClaimsAuthenticationManager
Voeg het klassebibliotheekproject toe aan de Visual Studio Solution en geef het vervolgens een naam, bijvoorbeeld MyClaimsTransformationModule.
Voeg een verwijzing toe naar de Microsoft.IdentityModel-assembly .
Voeg een verwijzing toe naar de System.IdentityModel-assembly .
Maak een nieuwe klasse en geef deze een naam, bijvoorbeeld ClaimsTransformationModule.
Voeg de volgende declaraties toe aan de klasse.
using Microsoft.IdentityModel.Claims; using System.Security.Principal;
De klasse afleiden van het type ClaimsAuthenticationManager .
De verificatiemethode overschrijven (dit is waar claimtransformatie plaatsvindt). Uw code voor de verificatiemethode kan worden gebaseerd op het volgende.
if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true) { //DECIDE ON SOME CRITERIA IF CURRENT USER DESERVES THE ROLE //IClaimsIdentity identity = (IClaimsIdentity)incomingPrincipal.Identity; ((IClaimsIdentity)incomingPrincipal.Identity).Claims.Add( new Claim(ClaimTypes.Role, "Admin")); } return incomingPrincipal;
Schakel over naar de ASP.NET-toepassing en configureer uw aangepaste ClaimsAuthenticationManager in de web.config.
<microsoft.identityModel> <service> <claimsAuthenticationManager type="MyClaimsTransformationModule.ClaimsTransformationModule, MyClaimsTransformationModule" />
Zorg ervoor dat de nieuwe assembly die u hebt gemaakt, kan worden gevonden door de toepassing; de eenvoudigste manier is om deze in de bin-map van de toepassing te plaatsen.
Stap 5: Uw werk testen
In deze stap ziet u hoe u kunt controleren of de oplossing werkt. Druk op de knop F5 om uw oplossing te testen. Uw ASP.NET-webtoepassing moet worden uitgevoerd in de foutopsporingsmodus (u kunt onderbrekingspunten toevoegen om de uitvoering van de code binnen Visual Studio te controleren). Eerst gaat u naar de verificatiepagina van de id-provider die is geconfigureerd voor federatie. Nadat de verificatie is voltooid, moet u worden omgeleid naar de pagina Default.aspx zonder dat er een uitzondering wordt gegenereerd. Dit betekent dat aan alle beveiligingsvereisten voor de gebruikersrol is voldaan.