Sdílet prostřednictvím


Postupy: Konfigurace Facebooku jako zprostředkovatele internetových identit pomocí služby ACS Management Service

Aktualizováno: 19. června 2015

Platí pro: Azure

Platí pro

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

  • Facebook

Souhrn

Toto téma popisuje základní kroky potřebné pro přidání Facebooku jako zprostředkovatele identity. Facebook je možné přidat jako zprostředkovatele identity do služby ACS pomocí portálu pro správu nebo ho můžete automatizovat pomocí služby ACS Management Service. Práce se službou pro správu je užitečná například ve scénářích, kdy vytváříte vlastní uživatelské rozhraní pro správu služby ACS nebo při automatizaci onboardingu nového tenanta pro řešení SaaS (Software as a Service) s více tenanty.

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 proxy služby pro správu

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

  • Krok 5 – Testování práce

Cíle

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

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

  • Otestujte, zda je konfigurace úspěšná.

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í Facebooku jako zprostředkovatele identity do služby ACS vám umožní ušetřit vývoj a údržbu mechanismu správy identit v internetovém měřítku. Abyste mohli provést úlohu konfigurace Facebooku jako zprostředkovatele identity, musíte napsat 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 proxy služby pro správu

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

  • Krok 5 – Testování práce

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.

  • ID aplikace Facebook a tajný kód aplikace – postupujte podle pokynů v tématu Postupy: Konfigurace Facebooku jako zprostředkovatele identity.

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

  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 = "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";

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 v případě změny výchozích hodnot při vytváření konzolové aplikace nebo při přidávání odkazu na službu pro správu lišit.

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

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

Implementace proxy 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á Facebook jako zprostředkovatele identity pomocí proxy serveru služby pro správu, který jste vytvořili dříve.

Přidání Facebooku jako zprostředkovatele identity

  1. V metodě Main inicializuje proxy služby pro správu.

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

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

    var facebook = new IdentityProvider
    {
        DisplayName = identityProviderName,
        LoginLinkName = "Facebook",
        LoginParameters = "email",
        WebSSOProtocolType = "Facebook",
        IssuerId = issuer.Id
    };
    
    svc.AddObject("IdentityProviders", facebook);
    
  4. Vytvořte podpisový klíč zprostředkovatele identity na základě certifikátu, který jste získali dříve.

    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. 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 = facebook.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    

Krok 5 – Testování práce

Otestování práce

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

  2. Na stránce služby Access Control klikněte na odkaz Skupiny pravidel v části Vztahy důvěryhodnosti.

  3. Klikněte na některá z dostupných pravidel.

  4. Na stránce Upravit skupinu pravidel klikněte na odkaz Přidat pravidlo .

  5. Na stránce Přidat pravidlo deklarace identity zvolte nově přidaného zprostředkovatele identity z rozevíracího seznamu v části Vystavitel deklarací identity .

  6. Ponechte zbývající výchozí hodnoty.

  7. Klikněte na Uložit.

Právě jste vytvořili předávací pravidlo pro zprostředkovatele identity.