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:
Access Control Hizmet Yönetimi Portalı'nda oturum açın.
Yönetim bölümünde Yönetim Hizmeti bağlantısına tıklayın.
Yönetim Hizmeti sayfasında Yönetimİstemci bağlantısına tıklayın (ManagementClient, hizmetin gerçek kullanıcı adıdır).
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:
Visual Studio ® 2010'u açın ve yeni bir konsol uygulaması projesi oluşturun.
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
System.Web.Extensions'a başvuru ekleyin.
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.
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
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 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
Main yönteminde Yönetim Hizmeti ara sunucusunu başlatın.
ManagementService svc = CreateManagementServiceClient();
Kimlik sağlayıcınızı veren olarak ekleyin.
Issuer issuer = new Issuer { Name = identityProviderName + “-” + facebookAppId }; svc.AddToIssuers(issuer); svc.SaveChanges(SaveChangesOptions.Batch);
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);
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);
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
Access Control Hizmet Yönetimi Portalı'nda oturum açın.
Access Control Hizmeti sayfasında, Güven İlişkileri bölümündeki Kural Grupları bağlantısına tıklayın.
Kullanılabilir kurallardan herhangi birine tıklayın.
Kural Grubunu Düzenle sayfasında Kural Ekle bağlantısına tıklayın.
Talep Kuralı Ekle sayfasında, Talep Veren bölümündeki açılan listeden yeni eklenen kimlik sağlayıcısını seçin.
Varsayılan değerlerin geri kalanını bırakın.
Kaydet’e tıklayın.
Kimlik sağlayıcısı için bir geçiş kuralı oluşturdunuz.