Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Tenanti pracovních sil
Externí tenanti (další informace)
Tento kurz je poslední částí série, která demonstruje vytváření a testování chráněného webového rozhraní API zaregistrovaného v tenantovi Microsoft Entra. V části 1 této sériejste vytvořili webové rozhraní API ASP.NET Core a chránili jeho koncové body. Teď vytvoříte jednoduchou aplikaci démona, zaregistrujete ji ve svém tenantovi a použijete aplikaci démona k otestování webového rozhraní API, které jste vytvořili.
V tomto kurzu se naučíte:
- Registrace aplikace démona
- Přiřadit roli aplikace vašemu daemonu
- Sestavte svou démonickou aplikaci
- Spusťte svou daemon aplikaci k volání chráněného webového rozhraní API
Požadavky
- Pokud jste to ještě neudělali, dokončete kurz : Sestavení a ochrana webového rozhraní API ASP.NET Core s využitím platformy Microsoft Identity Platform
Registrace aplikace démona
Následující kroky ukazují, jak zaregistrovat aplikaci démona v Centru pro správu Microsoft Entra:
Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
Pokud máte přístup k více tenantům, pomocí ikony
Nastavení v horní nabídce přepněte do externího tenanta z nabídky Adresáře a předplatná.Přejděte k Entra ID>registracím aplikací.
Vyberte + Nová registrace.
Na stránce Zaregistrovat stránku aplikace, která se zobrazí, zadejte registrační informace vaší aplikace:
V části Název zadejte smysluplný název aplikace, který se zobrazí uživatelům aplikace, například ciam-client-app .
V části Podporované typy účtů vyberte Pouze účty v tomto organizačním adresáři.
Vyberte Zaregistrovat.
Po dokončení registrace se zobrazí podokno Přehled aplikace. Zaznamenejte ID adresáře (tenanta) a ID aplikace (klienta), které použijete ve zdrojovém kódu vaší aplikace.
Vytvořte tajný klíč klienta pro zaregistrovanou aplikaci. Aplikace používá tajný klíč klienta k prokázání své identity při žádostech o tokeny:
- Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například tajný kód klienta webové aplikace), a otevřete tak její stránku Přehled.
- V části Spravovatvyberte Certifikáty & tajných kódů>Tajné kódy klienta>Nový tajný klíč klienta.
- Do pole Popis zadejte popis tajného klíče klienta (například tajný kód klienta webové aplikace).
- V části Konec platnosti vyberte dobu platnosti tajného kódu (podle pravidel zabezpečení vaší organizace) a pak vyberte Přidat.
- Poznamenejte si hodnotu tajného kódu. Tuto hodnotu použijete pro konfiguraci v pozdějším kroku. Hodnota tajného kódu se znovu nezobrazí a nebude jakýmkoli způsobem zpřístupněna po přechodu od certifikátů a tajných kódů. Ujistěte se, že jste ho nahráli.
Přiřadit roli aplikace vašemu daemonu
Aplikace, které se sami ověřují bez uživatele, vyžadují oprávnění aplikace (označované také jako role). Tato oprávnění umožňují aplikaci, aby k prostředkům přistupovala přímo. Pokud bychom naopak testovali rozhraní API s přihlášeným uživatelem, přiřadili bychom delegovaná oprávnění (obory). Delegovaná oprávnění umožňují aplikaci jednat jménem uživatele, omezená na přístupová práva uživatele. Pomocí následujícího postupu přiřaďte oprávnění pro démonickou aplikaci:
Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili, například ciam-client-app.
V části Spravovat vyberte oprávnění rozhraní API.
V části Nakonfigurovaná oprávnění vyberte Přidat oprávnění.
Vyberte rozhraní API, která moje organizace používá, kartu.
V seznamu rozhraní API vyberte rozhraní API, jako například ciam-ToDoList-api.
Vyberte možnost Oprávnění aplikace. Tuto možnost vybereme, protože aplikace se přihlašuje sama za sebe, ale ne jménem uživatele.
V seznamu oprávnění vyberte TodoList.Read.All, ToDoList.ReadWrite.All (v případě potřeby použijte vyhledávací pole).
Vyberte tlačítko Přidat oprávnění.
V tomto okamžiku jste správně přiřadili oprávnění. Vzhledem k tomu, že aplikace démona neumožňuje uživatelům pracovat s ním, nemůžou s těmito oprávněními souhlasit sami uživatelé. Pokud chcete tento problém vyřešit, musíte jako správce udělit souhlas s těmito oprávněními jménem všech uživatelů v tenantovi:
- Vyberte Udělit souhlas správce pro <název vašeho nájemce>, poté vyberte Ano.
- Vyberte Aktualizovat a ověřte, že se zobrazí Udělěno pro <název vašeho tenanta> v části Stav pro obě oprávnění.
Vytvořit aplikaci démona
Inicializace konzolové aplikace .NET a přechod do kořenové složky:
dotnet new console -o MyTestApp cd MyTestAppNainstalujte MSAL.NET, který vám pomůže se zpracováním ověřování spuštěním následujícího příkazu:
dotnet add package Microsoft.Identity.ClientSpusťte projekt rozhraní API a poznamenejte si port, na kterém běží.
Otevřete soubor Program.cs a nahraďte kód "Hello world" následujícím kódem.
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);Přejděte do kořenového adresáře aplikace démona a spusťte aplikaci pomocí příkazu
dotnet run. Tento kód odešle požadavek bez přístupového tokenu. Řetězec Vaše odpověď je: Neautorizováno by se měl zobrazit ve vaší konzoli.Odeberte kód v kroku 4 a nahraďte následujícím kódem a otestujte rozhraní API odesláním požadavku s platným přístupovým tokenem. Tato démonická aplikace používá tok přihlašovacích údajů klienta k získání přístupového tokenu při ověřování bez zásahu uživatele.
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);Zástupné symboly v kódu nahraďte ID klienta vaší démonové aplikace, tajným klíčem, ID webového API aplikace a názvem tenanta.
- Pro externí tenanty použijte autoritu ve formuláři:
"https://{tenantName}.ciamlogin.com/" - Pro tenanty pracovních sil použijte autoritu ve formuláři:
"https://login.microsoftonline.com/{tenantId}"
- Pro externí tenanty použijte autoritu ve formuláři:
Přejděte do kořenového adresáře aplikace démona a spusťte aplikaci pomocí příkazu
dotnet run. Tento kód odešle požadavek s platným přístupovým tokenem. Měl by se zobrazit řetězec: Odpověď je: OK vytištěná v konzole.