Anvisningar: Använda ACS-hanteringstjänsten för att konfigurera AD FS 2.0 som en företagsidentitetsprovider
Uppdaterad: 19 juni 2015
Gäller för: Azure
Gäller för
Microsoft® Azure™ Access Control Service (ACS)
Microsoft Active Directory® Federation Services (AD FS) 2.0
Sammanfattning
Det här avsnittet beskriver hur du lägger till identitetsprovidern i ett namnområde eller ett program för förlitande part. Om du vill utföra den här uppgiften kan du använda ACS-hanteringstjänsten. Hanteringstjänsten är särskilt användbar när du skapar ett anpassat användargränssnitt för att hantera ACS och när du automatiserar tillägget av nya klienter för SaaS-lösningar (Programvara som en tjänst för flera klientorganisationer).
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 krav och konfigurationsinformation.
Ange de steg som krävs.
Kontrollera att konfigurationen har slutförts.
Översikt
ACS-hanteringstjänsten är en webbtjänst som exponerar ACS-funktioner för kod. ACS-hanteringstjänsten har åtkomst till alla ACS-funktioner, inklusive funktionsunderuppsättningen som är tillgänglig i användargränssnittet för ACS-hanteringsportalen.
Genom att lägga till Microsoft som identitetsprovider i ACS kan du återanvända investeringen i företagets identitetshantering för molnbaserade lösningar. Om du vill konfigurera 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 beskriver hur du samlar in nödvändig konfigurationsinformation. Du måste samla in följande information:
Användarnamn för hanteringstjänstidentitet. Standardvärdet är ManagementClient.
Identitetslösenord för hanteringstjänsten.
Namnområdesnamn.
ACS-värdnamn: accesscontrol.windows.net
Signeringscertifikatsträng: Hämta AD FS-signeringscertifikatsträngen från distributionen.
Använd följande procedur för att hitta användarnamnet och lösenordet för hanteringstjänstens identitet.
Gå till Microsoft Azure Management Portal (https://manage.WindowsAzure.com), logga in och klicka sedan på Active Directory. (Felsökningstips: "Active Directory"-objektet saknas eller är inte tillgängligt) Om du vill hantera ett Access Control namnområde väljer du namnområdet och klickar sedan på Hantera. (Eller klicka på Access Control namnområden, välj namnområdet och klicka sedan på Hantera.)
Klicka på Hanteringstjänst och välj sedan en hanteringstjänst, till exempel ManagementClient.
Värdet för fältet Namn är användarnamnet för hanteringstjänstens identitet.
I avsnittet Autentiseringsuppgifter klickar du på Lösenord. Värdet i lösenordsfältet är identitetslösenordet för hanteringstjänsten.
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 som ska läggas till som en identitetsprovider:
Starta Visual Studio och skapa ett nytt konsolprogramprojekt.
I klassen Program tilldelar du konfigurationsinformationsvärdena till variabler med modulomfång. Följande kodexempel visar hur detta kan göras.
static string serviceIdentityUsernameForManagement = "ManagementClient"; static string serviceIdentityPasswordForManagement = "ManagementClientPasswordValue"; static string serviceNamespace = "MyNameSpaceNoDots"; static string acsHostName = "accesscontrol.windows.net"; static string signingCertificate = "Very long string representing ADFS signing certificate"; static string cachedSwtToken; static string identityProviderName = "My Other ADFS Identity Provider";
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;
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 managementServiceHead = "v2/mgmt/service/"; string managementServiceEndpoint = string.Format("https://{0}.{1}/{2}", serviceNamespace, acsHostName, managementServiceHead); 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, string.Format("OAuth {0}", cachedSwtToken)); } private static string GetTokenFromACS() { // request a token from ACS WebClient client = new WebClient(); client.BaseAddress = string.Format("https://{0}.{1}", serviceNamespace, acsHostName); NameValueCollection values = new NameValueCollection(); values.Add("grant_type", "password"); values.Add("client_id", serviceIdentityUsernameForManagement); values.Add("username", serviceIdentityUsernameForManagement); values.Add("client_secret", serviceIdentityPasswordForManagement); values.Add("password", serviceIdentityPasswordForManagement); byte[] responseBytes = client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", "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 som identitetsprovider med hjälp av den hanteringstjänstproxy som du skapade tidigare.
Så här lägger du till AD FS 2.0 som identitetsprovider
Initiera proxyn för hanteringstjänsten.
ManagementService svc = CreateManagementServiceClient();
Lägg till din identitetsprovider som utfärdare.
Issuer issuer = new Issuer { Name = identityProviderName }; svc.AddToIssuers(issuer); svc.SaveChanges(SaveChangesOptions.Batch);
Skapa en identitetsprovider.
IdentityProvider identityProvider = new IdentityProvider() { DisplayName = identityProviderName, Description = identityProviderName, WebSSOProtocolType = "WsFederation", IssuerId = issuer.Id }; svc.AddObject("IdentityProviders", identityProvider);
Skapa en signeringsnyckel för identitetsprovidern baserat på det certifikat som du fick tidigare.
IdentityProviderKey identityProviderKey = new IdentityProviderKey() { DisplayName = "SampleIdentityProviderKeyDisplayName", Type = "X509Certificate", Usage = "Signing", Value = Convert.FromBase64String(signingCertificate), IdentityProvider = identityProvider, StartDate = startDate, EndDate = endDate, }; svc.AddRelatedObject(identityProvider, "IdentityProviderKeys", identityProviderKey);
Uppdatera inloggningsadressen för identitetsprovidern.
IdentityProviderAddress realm = new IdentityProviderAddress() { Address = "http://SampleIdentityProvider.com/sign-in/", EndpointType = "SignIn", IdentityProvider = identityProvider, }; svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm); 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 = identityProvider.Id, RelyingPartyId = rp.Id }); } } svc.SaveChanges(SaveChangesOptions.Batch);
Steg 5 – Testa ditt arbete
Testa ditt arbete
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.