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

Authentifizieren bei Windows Azure AD Graph mithilfe von Windows Azure AD Access Control

[Dieses Thema ist Teil der Vorabdokumentation und kann in zukünftigen Versionen geändert werden. Leere Themen wurden als Platzhalter eingefügt.]

Zutreffend für:

  • Windows Azure Active Directory (AD) Graph

Zusammenfassung

In diesen Verfahrensbeschreibungen finden Sie schrittweise Anleitungen und Codeausschnitte, die Sie für eine erfolgreiche Authentifizierung bei Windows Azure AD Access Control unter Verwendung des X.509-Clientzertifikats benötigen.

Inhalt

  1. Ziele

  2. Übersicht

  3. Zusammenfassung der Schritte

  4. Schritt 1: Erstellen von Service Principal mithilfe von Office 365 PowerShell-Cmdlets

  5. Schritt 2: Anfordern eines Tokens von Windows Azure AD Access Control

  6. Schritt 3: Testen Ihrer Lösung

  7. Verwandte Themen

Ziele

  • Erstellen eines gültigen Service Principal mithilfe von Office 365 PowerShell-Cmdlets

  • Authentifizieren bei Windows Azure AD Access Control unter Verwendung des X.509-Clientzertifikats

Übersicht

Die Authentifizierung ist für einen erfolgreichen Zugriff auf Windows Azure AD-Entitäten mithilfe von Windows Azure AD Graph erforderlich. Wenn Sie über Windows Azure AD Graph auf Windows Azure AD-Entitäten zugreifen, werden Ihnen von Windows Azure AD Access Control Authentifizierungsdienste bereitgestellt. Service Principal wird zur Darstellung der Anwendung verwendet, von der über Windows Azure AD Graph auf Windows Azure AD zugegriffen werden muss. Service Principal kann je nach Ihren Sicherheitsanforderungen mit zwei Arten von Anmeldeinformationen verwendet werden: symmetrischer Schlüssel oder X.509-Clientzertifikate. Von Ihrer Anwendung muss eine dieser Anmeldeinformationen bereitgestellt werden, damit die Authentifizierung bei Windows Azure AD Access Control erfolgreich ist. Welcher Typ geeignet ist, hängt davon ab, wie Service Principal erstellt wurde.

Halten Sie sich an die in dieser Verfahrensbeschreibung in Übersichtsform angegebenen Schritte, um die Authentifizierung bei Windows Azure AD Access Control erfolgreich auszuführen.

Zusammenfassung der Schritte

  • Schritt 1: Erstellen von Service Principal mithilfe von Office 365 PowerShell-Cmdlets

  • Schritt 2: Anfordern eines Tokens von Windows Azure AD Access Control

  • Schritt 3: Testen Ihrer Lösung

Schritt 1: Erstellen von Service Principal mithilfe von Office 365 PowerShell-Cmdlets

In diesem Schritt wird die Erstellung von Service Principal mithilfe von Office 365 PowerShell-Cmdlets beschrieben. Dieser administrative Schritt wird für jedes Service Principal nur einmal ausgeführt. Die in diesem Schritt verwendeten Anmeldeinformationen werden bei der programmgesteuerten Anforderung eines Tokens von Windows Azure AD Access Control verwendet.

To create Service Principal

  1. Wenn Sie die Office 365 PowerShell-Cmdlets noch nicht installiert haben, installieren Sie sie jetzt. Anweisungen zum Herunterladen und Installieren von Office 365 PowerShell-Cmdlets finden Sie hier.

  2. Öffnen Sie die Eingabeaufforderung von Office 365 PowerShell.

  3. Führen Sie die folgenden Befehle an der Eingabeaufforderung aus:

    Import-Module MSOnlineExtended
    
    connect-msolservice
    
  4. Geben Sie Ihre Administratoranmeldeinformationen auf Aufforderung ein.

  5. Erstellen Sie Service Principal mithilfe des Cmdlets New-MsolServicePrincipal. Service Principal und die dazugehörigen Anmeldeinformationen (X.509-Clientzertifikat) verwenden Sie, wenn Sie sich von Ihrer Anwendung aus, von der Windows Azure AD Graph genutzt wird, bei Windows Azure AD Access Control authentifizieren. Beachten Sie, dass der Parameter $credValue den in das Base-64-Format konvertierten öffentlichen Teil des X.509-Clientzertifikats beinhaltet. Hinweis: Nachdem die Ausführung des Skripts abgeschlossen ist, dauert es möglicherweise einige Minuten, bis Service Principal tatsächlich für Windows Azure AD bereitgestellt wird. Wenn Sie Ihren Anwendungscode sofort nach diesem Skript ausführen, tritt möglicherweise aufgrund dieser Verzögerung ein Fehler bei der Authentifizierung auf. Warten Sie einige Minuten, und versuchen Sie dann erneut, Ihren Anwendungscode auszuführen. Das Cmdlet sollte ähnlich wie nachfolgend gezeigt aussehen, jedoch mit Ihren eigenen Werten:

    
    $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate
    $cer.Import(“C:\temp\contoso.cer”)
    $binCert = $cer.GetRawCertData()
    $credValue = [System.Convert]::ToBase64String($binCert);
    New-MsolServicePrincipal -ServicePrincipalNames @("TestApp/Test.Cloudapp.net") -DisplayName "Test Application" -Type Asymmetric -Usage Verify -StartDate 1/19/2011 -EndDate 1/19/2013 
    -Value $credValue
    
    
  6. Notieren Sie sich die in der Ausgabe des Cmdlets angegebenen Werte für ObjectId und AppPrincipalId.

Schritt 2: Anfordern eines Tokens von Windows Azure AD Access Control

In diesem Schritt wird die Anforderung eines Tokens von Windows Azure AD Access Control beschrieben.

To request a token form Windows Azure AD Access Control

  1. Wenn Sie WCF Data Services 5.0 for OData V3 (WCF Data Services 5.0 für OData v3) nicht bereits heruntergeladen und installiert haben, laden Sie diese Anwendung jetzt herunter, und installieren Sie sie.

  2. Wenn Sie Windows Azure AD Graph Code Sample (Codebeispiel für Windows Azure AD Graph) nicht bereits heruntergeladen und installiert haben, laden Sie dieses Codebeispiel jetzt herunter, und installieren Sie es.

  3. Öffnen Sie Visual Studio.

  4. Klicken Sie auf der Seite Start Page auf New Project....

  5. Wählen Sie im Dialogfeld New Project die Option Console Application aus.

  6. Geben Sie einen Namen für die Anwendung ein, z. B. WindowsAzureADAccessControlAuthentication, und klicken Sie dann auf die Schaltfläche Ok.

  7. Doppelklicken Sie im Solution Explorer auf die Datei Program.cs, um diese Datei im Editor zu öffnen.

  8. Fügen Sie Verweise auf die folgenden Assemblys hinzu:

    • Microsoft.Online.DirectoryApi.Authentication

    • Microsoft.Online.DirectoryApi.AzureTokenHelper

  9. Fügen Sie die folgenden Namespacesdeklarationen am Anfang der Datei Program.cs hinzu:

    
    using System.Net;
    using Microsoft.Online.DirectoryApi.AzureTokenHelper;
    using System.Security.Cryptography.X509Certificates;
    
    
  1. Fügen Sie der Klasse Program die folgende Implementierung einer privaten Methode GetAccessToken hinzu:

    
            private static void GetToken()
            {
                if ((tokenExpirationTime - DateTime.Now.ToUniversalTime() < new TimeSpan(0, 2, 0)) ||
                    token == null)
                {
                    tokenExpirationTime = DateTime.Now.ToUniversalTime().AddHours(1);
    
                    JsonWebToken webToken = JWTTokenHelper.GenerateSelfSignedToken(
                        JWTTokenHelper.AcsPrincipalId,
                        tenanatContextId.ToString(),
                        graphHostName,
                        graphServicePrincipalId,
                        appPrincipalId,
                        DateTime.Now.ToUniversalTime(),
                        60 * 60);
    
                    webToken.NameIdentifier = string.Format("{0}@{1}", appPrincipalId, tenanatContextId);
    
                    X509Certificate2 clientCertificate = new X509Certificate2(clientCertificateFilePath,
                                                                              clientCertificatePassword,
                                                                              X509KeyStorageFlags.Exportable);
                    token = JWTTokenHelper.GenerateAccessToken(webToken, clientCertificate);
                }
            }
    
    
  1. Verwenden Sie einen ähnlichen Code wie den folgenden, um das Token anzufordern und anzuzeigen:

    
            private static DateTime tokenExpirationTime = DateTime.Now.ToUniversalTime();
            private static string token;
    
            //customer must obtain this value using PowerShell cmdlet Get-MsolCompanyInformation | fl *-->
            //use ObjectId value
            private static string tenanatContextId = "c689...bf6ad01";
            private static string graphHostName = "directory.windows.net";
            private static string graphServicePrincipalId = "00000002-0000-0000-c000-000000000000";
            //AppPrincipalId Is displayed when creating New-MsolServiceprincipal cmdlet
            private static string appPrincipalId = "c19dd8df-9043-...61167e718";
    
            private static string clientCertificateFilePath = @"C:\YourClientCert.pfx";
            private static string clientCertificatePassword = "YourClientCertPwd";
    
            static void Main(string[] args)
            {
                GetToken();
                Console.WriteLine(token);
                Console.ReadLine();
    
            }
    
    

Schritt 3: Testen Ihrer Lösung

Mit diesem Schritt können Sie Ihren Code testen und sicherstellen, dass nach erfolgreicher Authentifizierung ein Token von Windows Azure AD Access Control ausgegeben wird.

To test your solution

  1. Drücken Sie Ctrl+Shift+B, um Ihre Lösung zu kompilieren und dabei sicherzustellen, dass keine Kompilierungsfehler auftreten.

  2. Drücken Sie F5, um Ihre Lösung auszuführen. Wenn keine Ausnahmen auftreten, sollte nun das von Windows Azure AD Access Control ausgegebene JWT-Token in ähnlicher Weise wie nachfolgend gezeigt angezeigt werden: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1N….cOFh3NaJx8tDMWLSRNBMJgi8CtLC1H1Dye8Oo4S8nEpLfrsg

  3. Wenn ein Fehler bei der Authetifizierung auftritt, finden Sie Informationen im Abschnitt OAuth 2.0-Protokollfehler des Themas ACS-Fehlercodes.

Verwandte Themen

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.