Condividi tramite


Accedere all'API pubblica di Azure Sphere con l'identità gestita di AAD

Importante

Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).

È possibile usare questo metodo per eseguire l'autenticazione a qualsiasi servizio che supporti l'autenticazione di Azure Active Directory (AAD), senza credenziali nel codice. L'identità gestita di AAD gestisce la creazione o il rinnovo delle entità servizio per conto dell'utente. Si tratta di un'entità servizio di un tipo speciale che può essere usata solo con le risorse di Azure. Quando l'identità gestita viene eliminata, l'entità servizio corrispondente viene rimossa automaticamente.

Assegnate dal sistema: alcuni servizi di Azure consentono di abilitare un'identità gestita direttamente in un'istanza del servizio. Ad esempio, un servizio app Azure. Quando si abilita un'identità gestita assegnata dal sistema, viene creata un'identità in Azure AD associata al ciclo di vita di quell'istanza del servizio. Quindi quando la risorsa viene eliminata, Azure elimina automaticamente anche l'identità. Per impostazione predefinita, solo questa specifica risorsa di Azure può usare questa identità per richiedere token ad Azure AD.

Prerequisiti

La sezione seguente illustra come chiamare l'API pubblica (PAPI) di Azure Sphere da un'app Web di Azure usando l'identità gestita.

Passaggio 1: Abilitare l'identità assegnata dal sistema nella risorsa

Per abilitare l'identità assegnata dal sistema nella risorsa e trovare l'ID oggetto per il progetto:

  1. Nel riquadro di spostamento sinistro del portale di Azure fare clic su servizio app.
  2. Scegliere le sottoscrizioni necessarie dall'elenco a discesa e selezionare l'app nei risultati della ricerca.
  3. Nel menu dell'app per la logica, in Impostazioni, selezionare Identità.
  4. Abilitare l'identità assegnata dal sistema impostando Stato su .
  5. Fare clic su Salva.
  6. Copiare l'ID oggetto.

Passaggio 2: Aggiungere l'identità gestita al tenant di Azure Sphere

Nota

Assicurarsi di disporre degli elementi seguenti prima di iniziare questo passaggio:

Azure Sphere considera l'entità servizio come un altro utente. Per acquisire un token usando l'entità servizio, aggiungere prima l'utente dell'entità servizio al tenant di Azure Sphere e quindi assegnare un ruolo all'utente in un tenant di Azure Sphere usando l'interfaccia della riga di comando di Azure Sphere.

L'identità utente può essere generata come <ObjectID@<TenantID.onmicrosoft.com>>.

Nell'esempio seguente viene creato un utente usando una combinazione di ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx oggetto e ID tenant di Azure AD nell'ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz tttttttt-tttt-tttt-tttt-tttttttttttttenant di Azure Sphere e quindi si aggiunge il ruolo Collaboratore per questo utente.

  1. Accedere con l'account di accesso di Azure Sphere usando l'interfaccia della riga di comando di Azure Sphere:

    azsphere login
    
  2. Selezionare il tenant richiesto:

    azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
    
  3. Per aggiungere l'utente a un ruolo obbligatorio:

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

Passaggio 3: Aggiungere il pacchetto NuGet Azure.Identity nel progetto

Aggiungere il pacchetto NuGet Azure.Identity nel progetto. Il token DELL'API pubblica (PAPI) di Azure Sphere può essere acquisito da DefaultAzureCredential.

Ad esempio, vedere il frammento di codice:

    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;
    }