Aracılığıyla paylaş


Nasıl yapılır: Facebook'un İnternet Kimlik Sağlayıcısı Olarak Yapılandırılması için ACS Yönetim Hizmeti'ni Kullanma

Güncelleştirme: 19 Haziran 2015

Şunlar için geçerlidir: Azure

Uygulanan Öğe

  • Microsoft® Azure™ Access Control Hizmeti (ACS)

  • Facebook

Özet

Bu konuda Facebook'un kimlik sağlayıcısı olarak eklenmesi için gereken temel adımlar özetlenmiştir. Facebook, Yönetim Portalı kullanılarak ACS'ye kimlik sağlayıcısı olarak eklenebilir veya ACS Yönetim Hizmeti ile otomatikleştirilebilir. Yönetim Hizmeti ile çalışmak, örneğin ACS'yi yönetmek için özel bir kullanıcı arabirimi oluştururken veya çok kiracılı Hizmet Olarak Yazılım (SaaS) çözümleri için yeni bir kiracının eklenmesini otomatikleştirirken yararlı olur.

İç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

  • Gerekli önkoşulları ve yapılandırma bilgilerini belirleyin.

  • Facebook'un kimlik sağlayıcısı olarak eklenmesi için gereken adımları listeleyin.

  • Yapılandırmanın başarılı olup olmadığını test edin.

Genel Bakış

Yönetim Hizmeti, ACS'nin temel bileşenlerinden biri olan bir web hizmetidir. Yönetim Hizmeti, Yönetim Portalı kullanıcı arabirimi aracılığıyla kullanılabilen işlevleri kullanıma sunar. Yönetim Portalı'nda gerçekleştirilebilecek her şey Yönetim Hizmeti kullanılarak da yapılabilir. Facebook'u ACS'ye kimlik sağlayıcısı olarak eklemek, İnternet ölçeğinin kimlik yönetimi mekanizmasını geliştirme ve koruma konusunda tasarruf etmenizi sağlar. Facebook'un kimlik sağlayıcısı olarak yapılandırılmasını sağlamak 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ı tanımlar ve gösterir. Aşağıdaki bilgileri toplamanız gerekir:

  • Yönetim Hizmeti kimlik kullanıcı adıManagementClient.

  • Yönetim Hizmeti kimlik parolası—Yönetim hizmetinin hizmet kimliği parolasını almak için:

    1. Access Control Hizmet Yönetimi Portalı'nda oturum açın.

    2. Yönetim bölümünde Yönetim Hizmeti bağlantısına tıklayın.

    3. Yönetim Hizmeti sayfasında Yönetimİstemci bağlantısına tıklayın (ManagementClient, hizmetin gerçek kullanıcı adıdır).

    4. Kimlik Bilgileri bölümünde Simetrik Anahtar'a veya Parola bağlantısına tıklayın. Her birindeki değer aynıdır. Parola bu.

  • Hizmetinizin ad alanı

  • ACS ana bilgisayar adı—Genellikle accesscontrol.windows.net.

  • Facebook Uygulama Kimliği ve Uygulama Gizli AnahtarıNasıl yapılır: Facebook'u Kimlik Sağlayıcısı olarak yapılandırma başlığı altındaki yönergeleri izleyin.

Gerekli bilgileri topladıktan sonra, Facebook'u kimlik sağlayıcısı olarak ekleme kodunu çalıştıracak bir örnek konsol uygulaması oluşturmak için şu adımları izleyin:

  1. Visual Studio ® 2010'u açın ve yeni bir konsol uygulaması projesi oluşturun.

  2. Program sınıfında, aşağıdakine benzer bir kod kullanarak daha önce toplanan bilgileri modül kapsamı değişkenlerine atayın.

static string serviceIdentityUsernameForManagement = "ManagementClient";
static string serviceIdentityPasswordForManagement = "My Password for my ManagementClient";

static string serviceNamespace = "MyNameSpaceNoDots";
static string acsHostName = "accesscontrol.windows.net";
static string acsManagementServicesRelativeUrl = "v2/mgmt/service/";


static string cachedSwtToken;
static string identityProviderName = "Facebook";

static string facebookAppId = "Your Facebook AppID";
static string facebookAppSecret = "Your Facebook Secret";

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;
    using System.Globalization;
    using System.Runtime.Serialization.Json;
    using ConsoleApplication1.ServiceReference1;
    

Konsol uygulamanızı oluştururken veya yönetim hizmetine başvuru eklerken varsayılan değerleri değiştirdiyseniz, son bildirim olan ConsoleApplication1.ServiceReference1 bildirimine dikkat edin.

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 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 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, "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;
    
            }
    
    

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

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

Facebook'ı kimlik sağlayıcısı olarak eklemek için

  1. Main yönteminde 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 + “-” + facebookAppId
    };
    svc.AddToIssuers(issuer);
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Kimlik sağlayıcısı oluşturma.

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

    var facebookKeys = new[]
        {
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationId",
                    Value = Encoding.UTF8.GetBytes(facebookAppId)
                },
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationSecret",
                    Value = Encoding.UTF8.GetBytes(facebookAppSecret)
                }
        };
    
    foreach (var key in facebookKeys)
    {
        svc.AddRelatedObject(facebook, "IdentityProviderKeys", key);
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  5. 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 = facebook.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 Hizmet Yönetimi Portalı'nda oturum açın.

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

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

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

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

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

  7. Kaydet’e tıklayın.

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