Megosztás a következőn keresztül:


Védett ASP.NET Core Web API tesztelése

A következőkre vonatkozik: Zöld kör fehér pipa szimbólummal, amely a következő tartalmat jelzi a munkaerő-bérlőkre. A munkaerő-bérlők zöld körrel, fehér pipa jellel, amely a következő tartalmat jelzi a külső bérlőkre. Külső bérlők (további információ)

Ez az oktatóanyag egy sorozat utolsó része, amely egy Microsoft Entra-bérlőben regisztrált védett webes API felépítését és tesztelését mutatja be. A sorozat 1. részében létrehozott egy ASP.NET Core webes API-t, és védte annak végpontjait. Most létrehoz egy egyszerűsített démonalkalmazást, regisztrálja azt a bérlőjében, és a démonalkalmazással teszteli a létrehozott webes API-t.

Ebben az útmutatóban Ön:

  • Démonalkalmazás regisztrálása
  • Alkalmazásszerepkör hozzárendelése a démonalkalmazáshoz
  • A démonalkalmazás létrehozása
  • A démonalkalmazás futtatása a védett webes API meghívásához

Előfeltételek

A démonalkalmazás regisztrálása

Az alábbi lépések bemutatják, hogyan regisztrálhatja démonalkalmazását a Microsoft Entra Felügyeleti központban:

  1. Jelentkezzen be a Microsoft Entra felügyeleti központba legalább alkalmazásfejlesztőként.

  2. Ha több bérlőhöz is hozzáfér, a felső menü Beállítások ikonjával válthat a külső bérlőre a Könyvtárak + előfizetések menüből.

  3. Keresse meg az Entra-azonosítós>alkalmazásregisztrációkat.

  4. Válassza az + Új regisztráció lehetőséget.

  5. A megjelenő Alkalmazás regisztrálása lapon adja meg az alkalmazás regisztrációs adatait:

    1. A Név szakaszban adjon meg egy értelmes alkalmazásnevet, amely megjelenik az alkalmazás felhasználói számára, például ciam-client-app.

    2. A Támogatott fióktípusok csoportban válassza a Csak ebben a szervezeti címtárban lévő Fiókok lehetőséget.

  6. Válassza a Regisztráció lehetőséget.

  7. A regisztráció befejezésekor megjelenik az alkalmazás Áttekintés panelje . Jegyezze fel a címtár (bérlő) azonosítóját és az alkalmazás forráskódjában használandó alkalmazás-(ügyfél-) azonosítót .

Hozzon létre egy ügyfélkulcsot a regisztrált alkalmazáshoz. Az alkalmazás az ügyféltitokkal igazolja identitását, amikor tokeneket kér.

  1. Az Alkalmazásregisztrációk lapon válassza ki a létrehozott alkalmazást (például a webalkalmazás titkos kódját) az Áttekintés lap megnyitásához.
  2. A Kezelés területen válassza a Tanúsítványok és titkok>Ügyféltitkok>Új ügyféltitok.
  3. A Leírás mezőbe írja be az ügyfél titkos kódjának leírását (például webalkalmazás ügyfélkódját).
  4. A Lejáratok csoportban válassza ki azt az időtartamot, amelyre érvényes a titkos kód (a szervezet biztonsági szabályai szerint), majd válassza a Hozzáadás lehetőséget.
  5. Jegyezze fel a titkos kód értékét. Ezt az értéket egy későbbi lépésben konfigurálhatja. A titkos kulcs értéke nem jelenik meg újra, és semmilyen módon nem lesz lekérthető, miután eltávolodik a tanúsítványoktól és titkos kódoktól. Győződjön meg róla, hogy rögzíti.

Alkalmazásszerepkör hozzárendelése a démonalkalmazáshoz

Azok az alkalmazások, amelyek felhasználó nélkül hitelesítik magukat, alkalmazásengedélyeket (más néven szerepköröket) igényelnek. Ezek az engedélyek lehetővé teszik, hogy az alkalmazás közvetlenül hozzáférjen az erőforrásokhoz. Ha viszont egy bejelentkezett felhasználóval tesztelnénk az API-t, delegált engedélyeket (hatóköröket) rendelnénk hozzá. A delegált engedélyek lehetővé teszik, hogy az alkalmazás a felhasználó nevében járjon el, a felhasználó hozzáférési jogaira korlátozva. Az alábbi lépéseket követve rendeljen alkalmazásengedélyeket a démonalkalmazáshoz:

  1. Az Alkalmazásregisztrációk lapon válassza ki a létrehozott alkalmazást, például a ciam-client-app alkalmazást.

  2. A Kezelés területen válassza ki az API-engedélyeket.

  3. A Konfigurált engedélyek csoportban válassza az Engedély hozzáadása lehetőséget.

  4. Válassza ki a szervezet által használt API-kat .

  5. Az API-k listájában válassza ki az API-t, például a ciam-ToDoList-api-t.

  6. Válassza az Alkalmazásengedélyek lehetőséget. Ezt a lehetőséget választjuk, mivel az alkalmazás önmagában jelentkezik be, de nem egy felhasználó nevében.

  7. Az engedélyek listájában válassza a TodoList.Read.All, a ToDoList.ReadWrite.All elemet (szükség esetén használja a keresőmezőt).

  8. Válassza az Engedélyek hozzáadása gombot.

  9. Ezen a ponton helyesen rendelte hozzá az engedélyeket. Mivel azonban a démonalkalmazás nem teszi lehetővé a felhasználók számára az interakciót, maguk a felhasználók nem járulhatnak hozzá ezekhez az engedélyekhez. A probléma megoldásához Önnek, mint rendszergazdának hozzá kell adnia ezeket az engedélyeket a bérlő összes felhasználója nevében:

    1. Válassza a rendszergazdai hozzájárulás megadása a bérlő nevének< megadását>, majd válassza az Igen lehetőséget.
    2. Válassza a Frissítés lehetőséget, majd ellenőrizze, hogy a bérlő nevének< megadása > mindkét engedély állapotában megjelenik-e.

Démonalkalmazás létrehozása

  1. Inicializáljon egy .NET-konzolalkalmazást, és keresse meg a gyökérmappáját:

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Telepítse MSAL.NET a hitelesítés kezeléséhez az alábbi parancs futtatásával:

    dotnet add package Microsoft.Identity.Client
    
  3. Futtassa az API-projektet, és jegyezze fel azt a portot, amelyen fut.

  4. Nyissa meg a Program.cs fájlt, és cserélje le a "Hello world" kódot a következő kódra.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist);
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Lépjen a démon alkalmazás gyökérkönyvtárába, és futtassa az alkalmazást a paranccsal dotnet run. Ez a kód hozzáférési jogkivonat nélkül küld egy kérést. A következő karakterláncnak kell megjelennie a konzolban: A válasz: Jogosulatlan.

  5. Távolítsa el a 4. lépésben található kódot, és cserélje le az alábbira az API teszteléséhez egy érvényes hozzáférési jogkivonattal rendelkező kérés elküldésével. Ez a démonalkalmazás az ügyfél hitelesítő adatainak folyamatával szerez be egy hozzáférési jogkivonatot, miközben felhasználói beavatkozás nélkül hitelesít.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantId = "<your-tenant-id>";     //Use in workforce tenant configuration
    var tenantName = "<your-tenant-name>"; //Use in external tenant configuration
    var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration 
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync();
    Console.WriteLine($"Access Token: {result.AccessToken}");
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist");
    var content = await response.Content.ReadAsStringAsync();
    
    Console.WriteLine("Your response is: " + response.StatusCode);
    Console.WriteLine(content);
    
  6. Cserélje le a kód helyőrzőit a démonalkalmazás ügyfél-azonosítójára, titkos kódjára, webes API-alkalmazásazonosítójára és bérlőnevére.

    • Külső bérlők esetén használja a jogosultságot az alábbi formában: "https://{tenantName}.ciamlogin.com/"
    • A munkaerő-bérlők esetében használja a hatóságot az alábbi formában: "https://login.microsoftonline.com/{tenantId}"
  7. Lépjen a démon alkalmazás gyökérkönyvtárába, és futtassa az alkalmazást a paranccsal dotnet run. Ez a kód egy érvényes hozzáférési jogkivonattal rendelkező kérést küld. A következő sztringnek kell megjelennie: Válasza: OK a konzolon.