Procedure: ACS Management Service gebruiken om Facebook te configureren als een internetprovider
Bijgewerkt: 19 juni 2015
Van toepassing op: Azure
Van toepassing op
Microsoft® Azure™ Access Control Service (ACS)
Facebook
Samenvatting
In dit onderwerp worden de basisstappen beschreven die nodig zijn voor het toevoegen van Facebook als id-provider. Facebook kan worden toegevoegd als id-provider aan ACS met behulp van de beheerportal of kan worden geautomatiseerd met de ACS-beheerservice. Werken met de beheerservice is bijvoorbeeld handig in scenario's waarin u een aangepaste gebruikersinterface bouwt voor het beheren van ACS of bij het automatiseren van de onboarding van een nieuwe tenant voor SaaS-oplossingen (MultiTenant Software as a Service).
Inhoud
Doelen
Overzicht
Samenvatting van de stappen
Stap 1: configuratiegegevens verzamelen
Stap 2: Verwijzingen toevoegen aan de vereiste services en assembly's
Stap 3: de beheerserviceproxy implementeren
Stap 4: een id-provider toevoegen
Stap 5: Uw werk testen
Doelen
Identificeer de vereiste vereisten en configuratiegegevens.
Vermeld de stappen die nodig zijn om Facebook toe te voegen als id-provider.
Test of de configuratie is geslaagd.
Overzicht
Management Service is een webservice die een van de belangrijkste onderdelen van ACS is. De beheerservice biedt functionaliteit die beschikbaar is via de gebruikersinterface van de beheerportal. Alles wat u in de beheerportal kunt doen, kunt u ook doen met behulp van de beheerservice. Door Facebook toe te voegen als id-provider aan ACS, kunt u besparen op het ontwikkelen en onderhouden van het mechanisme voor identiteitsbeheer op internetschaal. Als u de taak van het configureren van Facebook als id-provider wilt uitvoeren, moet u code schrijven die volgt op specifieke stappen. In dit onderwerp worden deze basisstappen beschreven.
Samenvatting van de stappen
Stap 1: configuratiegegevens verzamelen
Stap 2: Verwijzingen toevoegen aan de vereiste services en assembly's
Stap 3: de beheerserviceproxy implementeren
Stap 4: een id-provider toevoegen
Stap 5: Uw werk testen
Stap 1: configuratiegegevens verzamelen
Deze stap identificeert en laat zien hoe u de vereiste configuratiegegevens verzamelt. U moet de volgende informatie verzamelen:
Gebruikersnaam voor beheerservice-identiteit: ManagementClient.
Identiteitswachtwoord voor beheerservice: als u het wachtwoord voor de service-id voor de beheerservice wilt ophalen:
Meld u aan bij de Access Control Service Management-portal.
Klik in de sectie Beheer op de koppeling Beheerservice .
Klik op de pagina Beheerservice op de koppeling ManagementClient (ManagementClient is de werkelijke gebruikersnaam voor de service).
Klik in de sectie Referenties op de symmetrische sleutel of de koppeling Wachtwoord . De waarde in elk is hetzelfde. Dit is het wachtwoord.
De naamruimte van uw service
ACS-hostnaam: meestal accesscontrol.windows.net.
Facebook-toepassings-id en toepassingsgeheim: Volg de instructies in How to: Configure Facebook as an Identity Provider.
Nadat u de vereiste gegevens hebt verzameld, volgt u deze stappen om een voorbeeldconsoletoepassing te maken waarmee de code wordt uitgevoerd voor het toevoegen van Facebook als id-provider:
Open Visual Studio ® 2010 en maak een nieuw consoletoepassingsproject.
Wijs in de klasse Program de eerder verzamelde gegevens toe aan de modulebereikvariabelen, met behulp van code die vergelijkbaar is met de volgende.
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";
Stap 2: Verwijzingen toevoegen aan de vereiste services en assembly's
Deze stap identificeert en voegt de vereiste afhankelijkheden toe aan de services en assembly's.
De vereiste afhankelijkheden toevoegen aan de services en assembly's
Voeg een verwijzing toe naar System.Web.Extensions.
Voeg een servicereferentie toe aan de beheerservice. De URL van de managementservice is uniek voor uw naamruimte en ziet er ongeveer als volgt uit:
https:// YOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service
Voeg de volgende declaraties toe.
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;
Zoals u ziet, kan de laatste declaratie ConsoleApplication1.ServiceReference1 verschillen in uw geval als u de standaardwaarden hebt gewijzigd bij het maken van uw consoletoepassing of bij het toevoegen van de verwijzing naar de beheerservice.
Stap 3: de beheerserviceproxy implementeren
Met deze stap maakt u een methode die de implementatie van de Management Service-proxy inkapselt.
De Management Service-proxy implementeren
Voeg de volgende methode toe aan de klasse 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; }
Implementeer de methode GetTokenWithWritePermission en de bijbehorende helpermethoden. Hiermee wordt het SWT OAuth-token toegevoegd aan de autorisatieheader van de HTTP-aanvraag.
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; }
Stap 4: een id-provider toevoegen
Met deze stap wordt Facebook toegevoegd als id-provider met behulp van de Management Service-proxy die u eerder hebt gemaakt.
Facebook toevoegen als id-provider
Initialiseer in de main-methode de Beheerserviceproxy.
ManagementService svc = CreateManagementServiceClient();
Voeg uw id-provider toe als de verlener.
Issuer issuer = new Issuer { Name = identityProviderName + “-” + facebookAppId }; svc.AddToIssuers(issuer); svc.SaveChanges(SaveChangesOptions.Batch);
Maak een id-provider.
var facebook = new IdentityProvider { DisplayName = identityProviderName, LoginLinkName = "Facebook", LoginParameters = "email", WebSSOProtocolType = "Facebook", IssuerId = issuer.Id }; svc.AddObject("IdentityProviders", facebook);
Maak een ondertekeningssleutel van een id-provider op basis van het certificaat dat u eerder hebt verkregen.
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);
Maak de id-provider beschikbaar voor relying party's, met uitzondering van de Beheerservice.
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);
Stap 5: Uw werk testen
Uw werk testen
Meld u aan bij de Access Control Service Management-portal.
Klik op de pagina Access Control Service op de koppeling Regelgroepen in de sectie Vertrouwensrelaties.
Klik op een van de beschikbare regels.
Klik op de pagina Regelgroep bewerken op de koppeling Regel toevoegen .
Kies op de pagina Claimregel toevoegen de zojuist toegevoegde id-provider in de vervolgkeuzelijst in de sectie Claimverlener .
Laat de rest van de standaardwaarden staan.
Klik op Opslaan.
U hebt zojuist een passthrough-regel voor de id-provider gemaakt.