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
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)
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.)
Yönetim hizmeti'ne, Yönetimİstemci'ye ve ardından Parola'ya tıklayın.
Parola alanındaki değeri kopyalayın.
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
Visual Studio 2012'yi açın ve yüklü Windows şablonu altında yeni bir konsol uygulaması projesi oluşturun.
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
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.
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
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
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; }
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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; }
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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; }
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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; }
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);