Share via


Nasıl yapılır: AD FS 2.0'ı Enterprise Kimlik Sağlayıcısı Olarak Yapılandırmak için ACS Yönetim Hizmeti Kullanma

Güncelleştirme: 19 Haziran 2015

Şunlar için geçerlidir: Azure

Uygulanan Öğe

  • Microsoft® Azure™ Access Control Hizmeti (ACS)

  • Microsoft Active Directory® Federasyon Hizmetleri (AD FS) 2.0

Özet

Bu konuda, kimlik sağlayıcısının bir ad alanına veya bağlı olan taraf uygulamasına nasıl ekleneceği açıklanmaktadır. Bu görevi gerçekleştirmek için ACS Yönetim Hizmeti'ni kullanabilirsiniz. Yönetim Hizmeti özellikle ACS'yi yönetmek için özel bir kullanıcı arabirimi oluştururken ve çok kiracılı Hizmet Olarak Yazılım (SaaS) çözümleri için yeni kiracıların eklenmesini otomatikleştirirken kullanışlıdır.

İçindekiler

  • Hedefler

  • Genel Bakış

  • Adımların Özeti

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

  • 2. Adım – Gerekli Hizmetlere ve Derlemelere BaşvuruLar Ekleme

  • 3. Adım – Yönetim Hizmeti Ara Sunucusunu Uygulama

  • 4. Adım – Kimlik Sağlayıcısı Ekleme

  • 5. Adım – Çalışmanızı Test Etme

Hedefler

  • Gereksinimleri ve yapılandırma bilgilerini tanımlama.

  • Gerekli adımları listeleyin.

  • Yapılandırmanın başarılı olduğunu doğrulayın.

Genel Bakış

ACS Yönetim Hizmeti, ACS özelliklerini koda sunan bir web hizmetidir. ACS Yönetim Hizmeti, ACS Yönetim Portalı kullanıcı arabiriminde bulunan özellik alt kümesi de dahil olmak üzere tüm ACS özelliklerine erişebilir.

Microsoft'u ACS'ye kimlik sağlayıcısı olarak eklemek, bulut tabanlı çözümler için kurumsal kimlik yönetimine yapılan yatırımı yeniden kullanmanıza olanak tanır. Kimlik sağlayıcısı olarak yapılandırmak için belirli adımları izleyen kod yazmanız gerekir. Bu konuda bu temel adımlar özetlenmiştir.

Adımların Özeti

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

  • 2. Adım – Gerekli Hizmetlere ve Derlemelere BaşvuruLar Ekleme

  • 3. Adım – Yönetim Hizmeti Ara Sunucusunu Uygulama

  • 4. Adım – Kimlik Sağlayıcısı Ekleme

  • 5. Adım – Çalışmanızı Test Etme

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

Bu adım, gerekli yapılandırma bilgilerinin nasıl toplayacağını açıklar. Aşağıdaki bilgileri toplamanız gerekir:

  • Yönetim Hizmeti kimlik kullanıcı adı. Varsayılan değer ManagementClient'tır.

  • Yönetim Hizmeti kimlik parolası.

  • Ad alanı adı.

  • ACS ana bilgisayar adı: accesscontrol.windows.net

  • İmzalama sertifika dizesi: Dağıtımınızdan AD FS imzalama sertifika dizesini alın.

Yönetim Hizmeti kimlik kullanıcı adını ve parolasını bulmak için aşağıdaki yordamı kullanın.

  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) 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 yönet'e tıklayın.)

  2. Yönetim Hizmeti'ne tıklayın ve ardından ManagementClient gibi bir yönetim hizmeti seçin.

  3. Ad alanının değeri Yönetim Hizmeti kimlik kullanıcı adıdır.

  4. Kimlik Bilgileri bölümünde Parola'ya tıklayın. Parola alanındaki değer Yönetim Hizmeti kimlik parolasıdır.

Gerekli bilgileri topladıktan sonra, kimlik sağlayıcısı olarak eklenecek kodu yürütecek bir örnek konsol uygulaması oluşturmak için şu adımları izleyin:

  1. Visual Studio başlatın ve yeni bir konsol uygulaması projesi oluşturun.

  2. Program sınıfında, yapılandırma bilgileri değerlerini modül kapsamına sahip değişkenlere atayın. Aşağıdaki kod örneği bunun nasıl yapılabilmesini göstermektedir.

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "ManagementClientPasswordValue";
    
    static string serviceNamespace = "MyNameSpaceNoDots";
    static string acsHostName = "accesscontrol.windows.net";
    
    static string signingCertificate = "Very long string representing ADFS signing certificate";
    
    static string cachedSwtToken;
    static string identityProviderName = "My Other ADFS Identity Provider";
    

2. Adım – Gerekli Hizmetlere ve Derlemelere BaşvuruLar Ekleme

Bu adım, gerekli bağımlılıkları tanımlar ve hizmetlere ve derlemelere ekler.

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

  1. System.Web.Extensions'a başvuru ekleyin.

  2. 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.

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    

3. Adım – Yönetim Hizmeti Ara Sunucusunu Uygulama

Bu adım, Yönetim Hizmeti ara sunucusunun uygulamasını kapsülleyen bir yöntem oluşturur.

Yönetim Hizmeti ara sunucusunu uygulamak için

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

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceHead = "v2/mgmt/service/";
                string managementServiceEndpoint = 
    string.Format("https://{0}.{1}/{2}", 
    serviceNamespace, 
    acsHostName, 
    managementServiceHead);
                ManagementService managementService = 
    new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
  2. GetTokenWithWritePermission yöntemini ve yardımcı yöntemlerini uygulayın. HTTP isteğinin Yetkilendirme ü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, 
     string.Format("OAuth {0}", 
     cachedSwtToken));
            }
    
            private static string GetTokenFromACS()
            {
                // request a token from ACS
                WebClient client = new WebClient();
                client.BaseAddress = string.Format("https://{0}.{1}", 
          serviceNamespace, 
          acsHostName);
    
                NameValueCollection values = new NameValueCollection();
    
                values.Add("grant_type", "password");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("username", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("password", serviceIdentityPasswordForManagement);
    
                byte[] responseBytes = 
    client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", 
          "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;
    
            }
    

4. Adım – Kimlik Sağlayıcısı Ekleme

Bu adım, daha önce oluşturduğunuz Yönetim Hizmeti ara sunucusunu kullanarak bir kimlik sağlayıcısı olarak ekler.

AD FS 2.0'ı kimlik sağlayıcısı olarak eklemek için

  1. Yönetim Hizmeti ara sunucusunu başlatın.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Kimlik sağlayıcınızı veren olarak ekleyin.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Kimlik sağlayıcısı oluşturma.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
  4. Daha önce aldığınız sertifikayı temel alan bir kimlik sağlayıcısı imzalama anahtarı oluşturun.

    IdentityProviderKey identityProviderKey = new IdentityProviderKey()
    {
        DisplayName = "SampleIdentityProviderKeyDisplayName",
        Type = "X509Certificate",
        Usage = "Signing",
        Value = Convert.FromBase64String(signingCertificate),
        IdentityProvider = identityProvider,
        StartDate = startDate,
        EndDate = endDate,
    };
          svc.AddRelatedObject(identityProvider, 
    "IdentityProviderKeys", 
    identityProviderKey);
    
  5. Kimlik sağlayıcısı oturum açma adresini güncelleştirin.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  6. Kimlik sağlayıcısını Yönetim Hizmeti dışında bağlı olan tarafların kullanımına açın.

    foreach (RelyingParty rp in svc.RelyingParties)
    {
        // skip the built-in management RP. 
        if (rp.Name != "AccessControlManagement")
        {
            svc.AddToRelyingPartyIdentityProviders(new RelyingPartyIdentityProvider()
            {
                IdentityProviderId = identityProvider.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    

5. Adım – Çalışmanızı Test Etme

Çalışmanızı test etmek için

  1. Access Control Hizmeti sayfasında, Güven İlişkileri bölümündeki Kural Grupları bağlantısına tıklayın.

  2. Kullanılabilir kurallardan herhangi birine tıklayın.

  3. Kural Grubunu Düzenle sayfasında Kural Ekle bağlantısına tıklayın.

  4. Talep Kuralı Ekle sayfasında, Talep Veren bölümündeki açılan listeden yeni eklenen kimlik sağlayıcısını seçin.

  5. Varsayılan değerlerin geri kalanını bırakın.

  6. Kaydet’e tıklayın.

Kimlik sağlayıcısı için bir geçiş kuralı oluşturdunuz.