Postupy: Implementace Access Control role (RBAC) v aplikaci ASP.NET s podporou deklarací identity pomocí WIF a ACS
Aktualizováno: 19. června 2015
Platí pro: Azure
Platí pro
Microsoft Azure Active Directory Access Control (označované také jako služba Access Control nebo služba ACS)
® Windows Identity Foundation (WIF)
ASP.NET
Souhrn
Toto téma vysvětluje, jak implementovat autorizaci Access Control role (RBAC) ve webových aplikacích pracujících s deklaracemi ASP.NET pomocí WIF a ACS.
Obsah
Cíle
Přehled
Přehled kroků
Krok 1 – vytvoření jednoduché ASP.NET webové aplikace s podporou deklarací identity
Krok 2 – Konfigurace deklarací identity rolí v ACS
Krok 3 – Implementace kontrol rolí ve webové aplikaci ASP.NET
Krok 4 – implementace transformace deklarací pomocí vlastní identityAuthenticationManager
Krok 5 – Testování práce
Související položky
Cíle
Konfigurace deklarací identity rolí pomocí služby ACS
Transformace deklarací rolí pomocí IdentityAuthenticationManager
Implementujte kontroly řízení přístupu na základě role pomocí metody IsInRole a atributů PrinciaplPermission.
Přehled
RBAC je široce přijímaný přístup k omezení přístupu v aplikacích. V ASP.NET webových aplikacích se tento přístup implementuje pomocí metody IsInRole, atributu PrincipalPermission nebo požadavků, které byly k dispozici od ASP.NET 1.0. Deklarace identity můžete použít k autorizaci, čímž zachováte dobře zavedené postupy při používání nových technologií, jako jsou WIF a ACS. Modul runtime WIF a sadu SDK si můžete stáhnout tady:
Přehled kroků
Krok 1 – vytvoření jednoduché ASP.NET webové aplikace s podporou deklarací identity
Krok 2 – Konfigurace deklarací identity rolí v ACS
Krok 3 – Implementace kontrol rolí ve webové aplikaci ASP.NET
Krok 4 – implementace transformace deklarací pomocí vlastní identityAuthenticationManager
Krok 5 – Testování práce
Krok 1 – vytvoření jednoduché ASP.NET webové aplikace s podporou deklarací identity
V tomto kroku se dozvíte, jak vytvořit základní ASP.NET webovou aplikaci, která se použije jako směrný plán pro implementaci RBAC.
Vytvoření jednoduché webové aplikace ASP.NET
Spusťte Visual Studio s možností Spustit jako správce. To se vyžaduje pro WIF.
Vytvořte novou ASP.NET prázdnou webovou aplikaci.
Přidejte webový formulář aspx a dejte mu název, například default.aspx.
Krok 2 – Konfigurace deklarací identity rolí v ACS
V tomto kroku se dozvíte, jak nakonfigurovat deklarace identity rolí na portálu pro správu služby ACS pomocí skupin pravidel. Projděte si postupy: Implementace logiky transformace tokenů pomocí pravidel pro kompletní podrobný návod.
Konfigurace deklarací identity rolí na portálu pro správu služby ACS
Na stránce Upravit aplikaci předávající strany se posuňte dolů do části Skupiny pravidel a klikněte na odkaz požadované skupiny. Ujistěte se, že je vybraná.
Na stránce Upravit skupinu pravidel se posuňte dolů do části Pravidlo a potom klikněte na odkaz Přidat pravidlo .
Na stránce Přidat pravidlo deklarace identity se posuňte dolů do části Typ výstupní deklarace identity , klikněte na přepínač Vybrat typ a pak zvolte následující typ deklarace identity.
https://schemas.microsoft.com/ws/2008/06/identity/claims/role
V části Výstupní hodnota deklarace identity klikněte na Zadat hodnotu a do textového pole zadejte následující text:
UživatelVolitelně (doporučeno) přidejte popis a klikněte na Uložit.
Právě jste nakonfigurovali deklaraci identity role uživatele, kterou je možné přidat do libovolného tokenu. Scénář se může lišit v závislosti na vašich požadavcích. Další informace o konfiguraci složitějších pravidel najdete v tématu Postupy: Implementace logiky transformace tokenů pomocí pravidel.
Krok 3 – Implementace kontrol rolí ve webové aplikaci ASP.NET
Tento krok ukazuje, jak implementovat RBAC.
Implementace řízení přístupu na základě role na webové stránce ASP.NET
Přidejte odkaz na sestavení Microsoft.IdentityModel.
Otevřete kód za default.aspx.cs.
Přidejte následující příkaz pomocí deklarací.
using System.Security.Permissions; using System.Threading; using Microsoft.IdentityModel.Claims; using System.Security;
Zdobit obslužnou rutinu události Page_Load následujícím požadavkům na zabezpečení. Tento atribut zkontroluje, jestli je aktuální uživatel v roli Uživatel. Pokud ne, vyvolá se výjimka.
[PrincipalPermission(SecurityAction.Demand, Role = "User")]
Do textu obslužné rutiny události Page_Load přidejte následující kód. To je přesně stejné jako poptávka vyjádřená v kódu.
PrincipalPermission p = new PrincipalPermission(null, "User"); p.Demand();
Do textu události Page_Load přidejte následující kód. Na rozdíl od předchozího kódu tento kód nevyvolá výjimku. Místo toho funkce IsInRole vrátí logickou hodnotu označující, jestli má aktuální uživatel zadanou roli.
if (!User.IsInRole("User")) throw new SecurityException("Access is denied.");
Dokončený kód by měl vypadat podobně jako následující.
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."); } } }
Krok 4 – implementace transformace deklarací pomocí vlastní identityAuthenticationManager
Tento krok je volitelný. Tento krok ukazuje, jak transformovat deklarace identity pomocí IdentityAuthenticationManager, který je součástí kanálu WIF, který běží v kontextu aplikace ASP.NET, a ne pravidla transformace deklarací identity, která běží v ACS, jak je popsáno v kroku 2 – Konfigurace deklarací rolí v ACS .
Implementace transformace deklarací pomocí vlastního správce deklarací identity
Přidejte projekt knihovny tříd do Visual Studio Solution a dejte mu název, například MyClaimsTransformationModule.
Přidejte odkaz na sestavení Microsoft.IdentityModel .
Přidejte odkaz na sestavení System.IdentityModel .
Vytvořte novou třídu a dejte jí název, například ClaimsTransformationModule.
Do třídy přidejte následující deklarace.
using Microsoft.IdentityModel.Claims; using System.Security.Principal;
Odvozujte třídu z typu ClaimsAuthenticationManager .
Přepište metodu Ověřování (to je místo, kde se budou provádět transformace deklarací identity). Kód metody Authenticate může být založený na následujícím kódu.
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;
Přepněte do aplikace ASP.NET a ve svém web.config nakonfigurujte vlastní správce deklarací IdentityAuthenticationManager.
<microsoft.identityModel> <service> <claimsAuthenticationManager type="MyClaimsTransformationModule.ClaimsTransformationModule, MyClaimsTransformationModule" />
Ujistěte se, že nové sestavení, které jste vytvořili, najdete v aplikaci; Nejjednodušší způsob je umístit ho do složky přihrádky aplikace.
Krok 5 – Testování práce
Tento krok ukazuje, jak ověřit, že řešení funguje. Pokud chcete otestovat řešení, stiskněte tlačítko F5. Webová aplikace ASP.NET by měla běžet v režimu ladění (můžete přidat zarážky a ověřit provádění kódu v rámci Visual Studio). Nejprve byste měli být přesměrováni na stránku ověřování zprostředkovatele identity nakonfigurovaného pro federaci. Po dokončení ověřování byste měli být přesměrováni zpět na stránku Default.aspx bez vyvolání výjimky, což znamená, že byly splněny všechny požadavky na zabezpečení role uživatele.