Share via


Nasıl yapılır: Sertifikaları ve Anahtarları 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ı veya ACS Yönetim Hizmeti'ni kullanarak ACS sertifikalarını ve anahtarları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.

Sertifikaları ve anahtarları yapılandırmak için ACS Yönetim Portalı'nı kullanma hakkında daha fazla bilgi için bkz. Sertifikalar ve Anahtarlar.

ACS Yönetim Hizmetini Kullanarak Sertifikaları ve Anahtarları 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 sertifikaları ve anahtarları 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 Bütünleştirilmiş Kodlara Başvuru Ekleme

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

  • 5. Adım - Sertifikaları ve Anahtarları Yükleme

    • Access Control Ad Alanınız için Belirteç İmzalama Sertifikası Ekleme

    • Bağlı Olan Taraf Uygulaması için Belirteç İmzalama Sertifikası Ekleme

    • Access Control Ad Alanınız için Belirteç İmzalama Simetrik Anahtarı Ekleme

    • Bağlı Olan Taraf Uygulaması için Belirteç İmzalama Simetrik Anahtarı Ekleme

    • Belirteç Şifreleme Sertifikası Ekleme

    • Belirteç Şifre Çözme Sertifikası Ekleme

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

Gerekli yapılandırma bilgilerini toplamak için ACS Yönetim Portalı'nı kullanabilirsiniz. Daha fazla bilgi için bkz. ACS Yönetim Portalı.

ACS yapılandırma bilgilerini toplamak için

  1. Microsoft Azure Yönetim Portalına ()https://manage.WindowsAzure.com gidin, oturum açın ve Active Directory'ye tıklayın. (Sorun giderme ipucu: "Active Directory" öğesi eksik veya kullanılamıyor)

  2. Access Control ad alanını yönetmek için ad alanını seçin ve yönet'e tıklayın. (Veya Ad Alanları Access Control tıklayın, ad alanını seçin ve ardından Yönet'e tıklayın.)

  3. Yönetim hizmeti'ne, Yönetimİstemci'ye ve ardından Parola'ya tıklayın.

  4. Parola alanındaki değeri kopyalayın.

  5. Yönetim hizmeti'ne tıklayın. Hizmet ad alanınızın ve ACS ana bilgisayar adınızın değerini alın. Yönetim Hizmeti URL'niz ise http://contoso.accesscontrol.windows.netad alanı contoso ve ana bilgisayar adı 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 Bütünleştirilmiş Kodlara Başvuru Ekleme

Bu adımda, gerekli bağımlılıkları tanımlar 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 uygulamanızın adına sağ tıklamanız, Özellikler'i seçmeniz ve örnek uygulamanızın hedef çerçevesini .NET Framework 4 İstemci Profilinden (yeni bir 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:

    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;
    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 – Sertifika ve Anahtar Ekleme

Access Control ad alanınız için Belirteç İmzalama Sertifikası Ekleme

Bu örnekte, Access Control ad alanınız için bir X.509 imzalama sertifikası oluşturursunuz.

Access Control ad alanına bağlı olan tüm taraf uygulamaları için belirteç imzalama sertifikası 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ızdaki baytları 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. Belirteç imzalama X.509 sertifikası eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

    Not

    "Tam yol yerine öğesini yazın. PFX dosyası", X.509 sertifikanızın geçerli tam yolunu içerir. Örneğin, "C:\ ACS2ClientCertificate.pfx".

    "MyCertificatePassword" yerine X.509 sertifikanızın parolasını yazın.

    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);
    
    ServiceKey serviceKey = new ServiceKey()
                {
                    Type = "X509Certificate",
                    Usage = "Signing",
                    Value = signingCertificate,
                      Password = Encoding.UTF8.GetBytes("MyCertificatePassword"),
                      IsPrimary = false,
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Bağlı Olan Taraf Uygulaması için Belirteç İmzalama Sertifikası Ekleme

Bu örnekte, belirli bir bağlı olan taraf uygulamasına atanmış bir X.509 imzalama sertifikası oluşturursunuz.

Bağlı olan taraf uygulaması için belirteç imzalama sertifikası ekleme

  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. Belirteç imzalama X.509 sertifikası eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

    Not

    "Tam yol yerine öğesini yazın. PFX dosyası", X.509 sertifikanızın tam yolunu içerir. Örneğin, "C:\ ACS2ClientCertificate.pfx".

    "MyCertificatePassword" yerine X.509 sertifikanızın parolasını yazın.

    "MyRelyingPartyApplication" yerine bağlı olan taraf uygulamasının adını yazın.

    //Select an existing Relying Party Application by its name
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
    
               // Add 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")
                };
    
    // Add the new signing certificate to the selected Relying Party Application
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
    
    
                //Save your relying party application
    
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Access Control ad alanınız için Belirteç İmzalama Simetrik Anahtarı Ekleme

Bu örnekte, bu imzalama simetrik anahtarını Access Control ad alanınıza atarsınız.

Access Control ad alanınız için belirteç imzalama simetrik anahtarı 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. Belirteç imzalama simetrik anahtarı eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

           string symKey = "SampleTokenSigningSymmetricKey";
                DateTime startDate, endDate;
                startDate = DateTime.UtcNow;
                endDate = DateTime.MaxValue;
    
                ServiceKey serviceKey = new ServiceKey()
                {
                    
                    Type = "Symmetric",
                    Usage = "Signing",
                    Value = Encoding.UTF8.GetBytes(symKey),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Bağlı Olan Taraf Uygulaması için Belirteç İmzalama Simetrik Anahtarı Ekleme

Bu örnekte, yeni imzalama simetrik anahtarınızı belirli bir bağlı olan taraf uygulamasına atarsınız.

Bağlı olan taraf uygulaması için belirteç imzalama simetrik anahtarı 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. Belirteç imzalama simetrik anahtarı eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

          //Select a relying party application
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
    
               // Create a symmetric key
    
                string symKey = "SampleTokenSigningSymmetricKey";
                DateTime startDate, endDate;
                startDate = DateTime.UtcNow;
                endDate = DateTime.MaxValue;
    
                RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
    
                    Type = "Symmetric",
                    Usage = "Signing",
                    Value = Encoding.UTF8.GetBytes(symKey),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
    
                //Assign this symmetric key to the selected relying party application 
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
                   //Save your symmetric key
    
                svc.SaveChanges(SaveChangesOptions.Batch);        
    

Belirteç Şifreleme Sertifikası Ekleme

Bu örnekte, belirli bir bağlı olan taraf uygulaması için X.509 belirteç şifreleme sertifikası ekleyeceksiniz.

Bağlı olan taraf uygulamasına belirteç şifreleme sertifikası 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. Belirteç şifrelemesi X.509 sertifikası eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

    Not

    "Tam yol yerine öğesini yazın. CER dosyası", X.509 sertifikasının tam yolunu içerir. Örneğin, "C:\ ACS2ClientCertificate.cer".

    "MyCertificatePassword" yerine X.509 sertifikasının parolasını yazın.

    "MyRelyingPartyApplication" yerine bağlı olan taraf uygulamasının adını yazın.

    //Select a relying party application
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
    
               // Add an encryption certificate
    
                X509Certificate2 cert = new X509Certificate2(@"Full path to your .CER file");
                DateTime startDate, endDate; 
                  startDate = cert.NotBefore;
                  endDate = cert.NotAfter;
    
                RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
                    Type = "X509Certificate",
                    Usage = "Encrypting",
                    Value = cert.GetRawCertData(),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
    
                //Assign this encryption certificate to the selected relying party application 
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
                   //Save your encryption certificate
    
                svc.SaveChanges(SaveChangesOptions.Batch);     
    

Belirteç Şifre Çözme Sertifikası Ekleme

Bu örnekte, Access Control ad alanınıza atanmış bir X.509 belirteci şifre çözme sertifikası eklersiniz.

Access Control ad alanına bağlı olan tüm taraf uygulamaları için belirteç imzalama sertifikası 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[] decryptionCertificate;
                using (FileStream stream = File.OpenRead(pfxFileName))
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        decryptionCertificate = br.ReadBytes((int)stream.Length);
                    }
                }
                return decryptingCertificate;
            }
    
  3. Belirteç imzalama X.509 sertifikası eklemek için Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyin:

    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.pfx adlı bir sertifika C: altına kaydedilirse, doğru değer "C:\ ACS2ClientCertificate.pfx".

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

    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[] decryptionCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword);
    
    ServiceKey serviceKey = new ServiceKey()
                {
                    Type = "X509Certificate",
                    Usage = "Encrypting",
                    Value = decryptionCertificate,
                      Password = Encoding.UTF8.GetBytes("MyCertificatePassword"),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    

Ayrıca Bkz.

Kavramlar

ACS Nasıl Yapılır