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änstidentitet – ManagementClient.
Lösenord för hanteringstjänstidentitet – Så här hämtar du lösenordet för tjänstidentiteten för hanteringstjänsten:
Logga in på Access Control Service Management Portal.
I avsnittet Administration klickar du på länken Hanteringstjänst .
På sidan Hanteringstjänst klickar du på länken ManagementClient (ManagementClient är det faktiska användarnamnet för tjänsten).
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:
Öppna Visual Studio ® 2010 och skapa ett nytt konsolprogramprojekt.
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
Lägg till en referens till System.Web.Extensions.
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
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
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; }
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
I main-metoden initierar du hanteringstjänstproxyn.
ManagementService svc = CreateManagementServiceClient();
Lägg till din identitetsprovider som utfärdare.
Issuer issuer = new Issuer { Name = identityProviderName + “-” + facebookAppId }; svc.AddToIssuers(issuer); svc.SaveChanges(SaveChangesOptions.Batch);
Skapa en identitetsprovider.
var facebook = new IdentityProvider { DisplayName = identityProviderName, LoginLinkName = "Facebook", LoginParameters = "email", WebSSOProtocolType = "Facebook", IssuerId = issuer.Id }; svc.AddObject("IdentityProviders", facebook);
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);
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
Logga in på Access Control Service Management Portal.
På sidan Access Control Service klickar du på länken Regelgrupper i avsnittet Betrodda relationer.
Klicka på någon av de tillgängliga reglerna.
På sidan Redigera regelgrupp klickar du på länken Lägg till regel .
På sidan Lägg till anspråksregel väljer du den nyligen tillagda identitetsprovidern i listrutan i avsnittet Anspråksutfärdare .
Lämna resten av standardvärdena.
Klicka på Spara.
Du har just skapat en genomströmningsregel för identitetsprovidern.