Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Vorgehensweise: Verwenden des ACS-Verwaltungsdiensts zum Konfigurieren von AD FS 2.0 als Unternehmensidentitätsanbieter

Veröffentlicht: April 2011

Letzte Aktualisierung: Juni 2015

Betrifft: Azure

  • Microsoft® Azure™ Access Control Service (ACS)

  • Microsoft Active Directory®-Verbunddienste 2.0 (Active Directory Federation Services, AD FS)

In diesem Thema wird erläutert, wie der -Identitätsanbieter zu einem Namespace oder einer Anwendung der vertrauenden Seite hinzugefügt wird. Um diese Aufgabe auszuführen, können Sie den ACS-Verwaltungsdienst verwenden. Der Verwaltungsdienst ist z. B. besonders sinnvoll, wenn Sie eine benutzerdefinierte Benutzerschnittstelle für die Verwaltung von ACS erstellen oder die Aufnahme eines neuen Mandanten für SaaS-Lösungen (Software as a Service, Software als Dienst) mit mehreren Mandanten automatisieren.

  • Ziele

  • Überblick

  • Zusammenfassung der Schritte

  • Schritt 1 – Erfassen von Konfigurationsinformationen

  • Schritt 2 – Hinzufügen von Verweisen zu den erforderlichen Diensten und Assemblys

  • Schritt 3 – Implementieren des Verwaltungsdienstproxys

  • Schritt 4 – Hinzufügen eines Identitätsanbieters

  • Schritt 5 – Testen der Lösung

  • Identifizieren der Anforderungen und Konfigurationsinformationen.

  • Auflisten der erforderlichen Schritte.

  • Überprüfen des Erfolgs der Konfiguration.

Der ACS-Verwaltungsdienst ist ein Webdienst, der ACS-Funktionen für den Code verfügbar macht. Der ACS-Verwaltungsdienst kann auf alle ACS-Funktionen zugreifen, einschließlich der Funktionsuntergruppe, die über die Benutzeroberfläche des ACS-Verwaltungsportals zur Verfügung steht.

Das Hinzufügen von Microsoft als Identitätsanbieter zu ACS ermöglicht die Nutzung der in Unternehmensidentitätsverwaltung getätigten Investitionen für cloudbasierte Lösungen. Sie müssen Code erstellen, der bestimmte Schritte berücksichtigt, um als Identitätsanbieter konfigurieren zu können. In diesem Thema werden diese grundlegenden Schritte beschrieben.

  • Schritt 1 – Erfassen von Konfigurationsinformationen

  • Schritt 2 – Hinzufügen von Verweisen zu den erforderlichen Diensten und Assemblys

  • Schritt 3 – Implementieren des Verwaltungsdienstproxys

  • Schritt 4 – Hinzufügen eines Identitätsanbieters

  • Schritt 5 – Testen der Lösung

In diesem Schritt wird erläutert, wie die erforderlichen Konfigurationsinformationen erfasst werden. Sie müssen die folgenden Informationen erfassen:

  • Benutzername der Verwaltungsdienstidentität. Der Standardwert ist ManagementClient.

  • Kennwort der Verwaltungsdienstidentität.

  • Namespacename.

  • ACS-Hostname: accesscontrol.windows.net

  • Zeichenfolge des Signaturzertifikats: Rufen Sie die AD FS-Signaturzertifikatzeichenfolge von Ihrer -Bereitstellung ab.

Verwenden Sie das folgende Verfahren, um den Benutzernamen und das Kennwort für die Verwaltungsdienstidentität zu ermitteln.

  1. Navigieren Sie zum Microsoft Azure-Verwaltungsportal (https://manage.WindowsAzure.com), melden Sie sich an, und klicken Sie dann auf Active Directory. (Hinweis für die Fehlerbehebung: Das Element "Active Directory" fehlt oder ist nicht verfügbar) Um einen Namespace für die Zugriffssteuerung zu verwalten, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten. (Oder klicken Sie auf Namespaces für die Zugriffssteuerung, wählen Sie den Namespace aus und klicken Sie dann auf Verwalten.)

  2. Klicken Sie auf Verwaltungsdienst, und wählen Sie dann einen Verwaltungsdienst aus, z. B. ManagementClient.

  3. Der Wert des Felds Name Feld ist gleich Management Service identity username.

  4. Klicken Sie im Bereich Anmeldeinformationen auf Kennwort. Der Wert für das Kennwortfeld ist Kennwort der Verwaltungsdienstidentität.

Nachdem Sie die erforderlichen Informationen erfasst haben, führen Sie die folgenden Schritte aus, um eine Beispielkonsolenanwendung zu erstellen, die den Code zum Hinzufügen von als Identitätsanbieter ausführt:

  1. Starten Sie Visual Studio, und erstellen Sie dann ein neues Konsolenanwendungsprojekt.

  2. Weisen Sie die Konfigurationsinformationswerte in der Klasse Program zu Variablen des Modulbereichs zu. Das folgende Codebeispiel zeigt eine mögliche Vorgehensweise.

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

In diesem Schritt werden die erforderlichen Abhängigkeiten identifiziert und den Diensten und Assemblys hinzugefügt.

  1. Fügen Sie einen Verweis auf System.Web.Extensions hinzu.

  2. Fügen Sie dem Verwaltungsdienst einen Dienstverweis hinzu. Die Verwaltungsdienst-URL ist für Ihren Namespace eindeutig und ähnelt der folgenden URL:

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

  3. Fügen Sie die folgenden Deklarationen hinzu.

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    
    

In diesem Schritt wird eine Methode erstellt, die die Implementierung des Verwaltungsdienstproxys verkapselt.

  1. Fügen Sie der Program-Klasse die folgende Methode hinzu.

    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. Implementieren Sie die Methode GetTokenWithWritePermission und deren Hilfsmethoden. Auf diese Weise wird das SWT OAuth-Token des Autorisierungsheaders der HTTP-Anforderung hinzugefügt.

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

In diesem Schritt wird als Identitätsanbieter mithilfe des zuvor erstellten Verwaltungsdienstproxys hinzugefügt.

  1. Initialisieren Sie den Verwaltungsdienstproxy.

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Fügen Sie Ihren Identitätsanbieter als Aussteller hinzu.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Erstellen Sie einen Identitätsanbieter.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
    
  4. Erstellen Sie einen Identitätsanbieter-Signaturschlüssel, der auf dem zuvor abgerufenen Zertifikat basiert.

    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. Aktualisieren Sie die Anmeldeadresse des Identitätsanbieters.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  6. Stellen Sie den Identitätsanbieter für die vertrauende Seite mit Ausnahme des Verwaltungsdiensts bereit.

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

  1. Klicken Sie auf der Seite Zugriffssteuerungsdienst im Abschnitt Vertrauensstellungen auf den Link Regelgruppen.

  2. Klicken Sie auf eine der verfügbaren Regeln.

  3. Klicken Sie auf der Seite Regelgruppe bearbeiten auf den Link Regel hinzufügen.

  4. Wählen Sie auf der Seite Anspruchsregel hinzufügen den neu hinzugefügten Identitätsanbieter aus der Dropdownliste im Abschnitt Anspruchsherausgeber aus.

  5. Behalten Sie die restlichen Standardwerte bei.

  6. Klicken Sie auf Speichern.

Sie haben soeben eine Pass-Through-Regel für den Identitätsanbieter erstellt.

Anzeigen: