Dela via


Anropa ett API i ett .NET-exempel daemonprogram

Den här guiden använder ett .NET-exempel daemonprogram för att visa hur ett daemonprogram hämtar en token för att anropa ett skyddat webb-API. Microsoft Entra skyddar webb-API:et.

Ett daemonprogram hämtar en token för sig själv (inte för en användares räkning). Användare kan inte interagera med ett daemonprogram eftersom det kräver en egen identitet. Den här typen av program begär en åtkomsttoken med hjälp av dess programidentitet och presenterar dess program-ID, autentiseringsuppgifter (lösenord eller certifikat) och program-ID URI till Microsoft Entra Externt ID.

Förutsättningar

Registrera ett daemonprogram och ett webb-API

I det här steget skapar du daemon- och webb-API-programregistreringarna och anger omfången för webb-API:et.

Registrera ett webb-API-program

  1. Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.

  2. Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till din externa klient från menyn Kataloger + prenumerationer.

  3. Bläddra till Identitetsprogram>> Appregistreringar.

  4. Välj + Ny registrering.

  5. På sidan Registrera ett program som visas anger du programmets registreringsinformation:

    1. I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare, till exempel ciam-ToDoList-api.

    2. Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.

  6. Välj Registrera för att skapa programmet.

  7. Programmets översiktsfönster visas när registreringen är klar. Registrera katalog-ID:t (klient)-ID:t och program-ID:t (klient) som ska användas i programmets källkod.

Konfigurera programroller

Ett API måste publicera minst en approll för program, även kallat Programbehörighet, för att klientapparna ska få en åtkomsttoken som sig själva. Programbehörigheter är den typ av behörigheter som API:er bör publicera när de vill att klientprogram ska kunna autentiseras som sig själva och inte behöver logga in användare. Följ dessa steg för att publicera en programbehörighet:

  1. På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-ToDoList-api) för att öppna sidan Översikt.

  2. Under Hantera väljer du Approller.

  3. Välj Skapa approll och ange sedan följande värden och välj sedan Använd för att spara ändringarna:

    Property Värde
    Visningsnamn ToDoList.Read.All
    Tillåtna medlemstyper Appar
    Värde ToDoList.Read.All
    beskrivning Tillåt att appen läser alla användares ToDo-lista med hjälp av TodoListApi
  4. Välj Skapa approll igen och ange sedan följande värden för den andra approllen och välj sedan Använd för att spara ändringarna:

    Property Värde
    Visningsnamn ToDoList.ReadWrite.All
    Tillåtna medlemstyper Appar
    Värde ToDoList.ReadWrite.All
    beskrivning Tillåt att appen läser och skriver alla användares ToDo-lista med hjälp av ToDoListApi

Konfigurera valfria anspråk

Du kan idtypa valfritt anspråk för att hjälpa webb-API:et att avgöra om en token är en apptoken eller en app + användartoken. Även om du kan använda en kombination av scp - och rollanspråk för samma ändamål är det enklaste sättet att skilja en apptoken och en app + användartoken åt med hjälp av idtyp-anspråket . Till exempel är värdet för det här anspråket app när token är en endast apptoken.

Registrera daemonprogrammet

För att ditt program ska kunna logga in användare med Microsoft Entra måste microsoft Entras externa ID informeras om det program som du skapar. Appregistreringen upprättar en förtroenderelation mellan appen och Microsoft Entra. När du registrerar ett program genererar externt ID en unik identifierare som kallas ett program-ID (klient)-ID, ett värde som används för att identifiera din app när du skapar autentiseringsbegäranden.

Följande steg visar hur du registrerar din app i administrationscentret för Microsoft Entra:

  1. Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.

  2. Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till din externa klient från menyn Kataloger + prenumerationer.

  3. Bläddra till Identitetsprogram>> Appregistreringar.

  4. Välj + Ny registrering.

  5. På sidan Registrera ett program som visas;

    1. Ange ett beskrivande programnamn som visas för appens användare, till exempel ciam-client-app.
    2. Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.
  6. Välj Registrera.

  7. Programmets översiktsfönster visas vid lyckad registrering. Registrera det program-ID (klient)-ID som ska användas i programmets källkod.

Skapa en klienthemlighet

Skapa en klienthemlighet för det registrerade programmet. Programmet använder klienthemligheten för att bevisa sin identitet när den begär token.

  1. På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-client-app) för att öppna sidan Översikt.
  2. Under Hantera väljer du Certifikat och hemligheter.
  3. Välj Ny klienthemlighet.
  4. I rutan Beskrivning anger du en beskrivning av klienthemligheten (till exempel ciam-appklienthemlighet).
  5. Under Upphör att gälla väljer du en varaktighet för vilken hemligheten är giltig (enligt organisationens säkerhetsregler) och väljer sedan Lägg till.
  6. Registrera hemlighetens värde. Du använder det här värdet för konfiguration i ett senare steg. Det hemliga värdet visas inte igen och kan inte hämtas på något sätt när du har navigerat bort från certifikaten och hemligheterna. Se till att du registrerar den.

Bevilja API-behörigheter till daemon-programmet

  1. På sidan Appregistreringar väljer du det program som du skapade, till exempel ciam-client-app.

  2. Under Hantera väljer du API-behörigheter.

  3. Under Konfigurerade behörigheter väljer du Lägg till en behörighet.

  4. Välj fliken API:er som min organisation använder .

  5. I listan över API:er väljer du API:et, till exempel ciam-ToDoList-api.

  6. Välj alternativet Programbehörigheter . Vi väljer det här alternativet eftersom appen loggar in som sig själv, men inte för en användares räkning.

  7. I behörighetslistan väljer du TodoList.Read.All, ToDoList.ReadWrite.All (använd sökrutan om det behövs).

  8. Välj knappen Lägg till behörigheter.

  9. Nu har du tilldelat behörigheterna korrekt. Men eftersom daemon-appen inte tillåter användare att interagera med den, kan användarna själva inte samtycka till dessa behörigheter. För att lösa det här problemet måste du som administratör samtycka till dessa behörigheter för alla användare i klientorganisationen:

    1. Välj Bevilja administratörsmedgivande för <ditt klientnamn> och välj sedan Ja.
    2. Välj Uppdatera och kontrollera sedan att Beviljat för <klientorganisationens namn> visas under Status för båda behörigheterna.

Klona eller ladda ned exempel på daemonprogram och webb-API

Om du vill hämta exempelprogrammet kan du antingen klona det från GitHub eller ladda ned det som en .zip fil.

  • Om du vill klona exemplet öppnar du en kommandotolk och navigerar till den platsen där du vill skapa projektet och anger följande kommando:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • Ladda ned filen .zip. Extrahera den till en filsökväg där namnets längd är färre än 260 tecken.

Konfigurera exempel daemon-programmet och API:et

Så här använder du appregistreringen i klientwebbprogrammets exempel:

  1. Öppna filen ms-identity-ciam-dotnet-tutorial/2-Authorization/3-call-own-api-dotnet-core-daemon/ToDoListClient/appsettings.json i kodredigeraren.

  2. Hitta platshållaren:

    • Enter_the_Application_Id_Here och ersätt det med program-ID:t (klient) för det daemonprogram som du registrerade tidigare.
    • Enter_the_Tenant_Subdomain_Here och ersätt den med underdomänen Katalog (klientorganisation). Om din primära klientdomän till exempel är contoso.onmicrosoft.comanvänder du contoso. Om du inte har ditt klientnamn kan du läsa klientinformationen.
    • Enter_the_Client_Secret_Here och ersätt det med det daemonprogramhemlighetsvärde som du kopierade tidigare.
    • Enter_the_Web_Api_Application_Id_Here och ersätt det med program-ID:t (klient) för webb-API:et som du kopierade tidigare.

Så här använder du din appregistrering i webb-API-exemplet:

  1. I kodredigeraren öppnar du filen ms-identity-ciam-dotnet-tutorial/2-Authorization/3-call-own-api-dotnet-core-daemon/ToDoListAPI/appsettings.json .

  2. Hitta platshållaren:

    • Enter_the_Application_Id_Here och ersätt det med program-ID:t (klient) för webb-API:et som du kopierade.
    • Enter_the_Tenant_Id_Here och ersätt det med katalog-ID:t (klientorganisation) som du kopierade tidigare.
    • Enter_the_Tenant_Subdomain_Here och ersätt den med underdomänen Katalog (klientorganisation). Om din primära klientdomän till exempel är contoso.onmicrosoft.comanvänder du contoso. Om du inte har ditt klientnamn kan du läsa klientinformationen.

Kör och testa daemon-exempelprogram och API

  1. Öppna ett konsolfönster och kör sedan webb-API:et med hjälp av följande kommandon:

    cd 2-Authorization\3-call-own-api-dotnet-core-daemon\ToDoListAPI
    dotnet run
    
  2. Kör daemonklienten med hjälp av följande kommandon:

    cd 2-Authorization\3-call-own-api-dotnet-core-daemon\ToDoListClient
    dotnet run
    

Om daemonprogrammet och webb-API:et körs bör du se något som liknar följande JSON-matris i konsolfönstret:

Posting a to-do...
Retrieving to-do's from server...
To-do data:
ID: 1
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Bake bread
Posting a second to-do...
Retrieving to-do's from server...
To-do data:
ID: 1
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Bake bread
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Butter bread
Deleting a to-do...
Retrieving to-do's from server...
To-do data:
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Butter bread
Editing a to-do...
Retrieving to-do's from server...
To-do data:
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Eat bread
Deleting remaining to-do...
Retrieving to-do's from server...
There are no to-do's in server

Hur det fungerar

Daemon-programmet använder OAuth2.0-klientautentiseringsuppgifter för att hämta en åtkomsttoken för sig själv och inte för användaren. Åtkomsttoken som appbegäranden innehåller de behörigheter som representeras som roller. Klientautentiseringsflödet använder den här uppsättningen behörigheter i stället för användaromfattningar för programtoken. Du exponerade dessa programbehörigheter i webb-API:et tidigare och gav dem sedan till daemonappen. Daemon-appen i den här artikeln använder Microsoft Authentication Library för .NET för att förenkla processen med att hämta en token.

På API-sidan måste webb-API:et kontrollera att åtkomsttoken har de behörigheter som krävs (programbehörigheter). Webb-API:et avvisar åtkomsttoken som inte har de behörigheter som krävs.