Sdílet prostřednictvím


Rychlý start: Volání webového rozhraní API v ukázkové aplikaci démona

Platí pro: Zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro tenanty pracovních sil. Tenanti pracovních sil zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro externí tenanty. Externí tenanti (další informace)

V tomto rychlém startu použijete ukázkovou aplikaci typu daemon k získání přístupového tokenu a volání zabezpečeného webového rozhraní API pomocí knihovny Microsoft Authentication Library (MSAL).

Než začnete, použijte selektor Zvolte typ tenanta v horní části této stránky pro výběr typu tenanta. Microsoft Entra ID poskytuje dvě konfigurace tenantů, firemní a externí. Konfigurace tenanta pracovních sil je určená pro zaměstnance, interní aplikace a další organizační prostředky. Externí tenant je určený pro vaše aplikace určené pro zákazníky.

Ukázková aplikace, kterou použijete v tomto rychlém startu, získá přístupový token pro volání rozhraní Microsoft Graph API.

Požadavky

  • Účet Azure s aktivním předplatným. Pokud ho ještě nemáte, vytvořte účet zdarma.
  • Tento účet Azure musí mít oprávnění ke správě aplikací. Kterákoli z následujících rolí Microsoft Entra zahrnuje potřebná oprávnění:
    • Správce aplikace
    • Vývojář aplikací
    • Správce cloudové aplikace
  • Součást pracovního týmu. Můžete použít výchozí adresář nebo nastavit nového nájemníka.
  • Zaregistrujte novou aplikaci v Centru pro správu Microsoft Entra, která je nakonfigurovaná jenom pro účty v tomto organizačním adresáři. Další podrobnosti najdete v tématu Registrace aplikace . Na stránce Přehled aplikace si poznamenejte následující hodnoty pro pozdější použití:
    • ID aplikace (klienta)
    • ID adresáře (klienta)
  • Přidejte do registrace aplikace tajný klíč klienta. Nepoužívejte tajné kódy klienta v produkčních aplikacích. Místo toho použijte certifikáty nebo federované přihlašovací údaje. Další informace najdete v tématu přidání přihlašovacích údajů do aplikace.

Udělení oprávnění rozhraní API pro aplikaci démona

Aby aplikace démona přistupovala k datům v rozhraní Microsoft Graph API, udělíte jí oprávnění, která potřebuje. Démonní aplikace potřebuje oprávnění typu aplikace. Uživatelé nemůžou pracovat s aplikací démona, takže správce tenanta musí s těmito oprávněními souhlasit. Pomocí následujících kroků udělte oprávnění a odsouhlaste je:

Pro aplikaci démona .NET nemusíte udělovat žádná oprávnění ani s tím souhlasit. Tato démonová aplikace čte informace o své vlastní registraci, takže to může provést bez udělení jakýchkoliv oprávnění aplikace.

Klonování nebo stažení ukázkové aplikace

Pokud chcete získat ukázkovou aplikaci, můžete ji buď naklonovat z GitHubu, nebo si ji stáhnout jako soubor .zip.

  • Pokud chcete ukázku naklonovat, otevřete příkazový řádek a přejděte do umístění, kam chcete projekt vytvořit, a zadejte následující příkaz:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git

Konfigurace projektu

Pokud chcete v ukázce aplikace démona klienta použít podrobnosti o registraci aplikace, postupujte následovně:

  1. Otevřete okno konzoly a přejděte do ms-identity-docs-code-dotnet/console-daemon adresář:

    cd ms-identity-docs-code-dotnet/console-daemon
    
  2. Otevřete Program.cs a nahraďte obsah souboru následujícím fragmentem kódu;

     // Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id>
     Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center",
     // 'Enter the client ID obtained from the Microsoft Entra admin center
     ClientId = "Enter the client ID obtained from the Microsoft Entra admin center",
     // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center
     ClientSecret = "Enter the client secret value obtained from the Microsoft Entra admin center",
     // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID
     ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
    
    • Authority – Autoritou je URL, která označuje adresář, ze kterého může knihovna MSAL žádat tokeny. Nahraďte Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center hodnotou Adresář (nájemce) ID, která byla zaznamenána dříve.
    • ClientId – identifikátor aplikace, označovaný také jako klient. Nahraďte text v uvozovkách hodnotou Application (client) ID, která byla zaznamenána dříve ze stránky přehledu registrované aplikace.
    • ClientSecret – tajný klíč klienta vytvořený pro aplikaci v Centru pro správu Microsoft Entra. Zadejte hodnotu tajného klíče klienta.
    • ClientObjectId – ID objektu klientské aplikace. Nahraďte text v uvozovkách hodnotou Object ID, kterou jste si poznamenali dříve ze stránky přehledu registrované aplikace.

Spuštění a otestování aplikace

Nakonfigurovali jste ukázkovou aplikaci. Můžete pokračovat spuštěním a otestováním.

V okně konzoly spusťte následující příkaz, který sestaví a spustí aplikaci:

dotnet run

Po úspěšném spuštění aplikace se zobrazí odpověď podobná následujícímu fragmentu kódu (zkrácená kvůli stručnosti):

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"deletedDateTime": null,
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"applicationTemplateId": null,
"disabledByMicrosoftStatus": null,
"createdDateTime": "2021-01-17T15:30:55Z",
"displayName": "identity-dotnet-console-app",
"description": null,
"groupMembershipClaims": null,
...
}

Jak to funguje

Aplikace démona získá token jménem samotného (nikoli jménem uživatele). Uživatelé nemůžou pracovat s aplikací démona, protože vyžaduje vlastní identitu. Tento typ aplikace vyžaduje přístupový token pomocí identity aplikace tak, že předá ID aplikace, přihlašovací údaje (tajný klíč nebo certifikát) a identifikátor URI ID aplikace. Aplikace démona používá standardní tok přihlašovacích údajů klienta OAuth 2.0 k získání přístupového tokenu.

Aplikace získá přístupový token z platformy Microsoft Identity Platform. Přístupový token je vymezený pro rozhraní Microsoft Graph API. Aplikace pak použije přístupový token k vyžádání vlastních podrobností o registraci aplikace z rozhraní Microsoft Graph API. Aplikace může požádat o libovolný prostředek z rozhraní Microsoft Graph API, pokud má přístupový token správná oprávnění.

Ukázka ukazuje, jak může bezobslužná úloha nebo služba Systému Windows běžet s identitou aplikace místo identity uživatele.

Požadavky

  • Účet Azure s aktivním předplatným. Pokud ho ještě nemáte, vytvořte účet zdarma.
  • Tento účet Azure musí mít oprávnění ke správě aplikací. Kterákoli z následujících rolí Microsoft Entra zahrnuje potřebná oprávnění:
    • Správce aplikace
    • Vývojář aplikací
    • Správce cloudové aplikace
  • Externí nájemník. Pokud ho chcete vytvořit, zvolte některou z následujících metod:
  • Zaregistrujte novou aplikaci v centru pro správu Microsoft Entra s následující konfigurací. Další informace najdete v tématu Registrace aplikace.
    • Název: aplikace ciam-daemon-app
    • podporované typy účtů: Účty v tomto organizačním adresáři (pouze jeden tenant)
  • Visual Studio Code nebo jiný editor kódu.
  • .NET 7.0 nebo novější.
  • Node.js (pouze pro implementaci uzlu)

Vytvoření tajného klíče klienta

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:

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například klientský tajný kód webové aplikace), a otevřete její stránku Přehled.
  2. V části Spravovatvyberte Certifikáty & tajných kódů>Tajné kódy klienta>Nový tajný klíč klienta.
  3. Do pole Popis zadejte popis tajného klíče klienta (například tajný kód klienta webové aplikace).
  4. V části Konec platnostivyberte dobu, po kterou je tajemství platné (podle pravidel zabezpečení vaší organizace), a poté zvolte Přidat.
  5. Zaznamenejte hodnotu tajného . Tuto hodnotu použijete pro konfiguraci v pozdějším kroku. Tajná hodnota nebude znovu zobrazena a nelze ji žádným způsobem načíst poté, co opustíte Certifikáty a tajné kódy. Ujistěte se, že jste ho nahráli.

Při vytváření přihlašovacích údajů pro důvěrnou klientskou aplikaci:

  • Microsoft doporučuje, abyste před přesunutím aplikace do produkčního prostředí používali certifikát místo tajného klíče klienta. Další informace o tom, jak používat certifikát, najdete v pokynech v přihlašovacích údajů ověřovacího certifikátu aplikace Microsoft Identity Platform.

  • Pro účely testování můžete vytvořit certifikát podepsaný svým držitelem a nakonfigurovat aplikace tak, aby se s ním ověřily. Nicméně v produkčnímbyste měli zakoupit certifikát podepsaný dobře známou certifikační autoritou a pak použít Azure Key Vault ke správě přístupu k certifikátu a jeho životnosti.

Udělení oprávnění rozhraní API pro aplikaci démona

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili, například ciam-client-app.

  2. V části Spravovatvyberte oprávnění rozhraní API.

  3. V části Nakonfigurovaná oprávněnívyberte Přidat oprávnění.

  4. Vyberte záložku rozhraní API, která moje organizace používá.

  5. V seznamu rozhraní API vyberte například ciam-ToDoList-api.

  6. Vyberte možnost Oprávnění aplikace. Tuto možnost vybereme, protože aplikace se přihlašuje jako sama sebe, ale ne jménem uživatele.

  7. V seznamu oprávnění vyberte TodoList.Read.All, ToDoList.ReadWrite.All (v případě potřeby použijte vyhledávací pole).

  8. Vyberte tlačítko Přidat oprávnění.

  9. 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:

    1. Vyberte Udělit souhlas správce pro <název vašeho tenanta>, a pak vyberte Ano.
    2. Vyberte Aktualizovat, a potom ověřte, že Uděleno pro <název vašeho tenanta> se zobrazí v části Stav pro obě oprávnění.

Konfigurace rolí aplikací

Rozhraní API musí publikovat pro aplikace minimálně jednu roli aplikace, označovanou také jako oprávnění aplikace, aby klientské aplikace mohly získat přístupový token jako takové. Oprávnění aplikace jsou typem oprávnění, která by rozhraní API měla publikovat, když chtějí umožnit klientským aplikacím úspěšné ověření vlastní identity, aniž by bylo nutné přihlašovat uživatele. Pokud chcete publikovat oprávnění aplikace, postupujte takto:

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například ciam-ToDoList-api) a otevřete její stránku Přehled.

  2. V části Spravovatvyberte role aplikace.

  3. Vyberte Vytvořit roli aplikace, poté zadejte následující hodnoty, a pak vyberte Použít, aby se změny uložily.

    Vlastnost Hodnota
    Zobrazovaný název Číst.Vše.ToDoList
    Povolené typy členů Aplikace
    Hodnota Číst.Vše.ToDoList
    Popis Povolit aplikaci číst seznam úkolů každého uživatele pomocí 'TodoListApi'
    Chcete tuto roli aplikace povolit? Ponechat zaškrtnuté
  4. Vyberte znovu Vytvořit roli aplikace, poté zadejte následující hodnoty pro druhou roli aplikace a nakonec vyberte Použít, abyste uložili změny.

    Vlastnost Hodnota
    Zobrazovaný název ToDoList.ReadWrite.All
    Povolené typy členů Aplikace
    Hodnota ToDoList.ReadWrite.All
    Popis Povolit aplikaci čtení a zápisu ToDo seznamu každého uživatele pomocí 'ToDoListApi'
    Chcete tuto roli aplikace povolit? Ponechat zaškrtnuté

Konfigurace volitelných nároků

Můžete přidat volitelnou deklaraci idtyp , která pomůže rozhraní API určit, zda jde o token aplikace nebo token aplikace a uživatele. I když můžete použít kombinaci deklarací identity scp a rolí , použití deklarace identity idtyp je nejjednodušší způsob, jak odlišit token aplikace od tokenu aplikace + tokenu uživatele. Například hodnota tohoto nároku je aplikace, když je token pouze pro aplikaci.

Klonování nebo stažení ukázkové aplikace démona a webového rozhraní API

Pokud chcete získat ukázkovou aplikaci, můžete ji buď naklonovat z GitHubu, nebo si ji stáhnout jako soubor .zip.

  • Pokud chcete ukázku naklonovat, otevřete příkazový řádek a přejděte do umístění, kam chcete projekt vytvořit, a zadejte následující příkaz:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • Případně stáhněte soubor s ukázkami .zipa pak ho extrahujte do cesty k souboru, kde délka názvu je menší než 260 znaků.

Nainstalujte závislosti projektu

  1. Otevřete okno konzoly a přejděte do adresáře, který obsahuje ukázkovou aplikaci Node.js:

    cd 2-Authorization\3-call-api-node-daemon\App
    
  2. Spuštěním následujících příkazů nainstalujte závislosti aplikací:

    npm install && npm update
    

Konfigurace ukázkové aplikace démona a rozhraní API

Pokud chcete v ukázce klientské webové aplikace použít podrobnosti o registraci aplikace, postupujte následovně:

  1. V editoru kódu otevřete soubor App\authConfig.js.

  2. Vyhledejte zástupný symbol:

    • Enter_the_Application_Id_Here a nahraďte jej ID klienta aplikace démona, kterou jste zaregistrovali dříve.

    • Enter_the_Tenant_Subdomain_Here a nahraďte ji subdoménou Adresáře (tenanta). Pokud je například primární doména vašeho tenanta contoso.onmicrosoft.com, použijte contoso. Pokud neznáte název klienta, zjistěte, jak zjistit podrobnosti o klientovi.

    • Enter_the_Client_Secret_Here a nahraďte ji hodnotou tajného kódu démonické aplikace, kterou jste zkopírovali dříve.

    • Enter_the_Web_Api_Application_Id_Here a nahraďte ho ID aplikace (klienta) webového rozhraní API, které jste zkopírovali dříve.

Pro použití registrace aplikace v příkladu webového API:

  1. V editoru kódu otevřete soubor API\ToDoListAPI\appsettings.json.

  2. Vyhledejte zástupný symbol:

    • Enter_the_Application_Id_Here a nahraďte ho ID aplikace (klienta) webového rozhraní API, které jste zkopírovali.

    • Enter_the_Tenant_Id_Here a nahraďte ho identifikátorem tenanta (adresáře), které jste zkopírovali dříve.

    • Enter_the_Tenant_Subdomain_Here a nahraďte ji subdoménou Adresáře (tenanta). Pokud je například primární doména vašeho tenanta contoso.onmicrosoft.com, použijte contoso. Pokud neznáte název klienta, zjistěte, jak zjistit podrobnosti o klientovi.

Spuštění a testování ukázkové aplikace démona a rozhraní API

Nakonfigurovali jste ukázkovou aplikaci. Můžete pokračovat spuštěním a otestováním.

  1. Otevřete okno konzoly a pak spusťte webové rozhraní API pomocí následujících příkazů:

    cd 2-Authorization\3-call-api-node-daemon\API\ToDoListAPI
    dotnet run
    
  2. Spusťte klienta webové aplikace pomocí následujících příkazů:

    2-Authorization\3-call-api-node-daemon\App
    node . --op getToDos
    

Pokud se vaše aplikace démona a webové rozhraní API úspěšně spustily, měli byste v okně konzoly vidět něco podobného jako v následujícím poli JSON.

{
    "id": 1,
    "owner": "3e8....-db63-43a2-a767-5d7db...",
    "description": "Pick up grocery"
},
{
    "id": 2,
    "owner": "c3cc....-c4ec-4531-a197-cb919ed.....",
    "description": "Finish invoice report"
},
{
    "id": 3,
    "owner": "a35e....-3b8a-4632-8c4f-ffb840d.....",
    "description": "Water plants"
}

Jak to funguje

Aplikace Node.js používá pro sebe, a ne pro uživatele, grantový tok přihlašovacích údajů klienta OAuth 2.0 k získání přístupového tokenu. Přístupový token, který aplikace požaduje, obsahuje oprávnění reprezentovaná jako role. Tok přihlašovacích údajů klienta používá tuto sadu oprávnění místo oborů uživatelů pro tokeny aplikace. Tato oprávnění aplikace jste zpřístupnili dříve ve webovém rozhraní API a poté je udělili aplikaci démona.

Na straně rozhraní API musí ukázkové webové rozhraní API .NET ověřit, že přístupový token má požadovaná oprávnění (oprávnění aplikace). Webové rozhraní API nemůže přijmout přístupový token, který nemá požadovaná oprávnění.

Přístup k datům

Koncový bod webového rozhraní API by měl být připravený přijímat volání uživatelů i aplikací. Proto by měl mít způsob, jak odpovídajícím způsobem reagovat na každou žádost. Například volání od uživatele s delegovanými oprávněními/delegovanými obory obdrží seznam dat uživatele to-do. Oproti tomu může volání z aplikace prostřednictvím oprávnění nebo rolí aplikace obdržet celý seznam úkolů. V tomto článku ale voláme jenom aplikaci, takže jsme nemuseli konfigurovat delegovaná oprávnění nebo obory.