Share via


Nasıl yapılır: OpenID Kimlik Sağlayıcısı 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)

  • OpenID 2.0

Özet

Bu konuda, OpenID protokolunu destekleyen kimlik sağlayıcıları eklemek için gereken temel adımlar özetlenmiştir. OpenID kimlik sağlayıcıları, Yönetim Hizmeti kullanılarak ACS'ye eklenebilir. OpenID kimlik sağlayıcıları ACS Yönetim Portalı kullanılarak eklenemez. AcS'nin desteklediği belirtim sürümü olduğundan, bu konuda OpenID 2.0 belirtimine başvuracağız.

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

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

Hedefler

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

  • OpenID kimlik sağlayıcısı eklemek için gereken adımları listeleyin.

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şlevselliği kullanıma sunar. Yönetim Portalı'nda gerçekleştirilebilecek her şey Yönetim Hizmeti kullanılarak da yapılabilir. OpenID kimlik sağlayıcıları ACS eklemek, İnternet ölçeğinin kimlik yönetimi mekanizmasını geliştirme ve koruma konusunda tasarruf etmenizi sağlar. OpenID kimlik sağlayıcısı ekleme görevini gerçekleştirmek için belirli adımları izleyen kod yazın. 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 İstemcisini Uygulama

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

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.

Gerekli bilgileri topladıktan sonra, OpenID kimlik sağlayıcısı 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 = "...update to your password...";

        static string serviceNamespace = "...update to your namespace...";
        static string acsHostName = "accesscontrol.windows.net";
        static string acsManagementServicesRelativeUrl = "v2/mgmt/service/";

        static string identityProviderName = "My Open ID Identity Provider";

        static string cachedSwtToken;

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;
    

Son bildirim olan ConsoleApplication1.ServiceReference1'e dikkat edin. Konsol uygulamanızı oluştururken veya yönetim hizmetine başvuru eklediğinizde varsayılan değerleri değiştirdiyseniz bu durum sizin durumunuzda farklılık gösterebilir.

3. Adım – Yönetim Hizmeti İstemcisini Uygulama

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

Yönetim Hizmeti istemcisini 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 istemcisini kullanarak bir OpenID kimlik sağlayıcısı ekler.

OpenID kimlik sağlayıcısı eklemek için

  1. Main yönteminin içinde Yönetim Hizmeti istemcisini 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.

                var openId = new IdentityProvider
                {
                    DisplayName = identityProviderName,
                    Description = identityProviderName,
                    WebSSOProtocolType = "OpenId",
                    IssuerId = issuer.Id
                };
    
                svc.AddObject("IdentityProviders", openId);
    
  4. Kimlik sağlayıcısı oturum açma adresini güncelleştirin. Bu alıştırmada oturum açma adresi olarak www.myopenid.com kullanacaksınız. Diğer OpenID kimlik sağlayıcıları Arasında Google ve Yahoo! bulunur ve kendi oturum açma adresleri vardır. Bunlar sırasıyla ve https://open.login.yahooapis.com/openid/op/authşeklindedirhttps://www.google.com/accounts/o8/ud.

                var openIdAddress = new IdentityProviderAddress
                {
                    Address = "https://www.myopenid.com/server",
                    EndpointType = "SignIn"
                };
    
                svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress);
                svc.SaveChanges();
    
  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 = openId.Id,
                            RelyingPartyId = rp.Id
                        });
                    }
                }
    
                svc.SaveChanges(SaveChangesOptions.Batch);