Dela via


Anvisningar: Använda ACS-hanteringstjänsten för att konfigurera Facebook som en Internet-identitetsprovider

Uppdaterad: 19 juni 2015

Gäller för: Azure

Gäller för

  • Microsoft® Azure™ Access Control Service (ACS)

  • Facebook

Sammanfattning

I det här avsnittet beskrivs de grundläggande steg som krävs för att lägga till Facebook som identitetsprovider. Facebook kan läggas till som en identitetsprovider till ACS med hjälp av hanteringsportalen eller automatiseras med ACS-hanteringstjänsten. Att arbeta med hanteringstjänsten är användbart, till exempel i scenarier när du skapar ett anpassat användargränssnitt för att hantera ACS eller när du automatiserar registrering av en ny klientorganisation för SaaS-lösningar (Programvara som en tjänst för flera innehavare).

Innehåll

  • Mål

  • Översikt

  • Sammanfattning av steg

  • Steg 1 – Samla in konfigurationsinformation

  • Steg 2 – Lägga till referenser till nödvändiga tjänster och sammansättningar

  • Steg 3 – Implementera hanteringstjänstproxyn

  • Steg 4 – Lägga till en identitetsprovider

  • Steg 5 – Testa ditt arbete

Mål

  • Identifiera nödvändiga krav och konfigurationsinformation.

  • Ange de steg som krävs för att lägga till Facebook som identitetsprovider.

  • Testa att konfigurationen lyckas.

Översikt

Hanteringstjänsten är en webbtjänst som är en av de viktigaste komponenterna i ACS. Hanteringstjänsten exponerar funktioner som är tillgängliga via användargränssnittet i hanteringsportalen. Allt som kan göras i hanteringsportalen kan också göras med hjälp av hanteringstjänsten. Genom att lägga till Facebook som identitetsprovider i ACS kan du spara på att utveckla och underhålla identitetshanteringsmekanismen i Internetskala. För att utföra uppgiften att konfigurera Facebook som identitetsprovider måste du skriva kod som följer specifika steg. Det här avsnittet beskriver de här grundläggande stegen.

Sammanfattning av steg

  • Steg 1 – Samla in konfigurationsinformation

  • Steg 2 – Lägga till referenser till nödvändiga tjänster och sammansättningar

  • Steg 3 – Implementera hanteringstjänstproxyn

  • Steg 4 – Lägga till en identitetsprovider

  • Steg 5 – Testa ditt arbete

Steg 1 – Samla in konfigurationsinformation

Det här steget identifierar och visar hur du samlar in nödvändig konfigurationsinformation. Du måste samla in följande information:

  • Användarnamn för hanteringstjänstidentitetManagementClient.

  • Lösenord för hanteringstjänstidentitet – Så här hämtar du lösenordet för tjänstidentiteten för hanteringstjänsten:

    1. Logga in på Access Control Service Management Portal.

    2. I avsnittet Administration klickar du på länken Hanteringstjänst .

    3. På sidan Hanteringstjänst klickar du på länken ManagementClient (ManagementClient är det faktiska användarnamnet för tjänsten).

    4. I avsnittet Autentiseringsuppgifter klickar du på länken Symmetrisk nyckel eller Lösenord . Värdet i varje är detsamma. Det här är lösenordet.

  • Tjänstens namnområde

  • ACS-värdnamn – vanligtvis accesscontrol.windows.net.

  • Facebooks program-ID och programhemlighet – Följ anvisningarna i Så här konfigurerar du Facebook som identitetsprovider.

När du har samlat in nödvändig information följer du dessa steg för att skapa ett exempelkonsolprogram som kör koden för att lägga till Facebook som identitetsprovider:

  1. Öppna Visual Studio ® 2010 och skapa ett nytt konsolprogramprojekt.

  2. I klassen Program tilldelar du informationen som samlats in tidigare till modulomfångsvariablerna med hjälp av kod som liknar följande.

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

Steg 2 – Lägga till referenser till nödvändiga tjänster och sammansättningar

Det här steget identifierar och lägger till de nödvändiga beroendena till tjänsterna och sammansättningarna.

Så här lägger du till nödvändiga beroenden i tjänsterna och sammansättningarna

  1. Lägg till en referens till System.Web.Extensions.

  2. Lägg till en tjänstreferens till hanteringstjänsten. Url:en för hanteringstjänsten är unik för ditt namnområde och ser ut ungefär så här:

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

  3. Lägg till följande deklarationer.

    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;
    

Observera den senaste deklarationen , ConsoleApplication1.ServiceReference1, det kan variera i ditt fall om du har ändrat standardvärdena när du skapar konsolprogrammet eller när du lägger till referensen till hanteringstjänsten.

Steg 3 – Implementera hanteringstjänstproxyn

Det här steget skapar en metod som kapslar in implementeringen av proxyn för hanteringstjänsten.

Så här implementerar du proxyn för hanteringstjänsten

  1. Lägg till följande metod i klassen Program.

    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. Implementera metoden GetTokenWithWritePermission och dess hjälpmetoder. Swt OAuth-token läggs till i auktoriseringshuvudet för HTTP-begäran.

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

Steg 4 – Lägga till en identitetsprovider

Det här steget lägger till Facebook som identitetsprovider med hjälp av proxyn för hanteringstjänsten som du skapade tidigare.

Lägga till Facebook som identitetsprovider

  1. I main-metoden initierar du hanteringstjänstproxyn.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Lägg till din identitetsprovider som utfärdare.

    Issuer issuer = new Issuer
    {
       Name = identityProviderName + “-” + facebookAppId
    };
    svc.AddToIssuers(issuer);
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Skapa en identitetsprovider.

    var facebook = new IdentityProvider
    {
        DisplayName = identityProviderName,
        LoginLinkName = "Facebook",
        LoginParameters = "email",
        WebSSOProtocolType = "Facebook",
        IssuerId = issuer.Id
    };
    
    svc.AddObject("IdentityProviders", facebook);
    
  4. Skapa en signeringsnyckel för identitetsprovidern baserat på det certifikat som du fick tidigare.

    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. Gör identitetsprovidern tillgänglig för förlitande parter, förutom hanteringstjänsten.

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

Steg 5 – Testa ditt arbete

Testa ditt arbete

  1. Logga in på Access Control Service Management Portal.

  2. På sidan Access Control Service klickar du på länken Regelgrupper i avsnittet Betrodda relationer.

  3. Klicka på någon av de tillgängliga reglerna.

  4. På sidan Redigera regelgrupp klickar du på länken Lägg till regel .

  5. På sidan Lägg till anspråksregel väljer du den nyligen tillagda identitetsprovidern i listrutan i avsnittet Anspråksutfärdare .

  6. Lämna resten av standardvärdena.

  7. Klicka på Spara.

Du har just skapat en genomströmningsregel för identitetsprovidern.