Share via


Nasıl yapılır: Bağlı Olan Taraf Uygulamaları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 bağlı olan taraf uygulamalarını ACS Yönetim Portalı'nı (daha fazla bilgi için bkz . Bağlı Taraf Uygulamaları) veya ACS Yönetim Hizmeti'ni kullanarak 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 Hizmetini Kullanarak Bağlı Taraf Uygulamaları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 bağlı olan taraf uygulamaları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 – Bağlı Olan Taraf Uygulaması 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ı alın. Bu değeri Azure portal veya ACS Yönetim Portalınızın URL'sinden alabilirsiniz. Örneğin, içinde http://contoso.accesscontrol.windows.netad alanı adı 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. MyConsoleApplication'ın konsol uygulamanızın adı olduğu aşağıdaki bildirimleri ekleyin:

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    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.Security.Cryptography;
    using System.Security.Cryptography.X509Certificates; 
    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 Program sınıfına 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 – Bağlı Olan Taraf Uygulaması Ekleme

Bu adımda, SAML 2.0 belirteç biçimine (varsayılan seçenek), belirteç şifreleme ilkesi olmadan (varsayılan seçenek), Windows Live ID (Microsoft hesabı) kimlik sağlayıcısıyla (varsayılan seçenek), 600 saniyelik belirteç ömrüne (varsayılan seçenek) ve bağlı olan taraf uygulamanız için özel bir X.509 belirteç imzalama sertifikasına veya bağlı olan taraf uygulamanız için bir belirteç imzalama sertifikasına sahip örnek bir bağlı olan taraf uygulaması oluşturursunuz ad alanını Access Control.

Access Control ad alanı belirteci imzalama sertifikasına sahip bağlı olan bir taraf uygulaması 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 bağlı olan taraf uygulamanızı ekleyin (aşağıdaki kodda gösterildiği gibi "MyRelyingPartyApplication" olarak adlandırabilir) ve Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek değişiklikleri kaydedebilirsiniz:

    Not

    yerine "Tam yol yazın. PFX dosyası", X.509 sertifikanızın tam yolunu içeren aşağıdaki kodda yer alır. Örneğin, ACS2ClientCertificate.cer adlı bir sertifika C: altına kaydedilirse, doğru değer "C:\ ACS2ClientCertificate.cer".

    Aşağıdaki kodda yer alan "MyCertificatePassword" yerine X.509 sertifikanızın doğru parolasını yazın.

                //Create Relying Party Application
    
                RelyingParty relyingParty = new RelyingParty()
                {
                    Name = "MyRelyingPartyApplication",
                    AsymmetricTokenEncryptionRequired = false,
                    TokenType = "SAML_2_0",
                    TokenLifetime = 3600
                };
    
                svc.AddToRelyingParties(relyingParty);
    
    
                //Create the Realm Address
    
                RelyingPartyAddress realmAddress = new RelyingPartyAddress()
                {
                    Address = "http://TestRelyingParty.com/Realm",
                    EndpointType = "Realm"
                };
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", realmAddress);
    
                //Create the Return URL Address
    
                RelyingPartyAddress replyAddress = new RelyingPartyAddress()
                {
                    Address = "http://TestRelyingParty.com/Reply",
                    EndpointType = "Reply"
                };
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", replyAddress);
    
              // Create a Rule Group for This Relying Party Application
    
                RuleGroup rg = new RuleGroup();
                rg.Name = "SampleRuleGroup For " + relyingParty.Name;
                svc.AddToRuleGroups(rg);
    
                // Assign This New Rule Group to Your New Relying Party Application
    
                RelyingPartyRuleGroup relyingPartyRuleGroup = new RelyingPartyRuleGroup();
    
                svc.AddToRelyingPartyRuleGroups(relyingPartyRuleGroup);
                svc.AddLink(relyingParty, "RelyingPartyRuleGroups", relyingPartyRuleGroup);
                svc.AddLink(rg, "RelyingPartyRuleGroups", relyingPartyRuleGroup);
    
    
                //Save Your New Relying Party Application
    
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Ayrılmış belirteç imzalama sertifikasına sahip bağlı olan bir taraf uygulaması 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. Program sınıfına aşağıdaki kodu ekleyerek X.509 sertifikanızın baytlarını okumak için ReadBytesFromPfxFile yardımcı işlevi oluşturun:

    //Helper Function to Read Bytes from Your .pfx file
    
            public static byte[] ReadBytesFromPfxFile(string pfxFileName, string protectionPassword)
            {
                byte[] signingCertificate;
                using (FileStream stream = File.OpenRead(pfxFileName))
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        signingCertificate = br.ReadBytes((int)stream.Length);
                    }
                }
    
                return signingCertificate;
            }
    
  3. Yeni bağlı olan taraf uygulamanızı ekleyin (aşağıdaki kodda gösterildiği gibi "MyRelyingPartyApplication" olarak adlandırabilir) ve Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek değişiklikleri kaydedebilirsiniz:

    Not

    yerine "Tam yol yazın. PFX dosyası", X.509 sertifikanızın tam yolunu içeren aşağıdaki kodda yer alır. Örneğin, ACS2ClientCertificate.cer adlı bir sertifika C: altına kaydedilirse, doğru değer "C:\ ACS2ClientCertificate.cer".

    Aşağıdaki kodda yer alan "MyCertificatePassword" yerine X.509 sertifikanızın doğru parolasını yazın.

                //Create Relying Party Application
    
                RelyingParty relyingParty = new RelyingParty()
                {
                    Name = "MyRelyingPartyApplication",
                    AsymmetricTokenEncryptionRequired = false,
                    TokenType = "SAML_2_0",
                    TokenLifetime = 3600
                };
    
                svc.AddToRelyingParties(relyingParty);
    
    
                //Create the Realm Address
    
                RelyingPartyAddress realmAddress = new RelyingPartyAddress()
                {
                    Address = "http://TestRelyingParty.com/Realm",
                    EndpointType = "Realm"
                };
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", realmAddress);
    
                //Create the Return URL Address
    
                RelyingPartyAddress replyAddress = new RelyingPartyAddress()
                {
                    Address = "http://TestRelyingParty.com/Reply",
                    EndpointType = "Reply"
                };
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", replyAddress);
    
                //Create a Signing Certificate
    
                X509Certificate2 cert = new X509Certificate2(@"Full path to your .PFX file", "MyCertificatePassword");
                DateTime startDate, endDate;
                startDate = cert.NotBefore.ToUniversalTime();
                endDate = cert.NotAfter.ToUniversalTime();
    
                string pfxFileName = @"Full path to your .PFX file";
                string pfxPassword = @"MyCertificatePassword";
    
                byte[] signingCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword);
    
                RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime(),
                    Type = "X509Certificate",
                    Usage = "Signing",
                    IsPrimary = true,
                    Value = signingCertificate,
                    Password = Encoding.UTF8.GetBytes("MyCertificatePassword")
                };
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
    
              // Create a Rule Group for This Relying Party Application
    
                RuleGroup rg = new RuleGroup();
                rg.Name = "SampleRuleGroup For " + relyingParty.Name;
                svc.AddToRuleGroups(rg);
    
                // Assign This New Rule Group to Your New Relying Party Application
    
                RelyingPartyRuleGroup relyingPartyRuleGroup = new RelyingPartyRuleGroup();
    
                svc.AddToRelyingPartyRuleGroups(relyingPartyRuleGroup);
                svc.AddLink(relyingParty, "RelyingPartyRuleGroups", relyingPartyRuleGroup);
                svc.AddLink(rg, "RelyingPartyRuleGroups", relyingPartyRuleGroup);
    
    
                //Save Your New Relying Party Application
    
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Ayrıca Bkz.

Kavramlar

ACS Nasıl Yapılır