(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Verwenden des Verwaltungsdiensts zum Konfigurieren von Facebook als Internetidentitätsanbieter

Veröffentlicht: April 2011

Letzte Aktualisierung: Mai 2011

Betrifft: Windows Azure

Gilt für

  • Microsoft® Windows Azure™ AppFabric Access Control Service (ACS)

  • Facebook

Zusammenfassung

In diesem Thema werden die grundlegenden Schritte zum Hinzufügen von Facebook als Identitätsanbieter beschrieben. Facebook kann mithilfe des Verwaltungsportals unter http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) ACS als Identitätsanbieter hinzugefügt werden. Dieser Vorgang kann jedoch auch mithilfe des ACS-Verwaltungsdiensts automatisiert werden. Die Verwendung des Verwaltungsdiensts ist z. B. in Szenarien sinnvoll, in denen eine benutzerdefinierte Benutzerschnittstelle für die Verwaltung von ACS erstellt oder die Aufnahme eines neuen Mandanten für SaaS-Lösungen (Software as a Service, Software als Dienst) mit mehreren Mandanten automatisiert wird.

Inhalt

  • Ziele

  • Übersicht

  • 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

Ziele

  • Identifizieren der erforderlichen Voraussetzungen und Konfigurationsinformationen.

  • Auflisten der zum Hinzufügen von Facebook als Identitätsanbieter erforderlichen Schritte.

  • Testen des Erfolgs der Konfiguration.

Übersicht

Der Verwaltungsdienst ist ein Webdienst und stellt eine der Schlüsselkomponenten von ACS dar. Der Verwaltungsdienst stellt Funktionen zur Verfügung, die über die Verwaltungsportal-Benutzerschnittstelle zur Verfügung gestellt werden. Alle Aktionen, die im Verwaltungsportal ausgeführt werden können, können auch mithilfe des Verwaltungsdiensts ausgeführt werden. Wenn Sie ACS Facebook als Identitätsanbieter hinzufügen, können Sie sich die Entwicklung und Verwaltung des Identitätsverwaltungsmechanismus im Internetformat ersparen. Sie müssen Code erstellen, der bestimmte Schritte berücksichtigt, um Facebook als Identitätsanbieter konfigurieren zu können. In diesem Thema werden diese grundlegenden Schritte beschrieben.

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

Schritt 1 – Erfassen von Konfigurationsinformationen

In diesem Schritt werden die erforderlichen Konfigurationsinformationen identifiziert und deren Erfassung erläutert. Sie müssen die folgenden Informationen erfassen:

  • Benutzername der Verwaltungsdienstidentität - ManagementClient.

  • Kennwort der Verwaltungsdienstidentität - Gehen Sie folgendermaßen vor, um das Kennwort der Dienstidentität für den Verwaltungsdienst abzurufen:

    1. Melden Sie sich am Verwaltungsportal des Zugriffssteuerungsdiensts (http://go.microsoft.com/fwlink/?LinkID=129428) an.

    2. Klicken Sie im Abschnitt Verwaltung auf den Link Verwaltungsdienst.

    3. Klicken Sie auf der Seite Verwaltungsdienst auf den Link ManagementClient (ManagementClient ist der tatsächliche Benutzername für den Dienst).

    4. Klicken Sie im Abschnitt Anmeldeinformationen auf den Link Symmetrischer Schlüssel oder Kennwort. Der Wert ist in beiden Links identisch. Dies ist das Kennwort.

  • Der Namespace Ihres Diensts.

  • ACS-Hostname - Normalerweise accesscontrol.windows.net.

  • Facebook-Anwendungs-ID und -Anwendungsgeheimnis - Befolgen Sie die Anweisungen unter Vorgehensweise: Konfigurieren von Facebook als Identitätsanbieter.

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 Facebook als Identitätsanbieter ausführt:

  1. Öffnen Sie Visual Studio® 2010, und erstellen Sie dann ein neues Konsolenanwendungsprojekt.

  2. Weisen Sie den Modulbereichsvariablen in der Klasse Program die zuvor erfassten Informationen mithilfe von Code zu, der dem folgenden ähnelt.

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

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

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

So fügen Sie die erforderlichen Abhängigkeiten den Diensten und Assemblys hinzu

  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;
    using System.Globalization;
    using System.Runtime.Serialization.Json;
    using ConsoleApplication1.ServiceReference1;
    
    

Beachten Sie die letzte Deklaration ConsoleApplication1.ServiceReference1. Diese kann in Ihrem Fall anders lauten, wenn Sie beim Erstellen Ihrer Konsolenanwendung oder beim Hinzufügen des Verweises für den Verwaltungsdienst Standardeinstellungen geändert haben.

Schritt 3 – Implementieren des Verwaltungsdienstproxys

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

So implementieren Sie den Verwaltungsdienstproxy

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

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

Schritt 4 – Hinzufügen eines Identitätsanbieters

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

So fügen Sie Facebook als Identitätsanbieter hinzu

  1. Initialisieren Sie den Verwaltungsdienstproxy mithilfe der Methode Main.

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

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

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

    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);
    
    
  5. 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 = facebook.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Schritt 5 – Testen der Lösung

So testen Sie die Lösung

  1. Melden Sie sich am Verwaltungsportal des Zugriffssteuerungsdiensts (http://go.microsoft.com/fwlink/?LinkID=129428) an.

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

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

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

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

  6. Behalten Sie die restlichen Standardwerte bei.

  7. Klicken Sie auf Speichern.

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

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft