Sdílet prostřednictvím


Postupy: Konfigurace pravidel a skupin pravidel pomocí služby ACS Management Service

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)

Přehled

Pravidla a skupiny pravidel služby ACS můžete nakonfigurovat pomocí portálu pro správu služby ACS (další informace najdete v tématu Skupiny pravidel a pravidla) nebo pomocí služby pro správu služby ACS. Práce se službou ACS Management Service může být efektivnější, pokud vytváříte vlastní uživatelské rozhraní pro správu služby ACS nebo pokud chcete automatizovat onboarding nového tenanta pro řešení SaaS (Software as a Service) s více tenanty.

Postup konfigurace pravidel a skupin pravidel pomocí služby pro správu služby ACS

Důležité

Před provedením následujících kroků se ujistěte, že váš systém splňuje všechny požadavky rozhraní .NET Framework a platformy, které jsou shrnuté v požadavcích služby ACS.

Pokud chcete nakonfigurovat pravidla a skupiny pravidel pomocí služby ACS Management Service, proveďte následující kroky:

  • Krok 1 – shromáždění informací o konfiguraci služby ACS

  • Krok 2 – Vytvoření ukázkové konzolové aplikace

  • Krok 3 – přidání odkazů na požadované služby a sestavení

  • Krok 4 – Implementace klienta služby pro správu

  • Krok 5 – Přidání skupiny pravidel

  • Krok 6 – přidání pravidla

Krok 1 – shromáždění informací o konfiguraci služby ACS

Pomocí portálu pro správu služby ACS můžete shromáždit potřebné informace o konfiguraci. Další informace o tom, jak spustit portál pro správu služby ACS, najdete v tématu Portál pro správu služby ACS.

Shromažďování informací o konfiguraci služby ACS

  1. Spusťte portál pro správu služby ACS. Další informace o tom, jak spustit portál pro správu služby ACS, najdete v tématu Portál pro správu služby ACS.

  2. Získejte hodnotu účtu služby pro správu služby ACS. Můžete použít výchozí účet ManagementClient . Tuto hodnotu zobrazíte tak, že na portálu pro správu služby ACS kliknete na Službu pro správu v části Správa ve stromu na levé straně stránky.

  3. Získejte hodnotu hesla účtu služby ACS Management Service. Pokud chcete zobrazit tuto hodnotu, postupujte takto:

    1. Na portálu pro správu služby ACS klikněte na Službu pro správu v části Správa ve stromu na levé straně stránky.

    2. Na stránce Služby správy klikněte na ManagementClient v části Účty služby pro správu.

    3. Na stránce Upravit účet služby pro správu klikněte v části Přihlašovací údaje na Heslo.

    4. Na stránce Upravit přihlašovací údaje správy zkopírujte hodnotu do pole Heslo .

  4. Získejte název oboru názvů Azure z Azure Portal nebo z adresy URL portálu pro správu služby ACS. Například v http://contoso.accesscontrol.windows.netnázvu je contoso.

  5. Získejte název hostitele ACS. Obvykle je to accesscontrol.windows.net.

Krok 2 – Vytvoření ukázkové konzolové aplikace

V tomto kroku vytvoříte ukázkovou konzolovou aplikaci, která může spustit kód pro přidání skupin a pravidel pravidel služby ACS.

Vytvoření ukázkové konzolové aplikace

  1. Otevřete Visual Studio 2012 a vytvořte nový projekt konzolové aplikace pod Windows nainstalovanou šablonou.

  2. Do třídy Program přidejte následující kód a pak přiřaďte proměnné serviceIdentityPasswordForManagement, serviceNamespace a acsHostName příslušné konfigurační informace, které jste shromáždili v předchozím kroku.

    public const string serviceIdentityUsernameForManagement = "ManagementClient";
    public const string serviceIdentityPasswordForManagement = "My Password/Key for ManagementClient";
    public const string serviceNamespace = "MyNameSpaceNoDots";
    public const string acsHostName = "accesscontrol.windows.net";
    public const string acsManagementServicesRelativeUrl = "v2/mgmt/service/";
    static string cachedSwtToken;
    

Krok 3 – přidání odkazů na požadované služby a sestavení

V tomto kroku identifikujete a přidáte požadované závislosti do služeb a sestavení.

Přidání požadovaných závislostí do služeb a sestavení

  1. Klikněte pravým tlačítkem myši na Odkazy, klikněte na Přidat odkaz a přidejte odkaz na System.Web.Extensions.

    Poznámka

    Možná budete muset kliknout pravým tlačítkem myši na název ukázkové konzolové aplikace v Průzkumník řešení, vybrat Vlastnosti a změnit cílovou architekturu ukázkové aplikace z klientského profilu rozhraní .NET Framework 4 (ve výchozím nastavení přiřazené při vytváření nové konzolové aplikace) na rozhraní .NET Framework 4.

  2. Klikněte pravým tlačítkem na odkazy na službu, klikněte na Přidat odkaz na službu a přidejte odkaz na službu pro správu. Adresa URL služby pro správu je jedinečná pro váš obor názvů a vypadá podobně jako následující:

    https:// YOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service

  3. Přidejte následující deklarace, kde MyConsoleApplication je název vaší konzolové aplikace a MyServiceReference je název odkazu na vaši službu:

    using System.Web;
    using System.Net;
    using System.Data.Services.Client;
    using System.Collections.Specialized;
    using System.Web.Script.Serialization;
    using System.Globalization;
    using System.Runtime.Serialization.Json; 
    using MyConsoleApplication.MyServiceReference;
    

Krok 4 – Implementace klienta služby pro správu

V tomto kroku implementujete klienta služby pro správu.

Implementace klienta služby pro správu

  1. Do třídy Program přidejte následující metodu:

       public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceEndpoint = String.Format(CultureInfo.InvariantCulture, "https://{0}.{1}/{2}",
                    serviceNamespace,
                    acsHostName,
                    acsManagementServicesRelativeUrl);
                ManagementService managementService = new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
  2. Do třídy Program přidejte následující kód pro vytvoření GetTokenWithWritePermission metody a jeho pomocné metody. GetTokenWithWritePermission a jeho pomocné rutiny přidají token SWT OAuth do hlavičky autorizace požadavku HTTP.

    public static void GetTokenWithWritePermission(object sender, SendingRequestEventArgs args)
            {
                GetTokenWithWritePermission((HttpWebRequest)args.Request);
            }
    
            public static void GetTokenWithWritePermission(HttpWebRequest args)
            {
                if (cachedSwtToken == null)
                {
                    cachedSwtToken = GetTokenFromACS();
                }
    
                args.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + cachedSwtToken);
            }
    
            private static string GetTokenFromACS()
            {
                //
                // Request a token from ACS
                //
                WebClient client = new WebClient();
                client.BaseAddress = string.Format(CultureInfo.CurrentCulture, 
                                                   "https://{0}.{1}", 
                                                   serviceNamespace, 
                                                   acsHostName);
    
                NameValueCollection values = new NameValueCollection();
                values.Add("grant_type", "client_credentials");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("scope", client.BaseAddress + acsManagementServicesRelativeUrl);
    
                byte[] responseBytes = client.UploadValues("/v2/OAuth2-13", "POST", values);
    
                string response = Encoding.UTF8.GetString(responseBytes);
    
                // Parse the JSON response and return the access token 
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                Dictionary<string, object> decodedDictionary = serializer.DeserializeObject(response) as Dictionary<string, object>;
    
                return decodedDictionary["access_token"] as string;
    
            }
    

Krok 5 – Přidání skupiny pravidel

V tomto kroku přidáte skupinu pravidel pomocí klienta služby pro správu, který jste vytvořili v předchozím kroku.

Přidání skupiny pravidel

  1. Inicializace klienta služby správy přidáním následujícího kódu do metody Main ve třídě Program :

    ManagementService svc = CreateManagementServiceClient();
    
  2. Přidejte novou skupinu pravidel (můžete ji volat mygroup, jak je znázorněno v následujícím kódu) a uložit změny přidáním následujícího kódu do metody Main ve třídě Program :

    RuleGroup rg = new RuleGroup();
                rg.Name = "mygroup";
                svc.AddToRuleGroups(rg);
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Krok 6 – přidání pravidla

V tomto kroku přidáte pravidlo do skupiny pravidel, kterou jste vytvořili v předchozím kroku pomocí služby ACS Management Service.

Přidání pravidla

  1. Vytvořte proměnnou pro "LOCAL AUTHORITY", což je předdefinovaný název vystavitele, který představuje váš obor názvů Access Control oboru názvů, přidáním následujícího kódu do metody Main ve třídě Program:

    // "LOCAL AUTHORITY" is a built-in IDP name that represents the Access Control namespace. 
    Issuer localAuthority = svc.Issuers.Where(m => m.Name == "LOCAL AUTHORITY").FirstOrDefault();
    
  2. Proveďte některou z následujících akcí:

    1. Pokud chcete přidat základní pravidlo, přidejte následující kód do metody Main ve třídě Program :

                  //EXAMPLE #1 - BASIC RULE
                  Rule basicRule = new Rule()
                  {
                      InputClaimType = "https://acs/your-input-type",
                      InputClaimValue = "inputValue",
                      OutputClaimType = "https://acs/your-output-type",
                      OutputClaimValue = "outputValue",
                  };
      
                  basicRule.Description = string.Format(CultureInfo.InvariantCulture,
                      "Transforms claim from {0} with type: {1}, value: {2}, into a new claim with type: {3}, value:{4}",
                      "ACS",
                      basicRule.InputClaimType,
                      basicRule.InputClaimValue,
                      basicRule.OutputClaimType,
                      basicRule.OutputClaimValue);
      
                  svc.AddToRules(basicRule);
                  svc.SetLink(basicRule, "RuleGroup", rg);
                  svc.SetLink(basicRule, "Issuer", localAuthority);                                              
                    svc.SaveChanges(SaveChangesOptions.Batch);
      
    2. Chcete-li přidat pravidlo, které předá konkrétní vstupní deklaraci identity a hodnotu do aplikace beze změn, přidejte následující kód do metody Main ve třídě Program :

      //EXAMPLE #2 - PASS TYPE AND VALUE RULE
                  Rule passSpecificClaimRule = new Rule()
                  {
                      InputClaimType = "https://acs/your-input-type2",
                      InputClaimValue = "inputValue2",
                  };
      
                  passSpecificClaimRule.Description = string.Format(CultureInfo.InvariantCulture,
                      "Passthough claim from {0} with type: {1}, value: {2}",
                      "ACS",
                      passSpecificClaimRule.InputClaimType,
                      passSpecificClaimRule.InputClaimValue);
      
                  svc.AddToRules(passSpecificClaimRule);
                  svc.SetLink(passSpecificClaimRule, "RuleGroup", rg);
                  svc.SetLink(passSpecificClaimRule, "Issuer", localAuthority); 
      svc.SaveChanges(SaveChangesOptions.Batch);
      
    3. Chcete-li přidat pravidlo, které předá deklarace identity se zadaným typem, přidejte do třídyProgram následující kód:

      //EXAMPLE #3 PASS SPECIFIC TYPE RULE
                  Rule passAnyClaimSpecificTypeRule = new Rule()
                  {
                      InputClaimType = "https://acs/your-input-type3",
                  };
      
                  passAnyClaimSpecificTypeRule.Description = string.Format(CultureInfo.InvariantCulture,
                      "Pass claim from {0} with type: {1}, and any value",
                      "ACS",
                      passSpecificClaimRule.InputClaimType);
      
                  svc.AddToRules(passAnyClaimSpecificTypeRule);
                  svc.SetLink(passAnyClaimSpecificTypeRule, "RuleGroup", rg);
                  svc.SetLink(passAnyClaimSpecificTypeRule, "Issuer", localAuthority); 
      svc.SaveChanges(SaveChangesOptions.Batch);
      
    4. Pokud chcete přidat pravidlo, které předá jakoukoli vstupní deklaraci identity se zadanou hodnotou, přidejte do třídyProgram následující kód:

      //EXAMPLE #4 PASS ANY CLAIM W/SPECIFIC VALUE RULE
                  Rule passAnyClaimSpecificValueRule = new Rule()
                  {
                      InputClaimValue = "inputValue3",
                  };
      
                  passAnyClaimSpecificValueRule.Description = string.Format(CultureInfo.InvariantCulture,
                      "Pass claim from {0} with any type, and specific value {1}",
                      "ACS",
                      passSpecificClaimRule.InputClaimValue);
      
                  svc.AddToRules(passAnyClaimSpecificValueRule);
                  svc.SetLink(passAnyClaimSpecificValueRule, "RuleGroup", rg);
                  svc.SetLink(passAnyClaimSpecificValueRule, "Issuer", localAuthority); 
      svc.SaveChanges(SaveChangesOptions.Batch);
      
    5. Chcete-li přidat pravidlo, které transformuje zadaný vstupní typ deklarace identity na jiný výstupní typ deklarace identity, ale nezmění hodnotu deklarace identity, přidejte následující kód do metody Main ve třídě Program :

      //EXAMPLE #5 COMPLEX RULE
                  Rule complexTransformationRule = new Rule()
                  {
                      InputClaimType = "https://acs/your-input-type4",
                      OutputClaimType = "https://acs/your-output-type2",
                  };
      
                  complexTransformationRule.Description = string.Format(CultureInfo.InvariantCulture,
                      "Transforms claim from {0} with type: {1}, and any value, into a new claim with type: {2}, keeping(passingthough) old value",
                      "ACS",
                      complexTransformationRule.InputClaimType,
                      complexTransformationRule.OutputClaimType);
      
                  svc.AddToRules(complexTransformationRule);
                  svc.SetLink(complexTransformationRule, "RuleGroup", rg);
                  svc.SetLink(complexTransformationRule, "Issuer", localAuthority);
      
                  svc.SaveChanges(SaveChangesOptions.Batch);
      

Viz také

Koncepty

Postupy ACS