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)
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.
- Minimální požadavek na sadu .NET 6.0 SDK.
- Visual Studio 2022 nebo Visual Studio Code.
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
- Stáhněte soubor .zip. Extrahujte ho do složky, kde jméno má méně než 260 znaků.
Konfigurace projektu
Pokud chcete v ukázce aplikace démona klienta použít podrobnosti o registraci aplikace, postupujte následovně:
Otevřete okno konzoly a přejděte do ms-identity-docs-code-dotnet/console-daemon adresář:
cd ms-identity-docs-code-dotnet/console-daemonOtevř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 hodnotouApplication (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 hodnotouObject 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.
Související obsah
Naučte se vytvářet tuto ASP.NET webovou aplikaci pomocí série Kurz: Registrace aplikace vMicrosoft Identity Platform .
Rychlý start : Nasazení webové aplikace ASP.NET do služby Azure App Service
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:
- (Doporučeno) Použijte rozšíření Microsoft Entra External ID pro nastavení externího tenanta přímo ve Visual Studio Code.
- Vytvoření nového externího tenanta v Centru pro správu Microsoft Entra.
- 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:
- 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.
- 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 platnostivyberte dobu, po kterou je tajemství platné (podle pravidel zabezpečení vaší organizace), a poté zvolte Přidat.
- 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
Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili, například ciam-client-app.
V části Spravovatvyberte oprávnění rozhraní API.
V části Nakonfigurovaná oprávněnívyberte Přidat oprávnění.
Vyberte záložku rozhraní API, která moje organizace používá.
V seznamu rozhraní API vyberte například ciam-ToDoList-api.
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.
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 tenanta>, a pak vyberte Ano.
- 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:
Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například ciam-ToDoList-api) a otevřete její stránku Přehled.
V části Spravovatvyberte role aplikace.
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é 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.gitPří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
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\AppSpuš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ě:
V editoru kódu otevřete soubor
App\authConfig.js.Vyhledejte zástupný symbol:
Enter_the_Application_Id_Herea nahraďte jej ID klienta aplikace démona, kterou jste zaregistrovali dříve.Enter_the_Tenant_Subdomain_Herea nahraďte ji subdoménou Adresáře (tenanta). Pokud je například primární doména vašeho tenantacontoso.onmicrosoft.com, použijtecontoso. Pokud neznáte název klienta, zjistěte, jak zjistit podrobnosti o klientovi.Enter_the_Client_Secret_Herea nahraďte ji hodnotou tajného kódu démonické aplikace, kterou jste zkopírovali dříve.Enter_the_Web_Api_Application_Id_Herea 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:
V editoru kódu otevřete soubor
API\ToDoListAPI\appsettings.json.Vyhledejte zástupný symbol:
Enter_the_Application_Id_Herea nahraďte ho ID aplikace (klienta) webového rozhraní API, které jste zkopírovali.Enter_the_Tenant_Id_Herea nahraďte ho identifikátorem tenanta (adresáře), které jste zkopírovali dříve.Enter_the_Tenant_Subdomain_Herea nahraďte ji subdoménou Adresáře (tenanta). Pokud je například primární doména vašeho tenantacontoso.onmicrosoft.com, použijtecontoso. 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.
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 runSpusť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.