Sdílet prostřednictvím


Postupy: Konfigurace zprostředkovatele identity OpenID pomocí služby ACS Management Service

Aktualizováno: 19. června 2015

Platí pro: Azure

Platí pro

  • Služba Microsoft® Azure™ Access Control (ACS)

  • OpenID 2.0

Souhrn

Toto téma popisuje základní kroky potřebné pro přidání zprostředkovatelů identity, které podporují protokol OpenID. Zprostředkovatelé identity OpenID je možné přidat do služby ACS pomocí služby pro správu. Zprostředkovatelé identity OpenID nelze přidat pomocí portálu pro správu služby ACS. V tomto tématu odkazujeme na specifikaci OpenID 2.0, protože se jedná o verzi specifikace, kterou služba ACS podporuje.

Obsah

  • Cíle

  • Přehled

  • Přehled kroků

  • Krok 1 – Shromažďování informací o konfiguraci

  • Krok 2 – Přidání odkazů na požadované služby a sestavení

  • Krok 3 – Implementace klienta služby pro správu

  • Krok 4 – Přidání zprostředkovatele identity

Cíle

  • Identifikujte požadované požadavky a informace o konfiguraci.

  • Uveďte kroky potřebné k přidání zprostředkovatele identity OpenID.

Přehled

Služba pro správu je webová služba, která je jednou z klíčových komponent služby ACS. Služba pro správu zveřejňuje funkce, které jsou k dispozici prostřednictvím uživatelského rozhraní portálu pro správu. Na portálu pro správu je možné provést také cokoli, co je možné provést pomocí služby pro správu. Přidání zprostředkovatelů identit OpenID ACS umožňuje ušetřit vývoj a údržbu mechanismu správy identit v internetovém měřítku. Pokud chcete provést úlohu přidání zprostředkovatele identity OpenID, napište kód, který se řídí konkrétními kroky. Toto téma popisuje tyto základní kroky.

Přehled kroků

  • Krok 1 – Shromažďování informací o konfiguraci

  • Krok 2 – Přidání odkazů na požadované služby a sestavení

  • Krok 3 – Implementace klienta služby pro správu

  • Krok 4 – Přidání zprostředkovatele identity

Krok 1 – Shromažďování informací o konfiguraci

Tento krok identifikuje a ukazuje, jak shromáždit požadované informace o konfiguraci. Potřebujete shromáždit následující informace:

  • Uživatelské jméno identity služby pro správuManagementClient.

  • Heslo identity služby pro správu – Získání hesla identity služby pro službu pro správu:

    1. Přihlaste se k portálu pro správu služeb Access Control.

    2. V části Správa klikněte na odkaz Služby pro správu .

    3. Na stránce Služba pro správu klikněte na odkaz ManagementClient (ManagementClient je skutečné uživatelské jméno služby).

    4. V části Přihlašovací údaje klikněte na symetrický klíč nebo odkaz Heslo . Hodnota v každé z nich je stejná. Toto je heslo.

  • Obor názvů vaší služby

  • Název hostitele ACS – obvykle accesscontrol.windows.net.

Po shromáždění požadovaných informací vytvořte ukázkovou konzolovou aplikaci, která spustí kód pro přidání zprostředkovatele identity OpenID:

  1. Otevřete Visual Studio ® 2010 a vytvořte nový projekt konzolové aplikace.

  2. Ve třídě Program přiřaďte informace shromážděné dříve proměnným oboru modulu pomocí kódu podobného následujícímu.

        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;

Krok 2 – Přidání odkazů na požadované služby a sestavení

Tento krok identifikuje a přidá požadované závislosti do služeb a sestavení.

Přidání požadovaných závislostí do služeb a sestavení

  1. Přidejte odkaz na System.Web.Extensions.

  2. Přidejte odkaz na službu pro správu. Adresa URL služby pro správu je jedinečná pro váš obor názvů a vypadá podobně jako následující:

    https:// UOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service

  3. Přidejte následující deklarace.

    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;
    

Všimněte si poslední deklarace ConsoleApplication1.ServiceReference1. Může se lišit v případě, že jste při vytváření konzolové aplikace změnili výchozí hodnoty nebo když jste přidali odkaz na službu pro správu.

Krok 3 – Implementace klienta služby pro správu

Tento krok vytvoří metodu zapouzdření implementace klienta služby pro správu.

Implementace klienta služby pro správu

  1. Do třídy Program přidejte následující metodu.

    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. Implementujte metodu GetTokenWithWritePermission a její pomocné metody. Přidá token SWT OAuth do hlavičky autorizace požadavku HTTP.

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

Krok 4 – Přidání zprostředkovatele identity

Tento krok přidá zprostředkovatele identity OpenID pomocí klienta služby pro správu, který jste vytvořili dříve.

Přidání zprostředkovatele identity OpenID

  1. Uvnitř metody Main inicializuje klienta služby pro správu.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Přidejte svého zprostředkovatele identity jako vystavitele.

                Issuer issuer = new Issuer
                {
                    Name = identityProviderName
                };
                svc.AddToIssuers(issuer);
                svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Vytvořte zprostředkovatele identity.

                var openId = new IdentityProvider
                {
                    DisplayName = identityProviderName,
                    Description = identityProviderName,
                    WebSSOProtocolType = "OpenId",
                    IssuerId = issuer.Id
                };
    
                svc.AddObject("IdentityProviders", openId);
    
  4. Aktualizujte přihlašovací adresu zprostředkovatele identity. V tomto cvičení použijete www.myopenid.com jako přihlašovací adresu. Ostatní zprostředkovatelé identity OpenID zahrnují Google a Yahoo!, a mají své vlastní přihlašovací adresy. Jsou https://www.google.com/accounts/o8/ud a https://open.login.yahooapis.com/openid/op/authv uvedeném pořadí.

                var openIdAddress = new IdentityProviderAddress
                {
                    Address = "https://www.myopenid.com/server",
                    EndpointType = "SignIn"
                };
    
                svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress);
                svc.SaveChanges();
    
  5. Zpřístupněte zprostředkovatele identity předávajícím stranám s výjimkou služby pro správu.

                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);