Aracılığıyla paylaş


Nasıl yapılır: Kuralları ve Kural Gruplarını Yapılandırmak için ACS Yönetim Hizmetini Kullanma

Güncelleştirme: 19 Haziran 2015

Şunlar için geçerlidir: Azure

Uygulanan Öğe

  • Microsoft Azure Active Directory Access Control (Access Control Hizmeti veya ACS olarak da bilinir)

Genel Bakış

ACS Yönetim Portalı'nı (daha fazla bilgi için bkz. Kural Grupları ve Kurallar) veya ACS Yönetim Hizmeti'ni kullanarak ACS kurallarını ve kural gruplarını yapılandırabilirsiniz. ACS yönetimi için özel bir kullanıcı arabirimi oluşturuyorsanız veya çok kiracılı Hizmet Olarak Yazılım (SaaS) çözümleri için yeni bir kiracı eklemeyi otomatikleştirmek istiyorsanız ACS Yönetim Hizmeti ile çalışmak daha verimli olabilir.

ACS Yönetim Hizmeti'ni kullanarak Kuralları ve Kural Gruplarını Yapılandırma Adımları

Önemli

Aşağıdaki adımları gerçekleştirmeden önce sisteminizin ACS Önkoşulları bölümünde özetlenen tüm .NET framework ve platform gereksinimlerini karşıladığından emin olun.

ACS Yönetim Hizmeti'ni kullanarak kuralları ve kural gruplarını yapılandırmak için aşağıdaki adımları tamamlayın:

  • 1. Adım – ACS Yapılandırma Bilgilerini Toplama

  • 2. Adım – Örnek Konsol Uygulaması Oluşturma

  • 3. Adım – Gerekli Hizmetlere ve Derlemelere Başvuru Ekleme

  • 4. Adım – Yönetim Hizmeti İstemcisini Uygulama

  • 5. Adım – Kural Grubu Ekleme

  • 6. Adım – Kural Ekleme

1. Adım – ACS Yapılandırma Bilgilerini Toplama

Gerekli yapılandırma bilgilerini toplamak için ACS Yönetim Portalı'nı kullanabilirsiniz. ACS Yönetim Portalı'nı başlatma hakkında daha fazla bilgi için bkz. ACS Yönetim Portalı.

ACS yapılandırma bilgilerini toplamak için

  1. ACS Yönetim Portalı'nı başlatın. ACS Yönetim Portalı'nı başlatma hakkında daha fazla bilgi için bkz. ACS Yönetim Portalı.

  2. ACS yönetim hizmeti hesabının değerini alın. Varsayılan ManagementClient hesabını kullanabilirsiniz. Bu değeri görüntülemek için ACS Yönetim Portalı'nda, sayfanın sol tarafındaki ağaçtaki Yönetim bölümünün altında Yönetim hizmeti'ne tıklayın.

  3. ACS Yönetim Hizmeti hesap parolasının değerini alın. Bu değeri görüntülemek için aşağıdakileri yapın:

    1. ACS Yönetim Portalı'nda, sayfanın sol tarafındaki ağaçtaki Yönetim bölümünün altında Yönetim hizmeti'ne tıklayın.

    2. Yönetim Hizmeti sayfasında, Yönetim Hizmeti Hesapları'nın altında Yönetimİstemci'ye tıklayın.

    3. Yönetim Hizmeti Hesabını Düzenle sayfasında, Kimlik Bilgileri'nin altında Parola'ya tıklayın.

    4. Yönetim Kimlik Bilgilerini Düzenle sayfasında Parola alanındaki değeri kopyalayın.

  4. azure ad alanınızın adını Azure portal veya ACS Yönetim Portalınızın URL'sinden alın. Örneğin, içinde http://contoso.accesscontrol.windows.netadı contoso şeklindedir.

  5. ACS ana bilgisayar adını alın. Genellikle accesscontrol.windows.net.

2. Adım – Örnek Konsol Uygulaması Oluşturma

Bu adımda, ACS kural gruplarınızı ve kurallarınızı eklemek için kodu çalıştırabilen bir örnek konsol uygulaması oluşturursunuz.

Örnek konsol uygulaması oluşturmak için

  1. Visual Studio 2012'yi açın ve yüklü Windows şablonu altında yeni bir konsol uygulaması projesi oluşturun.

  2. Program sınıfına aşağıdaki kodu ekleyin ve önceki adımda topladığınız uygun yapılandırma bilgilerine serviceIdentityPasswordForManagement, serviceNamespace ve acsHostName değişkenlerini atayın.

    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;
    

3. Adım – Gerekli Hizmetlere ve Derlemelere Başvuru Ekleme

Bu adımda, gerekli bağımlılıkları belirler ve hizmetlere ve derlemelere eklersiniz.

Gerekli bağımlılıkları hizmetlere ve derlemelere eklemek için

  1. Başvurular'a sağ tıklayın, Başvuru Ekle'ye tıklayın ve System.Web.Extensions'a başvuru ekleyin.

    Not

    Çözüm Gezgini örnek konsol uygulama adınıza sağ tıklamanız, Özellikler'i seçmeniz ve örnek uygulamanızın hedef çerçevesini .NET Framework 4 İstemci Profilinden (yeni konsol uygulaması oluşturduğunuzda varsayılan olarak atanır) .NET Framework 4 olarak değiştirmeniz gerekebilir.

  2. Hizmet Başvuruları'na sağ tıklayın, Hizmet Başvurusu Ekle'ye tıklayın ve Yönetim Hizmeti'ne bir hizmet başvurusu ekleyin. Yönetim Hizmeti URL'si ad alanınıza özgüdür ve aşağıdakine benzer şekilde görünür:

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

  3. Aşağıdaki bildirimleri ekleyin; burada MyConsoleApplication konsol uygulamanızın adı, MyServiceReference ise hizmet başvurunuzun adıdır:

    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;
    

4. Adım – Yönetim Hizmeti İstemcisini Uygulama

Bu adımda Yönetim Hizmeti istemcisini uygularsınız.

Yönetim Hizmeti istemcisini uygulamak için

  1. Program sınıfına aşağıdaki yöntemi ekleyin:

       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. GetTokenWithWritePermission yöntemini ve yardımcı yöntemlerini oluşturmak için Program sınıfına aşağıdaki kodu ekleyin. GetTokenWithWritePermission ve yardımcıları, HTTP isteğinin Authorization üst bilgisine SWT OAuth belirtecini ekler.

    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;
    
            }
    

5. Adım – Kural Grubu Ekleme

Bu adımda, yukarıdaki adımda oluşturduğunuz Yönetim Hizmeti istemcisini kullanarak bir kural grubu eklersiniz.

Kural grubu eklemek için

  1. Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:

    ManagementService svc = CreateManagementServiceClient();
    
  2. Yeni kural grubunuzu ekleyin (aşağıdaki kodda gösterildiği gibi "mygroup" olarak adlandırabilir) ve Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek değişiklikleri kaydedin:

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

6. Adım – Kural Ekleme

Bu adımda, ACS Yönetim Hizmeti'ni kullanarak önceki adımda oluşturduğunuz kural grubuna bir kural eklersiniz.

Kural eklemek için

  1. Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Access Control ad alanı ad alanınızı temsil eden yerleşik bir veren adı olan "LOCAL AUTHORITY" için bir değişken oluşturun:

    // "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. Aşağıdakilerden birini yapın:

    1. Temel bir kural eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

                  //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. Belirli bir giriş talebi ve değerini uygulamaya değişiklik yapmadan geçiren bir kural eklemek için, Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

      //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. Belirtilen türdeki herhangi bir talebi geçiren bir kural eklemek için, Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

      //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. Belirtilen değere sahip herhangi bir giriş talebi geçiren bir kural eklemek için, Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

      //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. Belirtilen giriş talep türünü farklı bir çıkış talep türüne dönüştüren, ancak talep değerini değiştirmeyen bir kural eklemek için, Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

      //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);
      

Ayrıca Bkz.

Kavramlar

ACS Nasıl Yapılır