Share via


Zugreifen auf die öffentliche Azure Sphere-API mit verwalteter AAD-Identität

Sie können diese Methode verwenden, um sich bei jedem Dienst zu authentifizieren, der die AAD-Authentifizierung (Azure Active Directory) ohne Anmeldeinformationen in Ihrem Code unterstützt. Die verwaltete AAD-Identität übernimmt die Erstellung oder Erneuerung von Dienstprinzipalen in Ihrem Namen. Es handelt sich um einen Dienstprinzipal eines speziellen Typs, der nur mit Azure-Ressourcen verwendet werden kann. Wenn die verwaltete Identität gelöscht wird, wird der entsprechende Dienstprinzipal automatisch entfernt.

Systemseitig zugewiesen: Einige Azure-Dienste ermöglichen es Ihnen, eine verwaltete Identität direkt für einen Dienst instance zu aktivieren. Beispiel: ein Azure App Service. Wenn Sie eine systemseitig zugewiesene verwaltete Identität aktivieren, wird in Azure AD eine Identität erstellt, die an den Lebenszyklus dieses Diensts instance gebunden ist. Wenn die Ressource gelöscht wird, löscht Azure die Identität automatisch für Sie. Standardmäßig kann nur diese Azure-Ressource diese Identität verwenden, um Token von Azure AD anzufordern.

Voraussetzungen

Im folgenden Abschnitt wird erläutert, wie Sie die öffentliche Azure Sphere-API (PAPI) aus einer Azure-Web-App mithilfe einer verwalteten Identität aufrufen.

Schritt 1: Aktivieren der systemseitig zugewiesenen Identität in der Ressource

So aktivieren Sie die systemseitig zugewiesene Identität in der Ressource und suchen die Objekt-ID für das Projekt:

  1. Klicken Sie im Azure-Portal im linken Navigationsbereich auf App Services.
  2. Wählen Sie in der Dropdownliste die erforderlichen Abonnements und dann Ihre App aus den Suchergebnissen aus.
  3. Wählen Sie im Menü der Logik-App unter Einstellungen die Option Identität aus.
  4. Aktivieren Sie die systemseitig zugewiesene Identität, indem Sie den Status auf Ein festlegen.
  5. Klicken Sie auf Speichern.
  6. Kopieren Sie die Objekt-ID.

Schritt 2: Hinzufügen der verwalteten Identität zum Azure Sphere-Mandanten

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: Hinzufügen des NuGet-Pakets Azure.Identity zum Projekt

Fügen Sie dem Projekt das NuGet-Paket Azure.Identity hinzu. Das PAPI-Token (Public API) von Azure Sphere kann von DefaultAzureCredential abgerufen werden.

Sehen Sie sich beispielsweise den Codeausschnitt an:

    public static async Task<string> GetAS3Token()
    {
        DefaultAzureCredential credential = new DefaultAzureCredential();
        var result = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(
        new[] { "https://firstparty.sphere.azure.net/api/.default" }));
        return result.Token;
    }