Dela via


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.

  1. 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.)

  2. Klicka på Hanteringstjänst och välj sedan en hanteringstjänst, till exempel ManagementClient.

  3. Värdet för fältet Namn är användarnamnet för hanteringstjänstens identitet.

  4. 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:

  1. Starta Visual Studio och skapa ett nytt konsolprogramprojekt.

  2. 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

  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;
    

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

  1. Initiera proxyn för hanteringstjänsten.

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

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

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
  4. 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);
    
  5. 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);
    
  6. 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

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

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

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

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

  5. Lämna resten av standardvärdena.

  6. Klicka på Spara.

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