Authentifizieren von Dienstverwaltungsanforderungen

Letzte Aktualisierung: Juni 2015

Anforderungen an den Verwaltungsdienst müssen mit einer der folgenden Methoden authentifiziert werden:

Sichere Anforderungen an den Verwaltungsdienst können authentifiziert werden, indem Sie eine Azure AD-Anwendung erstellen und mithilfe der Active Directory Authentication Library ein Zugriffstoken aus der Anwendung abrufen. Weitere Informationen zur Authentifizierung mithilfe von Azure AD finden Sie unter Authentifizierungsszenarien für Azure AD.

Gehen Sie folgendermaßen vor, um Azure AD eine Anwendung hinzuzufügen:

  1. Melden Sie sich am Azure-Verwaltungsportal an.

  2. Klicken Sie im unteren Bereich des linken Menüs auf Active Directory, und klicken Sie dann auf Standardverzeichnis.

  3. Klicken Sie auf der Seite Standardverzeichnis unter Anwendungen integrieren auf Eine Anwendung hinzufügen, die Sie entwickeln.

    Hinzufügen einer Azure AD-Anwendung
  4. Geben Sie den Namen der Anwendung ein, wählen Sie SYSTEMEIGENE CLIENTANWENDUNG aus, und klicken Sie dann auf den Pfeil nach rechts.

    Bereitstellen eines Namens für die Anwendung
  5. Geben einen URI für die Anwendung ein, und klicken Sie dann auf das Häkchen. Der URI enthält den Namen der Anwendung, der http://localhost/ vorangestellt ist.

    Eingeben der Umleitungs-URL
  6. Nachdem die Anwendung erstellt wurde, müssen Sie der Anwendung die Berechtigung für den Zugriff auf die Dienstverwaltungs-APIs hinzufügen. Navigieren Sie zu der Seite für Ihre Anwendung, und klicken Sie dann auf Konfigurieren.

  7. Klicken Sie im Abschnitt Berechtigungen für andere Anwendungen unten auf der Konfigurationsseite auf Anwendung auswählen, und wählen Sie dann Windows Azure Service Management-API aus.

    Zuweisen von Berechtigungen an die Anwendung
  8. Klicken Sie auf Delegierte Berechtigungen: 0, und wählen Sie dann Auf Azure Service Management zugreifen aus.

    Fortsetzen des Festlegens von Berechtigungen
  9. Klicken Sie im unteren Menü auf Speichern.

Sie können die Active Directory Authentication Library auf einfache Weise in Ihrem Visual Studio-Projekt installieren, indem Sie das NuGet-Paket verwenden. Führen Sie zum Installieren des Pakets die folgenden Schritte aus:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen des Projekts, und klicken Sie dann auf NuGet-Pakete verwalten.

    Verwalten von NuGet-Paketen
  2. Geben Sie Active Directory in das Suchfeld ein, klicken Sie für das Paket Active Directory-Authentifizierungsbibliothek auf Installieren, und befolgen Sie dann die Anleitungen zum Installieren des Pakets.

    Installieren der Active Directory-Bibliothek

Im folgenden Codebeispiel wird gezeigt, wie das Zugriffstoken abgerufen wird:


private static string GetAuthorizationHeader()
{
  AuthenticationResult result = null;
  
  var context = new AuthenticationContext("https://login.windows.net/{tenantId}");
  var thread = new Thread(() =>
  {
    result = context.AcquireToken(
      "https://management.core.windows.net/",
      "{clientId}",
      new Uri("{redirectUri}"));
  });
  thread.SetApartmentState(ApartmentState.STA);
  thread.Name = "AquireTokenThread";
  thread.Start();
  thread.Join();
            
  if (result == null)
  {
    throw new InvalidOperationException("Failed to obtain the JWT token");
  }
  string token = result.AccessToken;
  return token;
}

Wenn Sie den oben aufgeführten Code verwenden, müssen Sie Folgendes ersetzen:

  • {tenantId} durch die GUID der Anwendung. Navigieren Sie zum Ermitteln der GUID zur Seite Standardverzeichnis im Abschnitt Active Directory des Verwaltungsportals, wählen Sie die Anwendung aus, die Sie zuvor erstellt haben, und klicken Sie dann auf Endpunkte anzeigen.

    Anzeigen von Endpunkten

    Kopieren Sie die GUID der Anwendung, und ersetzen Sie den Platzhalter durch diese.

    Kopieren des Anwendungsendpunkts
  • {clientId} durch den Clientbezeichner. Navigieren Sie zum Ermitteln des Clientbezeichners zur Seite Konfiguration der Anwendung im Verwaltungsportal.

    Kopieren der AD-Client-ID
  • {redirectUri} durch den Umleitungs-URI. Navigieren Sie zum Ermitteln des Umleitungs-URIs zur Seite Konfiguration der Anwendung im Verwaltungsportal.

    Kopieren des Anwendungsumleitungs-URI

Verwenden Sie die folgende Codezeile, um das Token, das von der oben gezeigten Methode GetAuthorizationHeader zurückgegeben wird, einer Variablen zuzuweisen, die von der Anforderung verwendet werden kann:

string token = GetAuthorizationHeader();

Verwenden Sie die folgenden Codezeilen, um das Token einer Anforderung hinzuzufügen:


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

Sichere Anforderungen an den Verwaltungsdienst können mithilfe von Verwaltungszertifikaten über SSL authentifiziert werden. Ein Verwaltungszertifikat kann erst verwendet werden, wenn es in Azure hochgeladen wurde. Nachdem Sie dem Abonnement ein Verwaltungszertifikat hinzugefügt haben, können Sie die Anforderungen an den Dienst mithilfe des Zertifikats signieren. Informationen zum Erstellen von Verwaltungszertifikaten und Zuordnen zu einem Abonnement finden Sie unter Erstellen und Hochladen eines Verwaltungszertifikats für Azure.

Beim Entwerfen einer Anwendung sind die folgenden Punkte bezüglich Verwaltungszertifikaten zu beachten:

  • Die Dienstverwaltungs-API überprüft nicht, ob ein Zertifikat noch gültig ist. Mit einem abgelaufenen Zertifikat kann eine erfolgreiche Authentifizierung ausgeführt werden.

  • Alle Verwaltungszertifikate besitzen den gleichen Satz an Berechtigungen. Es gibt keine "rollenbasierte" Authentifizierung, bei der ein Verwaltungszertifikat in einer Rolle und ein anderes auf demselben Abonnement in einer anderen Rolle konfiguriert werden kann.

Im folgenden Beispiel wird das Abrufen des Verwaltungszertifikats mithilfe der Bibliotheken System.Net und System.Security.Cryptography.X509Certificates veranschaulicht:


private static X509Certificate2 GetStoreCertificate(string thumbprint)
{
  List<StoreLocation> locations = new List<StoreLocation>
  { 
    StoreLocation.CurrentUser, 
    StoreLocation.LocalMachine
  };
  foreach (var location in locations)
  {
    X509Store store = new X509Store("My", location);
    try
    {
      store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
      X509Certificate2Collection certificates = store.Certificates.Find(
        X509FindType.FindByThumbprint, thumbprint, false);
      if (certificates.Count == 1)
      {
        return certificates[0];
      }
    }
    finally
    {
      store.Close();
    }
  }
  throw new ArgumentException(string.Format(
    "A Certificate with Thumbprint '{0}' could not be located.",
    thumbprint));
}

Verwenden Sie die folgende Codezeile, um das von der oben gezeigten GetStoreCertificate-Methode zurückgegebene Zertifikat einer Variablen zuzuweisen, die von der Anforderung verwendet werden kann:

noteHinweis
Thumbprint stellt den Fingerabdruck des Verwaltungszertifikat dar, das Sie dem Abonnement hinzugefügt haben.


X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

Verwenden Sie die folgenden Codezeilen, um das Zertifikat einer Anforderung hinzuzufügen:


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(certificate);

Anzeigen: