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
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ı.
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.
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:
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.
Yönetim Hizmeti sayfasında, Yönetim Hizmeti Hesapları'nın altında Yönetimİstemci'ye tıklayın.
Yönetim Hizmeti Hesabını Düzenle sayfasında, Kimlik Bilgileri'nin altında Parola'ya tıklayın.
Yönetim Kimlik Bilgilerini Düzenle sayfasında Parola alanındaki değeri kopyalayın.
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.
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
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 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
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.
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
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
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 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
Program sınıfındaki Main yöntemine aşağıdaki kodu ekleyerek Yönetim Hizmeti istemcisini başlatın:
ManagementService svc = CreateManagementServiceClient();
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
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();
Aşağıdakilerden birini yapın:
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);
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);
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);
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);
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);