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
- Azure Active Directory-Mandant (Mandantendomäne).
- Azure Sphere-Mandant.
- Der geheime Clientschlüssel des Dienstprinzipals oder das X509-Zertifikat, das zum Erstellen des Dienstprinzipals im PEM-Format verwendet wird.
- Fügen Sie ihrem Azure-Mandanten die Anwendungs-ID der öffentlichen Azure Sphere-API hinzu.
Schritt 1: Registrieren eines Dienstprinzipals
- Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.
- Registrieren sie eine Anwendung bei Azure AD, und erstellen Sie einen Dienstprinzipal. Notieren Sie sich die Client-ID.
- 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-Mandant: Führen Sie den Befehl **azsphere tenant show-selected** mithilfe der Azure Sphere CLI aus.
- Azure-Mandanten-ID: Suchen Sie die Mandanten-ID über die Azure-Portal. Kopieren Sie die Azure Active Directory-Mandanten-ID.
- Suchen Sie die eindeutige ID des Dienstprinzipalobjekts, das dieser Anwendung zugeordnet ist:
- Wechseln Sie zu App-Registrierungen, und wählen Sie die Anwendung aus, die Sie in Schritt 1: Registrieren eines Dienstprinzipals erstellt haben.
- Wählen Sie unter Verwaltete Anwendung im lokalen Verzeichnis den Link mit dem Namen Ihrer App aus. Die Bezeichnung für diese Auswahl ist möglicherweise abgeschnitten.
- Kopieren Sie auf der Seite Eigenschaften die Objekt-ID.
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-tttttttttttt
und fügen dann die Rolle Mitwirkender für diesen Benutzer hinzu.
Melden Sie sich mit Ihrer Azure Sphere-Anmeldung über die Azure Sphere-Befehlszeilenschnittstelle an:
azsphere login
Wählen Sie den erforderlichen Mandanten aus:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
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
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:
Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.
Wechseln Sie zu App-Registrierungen, und wählen Sie die Anwendung aus, die Sie in Schritt 1: Registrieren eines Dienstprinzipals erstellt haben.
Wählen Sie im linken Bereich Zertifikate & Geheimnisse> Geheime Clientschlüssel abschnitt >Neuer geheimer Clientschlüssel aus.
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.
Kopieren Sie den Wert des geheimen Clientschlüssels, da Sie den Schlüssel später nicht mehr abrufen können.
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:
- Klicken Sie im Azure-Portal im linken Navigationsbereich auf Azure Active Directory.
- Wechseln Sie zu App-Registrierungen, und wählen Sie die Anwendung aus, die Sie in Schritt 1: Registrieren eines Dienstprinzipals erstellt haben.
- 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).
- 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.