(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Vorgehensweise: Verwenden des ACS-Verwaltungsdiensts zum Konfigurieren von Zertifikaten und Schlüsseln

Veröffentlicht: April 2011

Letzte Aktualisierung: Mai 2011

Betrifft: Windows Azure

Gilt für

  • Zugriffssteuerungsdienst (ACS) für Windows Azure AppFabric

Übersicht

Sie können ACS-Zertifikate und -Schlüssel mithilfe des ACS-Verwaltungsportals (weitere Informationen finden Sie unter Zertifikate und Schlüssel) oder mithilfe des ACS-Verwaltungsdiensts konfigurieren. Die Verwendung des ACS-Verwaltungsdiensts kann effizienter sein, 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 möchten.

Schritte zum Konfigurieren von Zertifikaten und Schlüsseln mithilfe des ACS-Verwaltungsdiensts

Schritt 1 – Erfassen von ACS-Konfigurationsinformationen

Sie können das ACS-Verwaltungsportal zum Erfassen der erforderlichen Konfigurationsinformationen verwenden. Weitere Informationen zum Starten des ACS-Verwaltungsportals finden Sie unter ACS-Verwaltungsportal.

So erfassen Sie ACS-Konfigurationsinformationen

  1. Starten Sie das ACS-Verwaltungsportal. Weitere Informationen zum Starten des ACS-Verwaltungsportals finden Sie unter ACS-Verwaltungsportal.

  2. Rufen Sie den Wert des ACS-Verwaltungsdienstkontos ab. Sie können das Standardkonto ManagementClient verwenden. Klicken Sie im ACS-Verwaltungsportal in der Struktur auf der linken Seite im Abschnitt Verwaltung auf Verwaltungsdienst, um diesen Wert anzuzeigen.

  3. Rufen Sie den Wert des Kennworts für das ACS-Verwaltungsdienstkonto ab. Gehen Sie wie folgt vor, um diesen Wert anzuzeigen:

    1. Klicken Sie im ACS-Verwaltungsportal in der Struktur auf der linken Seite im Abschnitt Verwaltung auf Verwaltungsdienst.

    2. Klicken Sie auf der Seite Verwaltungsdienst unter Verwaltungsdienstkonten auf ManagementClient.

    3. Klicken Sie auf der Seite Verwaltungsdienstkonto bearbeiten unter Anmeldeinformationen auf Kennwort.

    4. Kopieren Sie auf der Seite Verwaltungsanmeldeinformationen bearbeiten den Wert im Feld Kennwort.

  4. Rufen Sie den Wert Ihres Windows Azure AppFabric-Dienstnamespaces ab. Sie können diesen Wert aus dem Windows Azure AppFabric-Portal oder aus der URL Ihres ACS-Verwaltungsportals abrufen. In http://contoso.accesscontrol.windows.net ist der Wert des Dienstnamespaces z. B. contoso.

  5. Rufen Sie den Wert des ACS-Hostnamens ab. Normalerweise lautet dieser accesscontrol.windows.net.

Schritt 2 – Erstellen einer Konsolenbeispielanwendung

In diesem Schritt erstellen Sie eine Konsolenbeispielanwendung, die den Code zum Hinzufügen der ACS-Regelgruppen und -Regeln ausführen kann.

So erstellen Sie eine Konsolenbeispielanwendung

  1. Öffnen Sie Visual Studio 2010, und erstellen Sie dann ein neues Konsolenanwendungsprojekt unter der installierten Vorlage Windows.

  2. Fügen Sie der Klasse Program den folgenden Code hinzu, und weisen Sie dann die Variablen serviceIdentityPasswordForManagement, serviceNamespace und acsHostName den entsprechenden Konfigurationsinformationen zu, die Sie im vorherigen Schritt erfasst haben.

    public const string serviceIdentityUsernameForManagement = "ManagementClient";
    public const string serviceIdentityPasswordForManagement = "My Password/Key for ManagementClient";
    public const string serviceNamespace = "MyNameSpaceNoDots";
    public const string acsHostName = "accesscontrol.windows.net";
    public const string acsManagementServicesRelativeUrl = "v2/mgmt/service/";
    static string cachedSwtToken;
    
    

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

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

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

  1. Klicken Sie mit der rechten Maustaste auf Verweise, klicken Sie auf Verweis hinzufügen, und fügen Sie dann einen Verweis auf System.Web.Extensions hinzu.

    noteHinweis
    Ggf. müssen Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Namen Ihrer Konsolenbeispielanwendung klicken, Eigenschaften auswählen, und dann das Zielframework Ihrer Beispielanwendung von .NET Framework 4-Clientprofil (dieser Wert wird standardmäßig zugewiesen, wenn Sie eine neue Konsolenanwendung erstellen) in .NET Framework 4 ändern.

  2. Klicken Sie mit der rechten Maustaste auf Dienstverweise, klicken Sie auf Dienstverweis hinzufügen, und fügen Sie dem Verwaltungsdienst dann 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. Dabei ist MyConsoleApplication der Name Ihrer Konsolenanwendung und MyServiceReference der Name Ihres Dienstverweises:

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    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.Security.Cryptography;
    using System.Security.Cryptography.X509Certificates; 
    using MyConsoleApplication.MyServiceReference;
    
    

Schritt 4 – Implementieren des Verwaltungsdienstclients

In diesem Schritt implementieren Sie den Verwaltungsdienstclient.

So implementieren Sie den Verwaltungsdienstclient

  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. Fügen Sie die Methode GetTokenWithWritePermission und deren Hilfsmethoden der Klasse Program hinzu. GetTokenWithWritePermission und deren Hilfsmethoden fügen das SWT OAuth-Token des Autorisierungsheaders der HTTP-Anforderung hinzu.

    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 5 – Hinzufügen von Zertifikaten und Schlüsseln

Hinzufügen eines Tokensignaturzertifikats, das für den ACS-Dienstnamespace verwendet wird

In diesem Beispiel erstellen Sie ein X.509-Signaturzertifikat, das Ihrem ACS-Dienstnamespace zugewiesen wird.

So fügen Sie ein Tokensignaturzertifikat hinzu, das für den gesamten ACS-Dienstnamespace verwendet wird

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Erstellen Sie eine Hilfsfunktion ReadBytesFromPfxFile, die Bytes aus dem X.509-Zertifikat liest, indem Sie der Klasse Program den folgenden Code hinzufügen:

    //Helper function to read bytes from your .pfx file
    
            public static byte[] ReadBytesFromPfxFile(string pfxFileName, string protectionPassword)
            {
                byte[] signingCertificate;
                using (FileStream stream = File.OpenRead(pfxFileName))
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        signingCertificate = br.ReadBytes((int)stream.Length);
                    }
                }
                return signingCertificate;
            }
    
    
  3. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um ein X.509-Tokensignaturzertifikat hinzuzufügen:

    noteHinweis
    Ersetzen Sie "Full path to your .PFX file" im Code unten durch den gültigen vollständigen Pfad zu Ihrem X.509-Zertifikat. Wenn ein Zertifikat namens ACS2ClientCertificate.pfx z. B. unter C:\ gespeichert wird, lautet der richtige Wert C:\ ACS2ClientCertificate.pfx.

    Ersetzen Sie "MyCertificatePassword" im Code unten durch das richtige Kennwort für Ihr X.509-Zertifikat.

    X509Certificate2 cert = new X509Certificate2(@"Full path to your .PFX file", “MyCertificatePassword”);
                
                DateTime startDate, endDate;
                startDate = cert.NotBefore.ToUniversalTime();
                endDate = cert.NotAfter.ToUniversalTime();
               string pfxFileName = @"Full path to your .PFX file";
                string pfxPassword = @"MyCertificatePassword";
                
    byte[] signingCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword);
    
    ServiceKey serviceKey = new ServiceKey()
                {
                    Type = "X509Certificate",
                    Usage = "Signing",
                    Value = signingCertificate,
                      Password = Encoding.UTF8.GetBytes("MyCertificatePassword"),
                      IsPrimary = false,
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Hinzufügen eines Tokensignaturzertifikats, das für eine bestimmte Anwendung der vertrauenden Seite verwendet wird

In diesem Beispiel erstellen Sie ein X.509-Signaturzertifikat, das einer bestimmten Anwendung der vertrauenden Seite zugewiesen wird.

Hinzufügen eines Tokensignaturzertifikats, das für eine bestimmte Anwendung der vertrauenden Seite verwendet wird

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Erstellen Sie eine Hilfsfunktion ReadBytesFromPfxFile, die Bytes aus dem X.509-Zertifikat liest, indem Sie der Klasse Program den folgenden Code hinzufügen:

    //Helper function to read bytes from your .pfx file
    
            public static byte[] ReadBytesFromPfxFile(string pfxFileName, string protectionPassword)
            {
                byte[] signingCertificate;
                using (FileStream stream = File.OpenRead(pfxFileName))
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        signingCertificate = br.ReadBytes((int)stream.Length);
                    }
                }
                return signingCertificate;
            }
    
    
  3. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um ein X.509-Tokensignaturzertifikat hinzuzufügen:

    noteHinweis
    Ersetzen Sie "Full path to your .PFX file" im Code unten durch den gültigen vollständigen Pfad zu Ihrem X.509-Zertifikat. Wenn ein Zertifikat namens ACS2ClientCertificate.pfx z. B. unter C:\ gespeichert wird, lautet der richtige Wert C:\ ACS2ClientCertificate.pfx.

    Ersetzen Sie "MyCertificatePassword" im Code unten durch das richtige Kennwort für Ihr X.509-Zertifikat.

    Ersetzen Sie "MyRelyingPartyApplication" im Code unten durch den richtigen Namen Ihrer vorhandenen Anwendung der vertrauenden Seite, für die dieses Tokensignaturzertifikat verwendet werden soll.

    //Select an existing Relying Party Application by its name
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
             
               // Add a signing certificate
    
               X509Certificate2 cert = new X509Certificate2(@"Full path to your .PFX file", "MyCertificatePassword");
               DateTime startDate, endDate;
               startDate = cert.NotBefore.ToUniversalTime();
               endDate = cert.NotAfter.ToUniversalTime();
    
               string pfxFileName = @"Full path to your .PFX file";
               string pfxPassword = "MyCertificatePassword";
    
                byte[] signingCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword);
    
               RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
                    StartDate = startDate.ToUniversalTime(),
                   EndDate = endDate.ToUniversalTime(),
                    Type = "X509Certificate",
                    Usage = "Signing",
                    IsPrimary = true,
                    Value = signingCertificate,
                   Password = Encoding.UTF8.GetBytes("MyCertificatePassword")
                };
    
    // Add the new signing certificate to the selected Relying Party Application
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
    
            
                //Save your relying party application
    
                svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Hinzufügen eines symmetrischen Tokensignaturschlüssels, der für den ACS-Dienstnamespace verwendet wird

In diesem Beispiel weisen Sie diesen symmetrischen Tokensignaturschlüssel Ihrem ACS-Dienstnamespace zu.

So fügen Sie einen symmetrischen Tokensignaturschlüssel hinzu, der für den ACS-Dienstnamespace verwendet wird

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um einen symmetrischen Tokensignaturschlüssel hinzuzufügen:

           string symKey = "SampleTokenSigningSymmetricKey";
                DateTime startDate, endDate;
                startDate = DateTime.UtcNow;
                endDate = DateTime.MaxValue;
    
                ServiceKey serviceKey = new ServiceKey()
                {
                    
                    Type = "Symmetric",
                    Usage = "Signing",
                    Value = Encoding.UTF8.GetBytes(symKey),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Hinzufügen eines symmetrischen Tokensignaturschlüssels, der für eine bestimmte Anwendung der vertrauenden Seite verwendet wird

In diesem Beispiel weisen Sie den neuen symmetrischen Tokensignaturschlüssel einer bestimmten Anwendung der vertrauenden Seite zu.

So fügen Sie einen symmetrischen Tokensignaturschlüssel hinzu, der für eine bestimmte Anwendung der vertrauenden Seite verwendet wird

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um einen symmetrischen Tokensignaturschlüssel hinzuzufügen:

          //Select a relying party application
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
             
               // Create a symmetric key
    
                string symKey = "SampleTokenSigningSymmetricKey";
                DateTime startDate, endDate;
                startDate = DateTime.UtcNow;
                endDate = DateTime.MaxValue;
    
                RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
    
                    Type = "Symmetric",
                    Usage = "Signing",
                    Value = Encoding.UTF8.GetBytes(symKey),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
             
                //Assign this symmetric key to the selected relying party application 
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
                   //Save your symmetric key
    
                svc.SaveChanges(SaveChangesOptions.Batch);        
    
    

Hinzufügen eines Tokenverschlüsselungszertifikats

In diesem Beispiel fügen Sie ein X.509-Tokenverschlüsselungszertifikat für eine bestimmte Anwendung der vertrauenden Seite hinzu.

So fügen Sie ein Tokenverschlüsselungszertifikat für eine bestimmte Anwendung der vertrauenden Seite hinzu

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um ein X.509-Tokenverschlüsselungszertifikat hinzuzufügen:

    noteHinweis
    Ersetzen Sie "Full path to your .CER file" im Code unten durch den gültigen vollständigen Pfad zu Ihrem X.509-Zertifikat. Wenn ein Zertifikat namens ACS2ClientCertificate.cer z. B. unter C:\ gespeichert wird, lautet der richtige Wert C:\ ACS2ClientCertificate.cer.

    Ersetzen Sie "MyCertificatePassword" im Code unten durch das richtige Kennwort für Ihr X.509-Zertifikat.

    Ersetzen Sie "MyRelyingPartyApplication" im Code unten durch den richtigen Namen Ihrer vorhandenen Anwendung der vertrauenden Seite, für die dieses Tokensignaturzertifikat verwendet werden soll.

    //Select a relying party application
    
                RelyingParty relyingParty = svc.RelyingParties.Where(m => m.Name == "MyRelyingPartyApplication").Single();
             
               // Add an encryption certificate
    
                X509Certificate2 cert = new X509Certificate2(@"Full path to your .CER file");
                DateTime startDate, endDate; 
                  startDate = cert.NotBefore;
                  endDate = cert.NotAfter;
    
                RelyingPartyKey relyingPartyKey = new RelyingPartyKey()
                {
                    Type = "X509Certificate",
                    Usage = "Encrypting",
                    Value = cert.GetRawCertData(),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
             
                //Assign this encryption certificate to the selected relying party application 
    
                svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey);
    
                   //Save your encryption certificate
    
                svc.SaveChanges(SaveChangesOptions.Batch);     
    
    

Hinzufügen eines Tokenentschlüsselungszertifikats

In diesem Beispiel fügen Sie ein X.509-Tokenentschlüsselungszertifikat hinzu, das Ihrem ACS-Dienstnamespace zugewiesen wird.

So fügen Sie ein Tokensignaturzertifikat hinzu, das für den gesamten ACS-Dienstnamespace verwendet wird

  1. Initialisieren Sie den Verwaltungsdienstclient, indem Sie der Methode Main in der Klasse Program den folgenden Code hinzufügen:

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Erstellen Sie eine Hilfsfunktion ReadBytesFromPfxFile, die Bytes aus dem X.509-Zertifikat liest, indem Sie der Klasse Program den folgenden Code hinzufügen:

    //Helper function to read bytes from your .pfx file
    
            public static byte[] ReadBytesFromPfxFile(string pfxFileName, string protectionPassword)
            {
                byte[] decryptionCertificate;
                using (FileStream stream = File.OpenRead(pfxFileName))
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        decryptionCertificate = br.ReadBytes((int)stream.Length);
                    }
                }
                return decryptingCertificate;
            }
    
    
  3. Fügen Sie der Methode Main in der Klasse Program den folgenden Code hinzu, um ein X.509-Tokensignaturzertifikat hinzuzufügen:

    noteHinweis
    Ersetzen Sie "Full path to your .PFX file" im Code unten durch den gültigen vollständigen Pfad zu Ihrem X.509-Zertifikat. Wenn ein Zertifikat namens ACS2ClientCertificate.pfx z. B. unter C:\ gespeichert wird, lautet der richtige Wert C:\ ACS2ClientCertificate.pfx.

    Ersetzen Sie "MyCertificatePassword" im Code unten durch das richtige Kennwort für Ihr X.509-Zertifikat.

    X509Certificate2 cert = new X509Certificate2(@"Full path to your .PFX file", “MyCertificatePassword”);
                
                DateTime startDate, endDate;
                startDate = cert.NotBefore.ToUniversalTime();
                endDate = cert.NotAfter.ToUniversalTime();
               string pfxFileName = @"Full path to your .PFX file";
                string pfxPassword = @"MyCertificatePassword";
                
    byte[] decryptionCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword);
    
    ServiceKey serviceKey = new ServiceKey()
                {
                    Type = "X509Certificate",
                    Usage = "Encrypting",
                    Value = decryptionCertificate,
                      Password = Encoding.UTF8.GetBytes("MyCertificatePassword"),
                    StartDate = startDate.ToUniversalTime(),
                    EndDate = endDate.ToUniversalTime()
                };
                svc.AddToServiceKeys(serviceKey);
                svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Siehe auch

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.
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. Alle Rechte vorbehalten.