Share via


Zugreifen auf die öffentliche Azure Sphere-API mit dem AAD-Anwendungsdienstprinzipal

Automatisierte Tools erfordern eingeschränkten Zugriff und nicht interaktive Authentifizierung, anstatt sich als voll privilegierter Benutzer zu authentifizieren. Dies kann mithilfe von Dienstprinzipalen erreicht werden, die es Anwendungen ermöglichen, sich mit bestimmten Berechtigungen anzumelden. Einfach ausgedrückt funktioniert ein Azure-Dienstprinzipal als Identität, die in Azure erstellt wird, wenn eine Anwendung in Azure Active Directory registriert ist.

In diesem Modus wird die Zugriffsberechtigung für die Anwendung im Azure Active Directory-Mandanten (AAD) vom Dienstprinzipal definiert, der die Authentifizierung und Autorisierung beim Zugriff auf Ressourcen ermöglicht.

Für Dienstprinzipale stehen zwei Arten von Authentifizierungsmethoden zur Verfügung: Clientzertifikate und geheime Clientschlüssel.

Voraussetzungen

Schritt 1: Registrieren eines Dienstprinzipals

  1. Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.
  2. Registrieren sie eine Anwendung bei Azure AD, und erstellen Sie einen Dienstprinzipal. Notieren Sie sich die Client-ID.
  3. Wählen Sie Authentifizierungstyp aus. Für Dienstprinzipale stehen zwei Arten der Authentifizierung zur Verfügung:
    • Geheimer Clientschlüssel
    • Clientzertifikat

Schritt 2: Hinzufügen des Dienstprinzipals zum Azure Sphere-Mandanten und Zuweisen einer Rolle

Hinweis

Stellen Sie sicher, dass Sie über Folgendes verfügen, bevor Sie mit diesem Schritt beginnen:

Azure Sphere behandelt den Dienstprinzipal als einen anderen Benutzer. Um ein Token mithilfe des Dienstprinzipals abzurufen, fügen Sie zuerst den Dienstprinzipalbenutzer dem Azure Sphere-Mandanten hinzu, und weisen Sie dem Benutzer in einem Azure Sphere-Mandanten dann mithilfe der Azure Sphere-CLI eine Rolle zu.

Die Benutzeridentität kann als <ObjectID>@<TenantID.onmicrosoft.com> generiert werden.

Im folgenden Beispiel erstellen wir einen Benutzer mithilfe einer Kombination aus Objekt-ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx und Azure AD-Mandanten-ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz in der Azure Sphere-Mandanten-ID tttttttt-tttt-tttt-tttt-ttttttttttttund fügen dann die Rolle Mitwirkender für diesen Benutzer hinzu.

  1. Melden Sie sich mit Ihrer Azure Sphere-Anmeldung über die Azure Sphere-Befehlszeilenschnittstelle an:

    azsphere login
    
  2. Wählen Sie den erforderlichen Mandanten aus:

    azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
    
  3. So erstellen Sie einen Dienstprinzipalbenutzer für den Azure Sphere-Mandanten:

    azsphere register-user --new-user  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
    
  4. So fügen Sie den Benutzer einer erforderlichen Rolle hinzu:

    azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
    

Schritt 3: Registrieren von geheimen Clientschlüsseln oder Clientzertifikaten über das Anwendungsregistrierungsportal

Geheime Clientschlüssel und Clientzertifikate ermöglichen es Anwendungen, sich beim Empfang von Token an einem webadressierbaren Speicherort (mithilfe eines HTTPS-Schemas) gegenüber dem Authentifizierungsdienst zu identifizieren. Es wird empfohlen, bei der Authentifizierung mit Azure Active Directory ein Zertifikat anstelle eines geheimen Clientschlüssels für Szenarien mit Clientanmeldeinformationen zu verwenden.

Der geheime Clientschlüssel oder das Clientzertifikat für die Anwendungsregistrierung kann verwendet werden, um ein Zugriffstoken für die öffentliche Azure Sphere-API (PAPI) abzurufen.

Konfigurieren der Anwendung mit geheimem Clientschlüssel

So registrieren Sie Ihre Anwendung mit einem geheimen Clientschlüssel:

  1. Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.

  2. Wechseln Sie zu App-Registrierungen, und wählen Sie die Anwendung aus, die Sie in Schritt 1: Registrieren eines Dienstprinzipals erstellt haben.

  3. Wählen Sie im linken Bereich Zertifikate & Geheimnisse> Geheime Clientschlüssel abschnitt >Neuer geheimer Clientschlüssel aus.

  4. Geben Sie eine Beschreibung ein, wählen Sie die Gültigkeitsdauer aus, und wählen Sie Hinzufügen aus. Der geheime Clientschlüssel wird generiert, und der Wert des geheimen Clientschlüssels wird angezeigt.

  5. Kopieren Sie den Wert des geheimen Clientschlüssels, da Sie den Schlüssel später nicht mehr abrufen können.

  6. Geben Sie den Wert des geheimen Clientschlüssels mit der Anwendungs-ID der öffentlichen Azure Sphere-API an, um sich als Anwendung anzumelden. Speichern Sie den Schlüsselwert an der Stelle, an der Ihre Anwendung ihn abrufen kann.

    Wichtig

    Der Wert des geheimen Clientschlüssels ist eine wichtige Sicherheitsanmeldeinformation. Geben Sie den geheimen Clientschlüssel nicht für andere Personen frei, und verteilen Sie ihn nicht innerhalb einer Clientanwendung. Es wird empfohlen, den Azure Key Vault-Dienst zu verwenden, der eine zentralisierte Geheimnisverwaltung mit vollständiger Kontrolle über Zugriffsrichtlinien und überwachungsverlauf bietet.

Verwenden Sie den folgenden Beispielcode:

 IConfidentialClientApplication app =

 ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")

                 .WithClientSecret("<<App registration Client Secret Value>>")

                 .WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")

                 .Build();

 string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };

 AuthenticationResult result =  await app.AcquireTokenForClient(scopes).ExecuteAsync();
 string accessToken=result.AccessToken;

Konfigurieren der Anwendung mit Clientzertifikat

So richten Sie das Clientzertifikat ein:

  1. Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.
  2. Wechseln Sie zu App-Registrierungen, und wählen Sie die Anwendung aus, die Sie in Schritt 1: Registrieren eines Dienstprinzipals erstellt haben.
  3. Wählen Sie im linken Bereich Zertifikate & Geheimnisse>Zertifikate>Zertifikat hochladen aus. Wählen Sie das Zertifikat aus (ein vorhandenes Zertifikat oder das selbstsignierte Zertifikat, das Sie exportiert haben).
  4. Nachdem Sie das Zertifikat bei Ihrer Anwendung im Anwendungsregistrierungsportal registriert haben, aktivieren Sie den Clientanwendungscode für die Verwendung des Zertifikats.

Verwenden Sie den folgenden Beispielcode, um Ihre Anwendung mit einem Clientzertifikat zu registrieren:

 IConfidentialClientApplication app =

 ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")

                 .WithCertificate("<<App registration Certificate>>")

                 .WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")

                 .Build();

 string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };

 AuthenticationResult result =  await app.AcquireTokenForClient(scopes).ExecuteAsync();
 string accessToken=result.AccessToken;

Hinweis

Sie müssen MSAL.Net Bibliothek hinzufügen, um IConfidentialClient zu verwenden.