Få åtkomst till Offentligt API för Azure Sphere med AAD-hanterad identitet
Viktigt!
Det här är dokumentationen om Azure Sphere (Legacy). Azure Sphere (Legacy) upphör den 27 september 2027 och användarna måste migrera till Azure Sphere (integrerad) vid den här tiden. Använd versionsväljaren ovanför TOC för att visa dokumentationen om Azure Sphere (integrerad).
Du kan använda den här metoden för att autentisera till alla tjänster som stöder AAD-autentisering (Azure Active Directory), utan några autentiseringsuppgifter i koden. AAD-hanterad identitet hanterar skapandet eller förnyelsen av tjänstens huvudnamn åt dig. Det är ett huvudnamn för tjänsten av en särskild typ som endast kan användas med Azure-resurser. När den hanterade identiteten tas bort tas motsvarande tjänsthuvudnamn bort automatiskt.
Systemtilldelad: Med vissa Azure-tjänster kan du aktivera en hanterad identitet direkt på en tjänstinstans. Till exempel en Azure App Service. När du aktiverar en systemtilldelad hanterad identitet skapas en identitet i Azure AD som är kopplad till livscykeln för den tjänstinstansen. Så när resursen tas bort tar Azure automatiskt bort identiteten åt dig. Det är bara den Azure-resursen som kan använda den här identiteten för att begära tokens från Azure AD.
Förutsättningar
- En Azure Sphere-baserad enhet med utvecklingsfunktioner.
- Azure Sphere-klientorganisation.
- Konfigurera en utvecklingsmiljö för Azure Sphere.
- Azure Active Directory-klientorganisation (klient-ID).
- En Azure-prenumeration.
- Lägg till program-ID:t för Azure Sphere Public API i din Azure-klientorganisation.
I följande avsnitt beskrivs hur du anropar Azure Sphere Public API (PAPI) från en Azure-webbapp med hjälp av hanterad identitet.
Steg 1: Aktivera den systemtilldelade identiteten i resursen
Så här aktiverar du den systemtilldelade identiteten i resursen och för att hitta objekt-ID:t för projektet:
- Klicka på App Services i det vänstra navigeringsfönstret i Azure Portal.
- Välj de prenumerationer som krävs i listrutan och välj din app i sökresultaten.
- På logikappmenyn går du till Inställningar och väljer Identitet.
- Aktivera den systemtilldelade identiteten genom att ange Status till På.
- Klicka på Spara.
- Kopiera objekt-ID :t.
Steg 2: Lägg till den hanterade identiteten i Azure Sphere-klientorganisationen
Kommentar
Kontrollera att du har följande innan du påbörjar det här steget:
- Azure Sphere-klientorganisation: Kör kommandot azsphere tenant show-selected med hjälp av Azure Sphere CLI.
- Azure-klientorganisations-ID: Hitta klient-ID via Azure Portal. Kopiera Klient-ID:t för Azure Active Directory.
Azure Sphere behandlar tjänstens huvudnamn som en annan användare. Om du vill hämta en token med tjänstens huvudnamn lägger du först till användaren för tjänstens huvudnamn i Azure Sphere-klientorganisationen och tilldelar sedan en roll till användaren i en Azure Sphere-klientorganisation med hjälp av Azure Sphere CLI.
Användaridentiteten kan genereras som <ObjectID>@<TenantID.onmicrosoft.com>.
I följande exempel skapar vi en användare med hjälp av en kombination av objekt-ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
och Azure AD-klient-ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
i Azure Sphere-klient-ID:t tttttttt-tttt-tttt-tttt-tttttttttttt
och lägger sedan till deltagarrollen för den här användaren.
Logga in med din Azure Sphere-inloggning med Hjälp av Azure Sphere CLI:
azsphere login
Välj den klientorganisation som krävs:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
Så här lägger du till användaren i en obligatorisk roll:
azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
Steg 3: Lägg till Azure.Identity NuGet-paketet i projektet
Lägg till Azure.Identity NuGet-paketet i projektet. Azure Sphere Public API-token (PAPI) kan hämtas av DefaultAzureCredential.
Se till exempel kodfragmentet:
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;
}