Kurz: Vytvoření démona s více tenanty, který používá platformu Microsoft Identity Platform

V tomto kurzu stáhnete a spustíte webovou aplikaci ASP.NET démona, která ukazuje použití přihlašovacích údajů klienta OAuth 2.0 k získání přístupového tokenu pro volání rozhraní Microsoft Graph API.

V tomto kurzu:

  • Integrace aplikace démona s platformou Microsoft Identity Platform
  • Udělení oprávnění aplikace přímo k aplikaci správcem
  • Získání přístupového tokenu pro volání rozhraní Microsoft Graph API
  • Volejte rozhraní Microsoft Graph API.

Pokud nemáte předplatné Azure, vytvořte si bezplatný účet , než začnete.

Požadavky

  • Visual Studio 2017 nebo 2019
  • Tenanta Azure AD. Další informace najdete v tématu Jak získat tenanta Azure AD.
  • Jeden nebo více uživatelských účtů ve vašem tenantovi Azure AD Tato ukázka nebude fungovat s účtem Microsoft. Pokud jste se přihlásili k webu Azure Portal pomocí účtu Microsoft a nikdy jste v adresáři nevytvořili uživatelský účet, udělejte to teď.

Scenario

Aplikace je sestavená jako aplikace ASP.NET MVC. K přihlášení uživatelů používá middleware OWIN OpenID Connect.

Komponenta démon v této ukázce je kontroler rozhraní API. SyncController.cs Po zavolání kontroleru se přetáhne do seznamu uživatelů v tenantovi Azure Active Directory zákazníka (Azure AD) z Microsoft Graphu. SyncController.cs se aktivuje voláním AJAX ve webové aplikaci. K získání přístupového tokenu pro Microsoft Graph používá knihovnu Microsoft Authentication Library (MSAL) pro .NET .

Vzhledem k tomu, že se jedná o aplikaci s více tenanty pro firemní zákazníky Microsoftu, musí zákazníkům poskytnout způsob, jak se k firemním datům "zaregistrovat" nebo "připojit". Během toku připojení globální správce nejprve udělí aplikaci oprávnění přímo k aplikaci, aby měl přístup k firemním datům v neinteraktivním způsobem bez přítomnosti přihlášeného uživatele. Většina logiky v této ukázce ukazuje, jak dosáhnout tohoto toku připojení pomocí koncového bodu souhlasu správce služby Identity Platform.

Diagram shows UserSync App with three local items connecting to Azure, with Start dot Auth acquiring a token interactively to connect to Azure A D, AccountController getting admin consent to connect to Azure A D, and SyncController reading user to connect to Microsoft Graph.

Další informace o konceptech používaných v této ukázce najdete v dokumentaci k protokolu přihlašovacích údajů klienta pro platformu identity.

Klonování nebo stažení tohoto úložiště

V prostředí nebo příkazovém řádku zadejte tento příkaz:

git clone https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2.git

Nebo si stáhněte ukázku v souboru ZIP.

Registrace aplikace

Tato ukázka má jeden projekt. Pokud chcete aplikaci zaregistrovat v tenantovi Azure AD, můžete provést následující:

Pokud chcete použít automatizaci:

  1. Ve Windows spusťte PowerShell a přejděte do kořenového adresáře klonovaného adresáře.

  2. Spusťte tento příkaz:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
    
  3. Spuštěním skriptu vytvořte aplikaci Azure AD a nakonfigurujte kód ukázkové aplikace odpovídajícím způsobem:

    .\AppCreationScripts\Configure.ps1
    

    Další způsoby spouštění skriptů jsou popsané ve skriptech pro vytváření aplikací.

  4. Otevřete řešení sady Visual Studio a vyberte Spustit a spusťte kód.

Pokud nechcete automatizaci používat, postupujte podle kroků v následujících částech.

Volba tenanta Azure AD

  1. Přihlaste se k webu Azure Portal.
  2. Pokud máte přístup k více tenantům, pomocí filtru adresářů a předplatných v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat.

Registrace klientské aplikace (dotnet-web-daemon-v2)

  1. Vyhledejte a vyberte Azure Active Directory.

  2. V části Spravovat vyberte Registrace> aplikacíNová registrace.

  3. Zadejte název aplikace, například dotnet-web-daemon-v2. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit.

  4. V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace.

  5. V části Identifikátor URI přesměrování (volitelné) vyberte v poli se seznamem web a jako identifikátory URI přesměrování zadejte https://localhost:44316/ a https://localhost:44316/Account/GrantPermissions jako identifikátory URI přesměrování.

    Pokud existuje více než dvě identifikátory URI přesměrování, budete je muset později přidat z karty Ověřování po úspěšném vytvoření aplikace.

  6. Výběrem možnosti Registrovat aplikaci vytvořte.

  7. Na stránce Přehled aplikace najděte hodnotu ID aplikace (klienta) a poznamenejte si ji pro pozdější použití. Budete ho potřebovat ke konfiguraci konfiguračního souboru sady Visual Studio pro tento projekt.

  8. V části Spravovat vyberte Ověřování.

  9. Nastavte adresu URL odhlášení front-channel na https://localhost:44316/Account/EndSession.

  10. V části Implicitní udělení a hybridní toky vyberte přístupové tokeny a tokeny ID. Tato ukázka vyžaduje , aby se implicitní tok udělení povolil pro přihlášení uživatele a volání rozhraní API.

  11. Vyberte Uložit.

  12. V části Spravovat vyberte Tajné kódy certifikátů&.

  13. V části Tajné kódy klienta vyberte Nový tajný klíč klienta.

  14. Zadejte popis klíče (například tajný kód aplikace).

  15. Vyberte dobu trvání klíče buď za 1 rok, Za 2 roky nebo Nikdy nevyprší.

  16. Vyberte Přidat. Zaznamenejte hodnotu klíče v bezpečném umístění. Tento klíč budete potřebovat později ke konfiguraci projektu v sadě Visual Studio.

  17. V části Spravovat vyberte oprávnění> rozhraní APIPřidat oprávnění.

  18. V části Běžně používané rozhraní Microsoft API vyberte Microsoft Graph.

  19. V části Oprávnění aplikace se ujistěte, že jsou vybrána správná oprávnění: User.Read.All.

  20. Vyberte Přidat oprávnění.

Konfigurace ukázky pro použití tenanta Azure AD

V následujících krocích je ID klienta stejné jako ID aplikace nebo AppId.

Otevřete řešení v sadě Visual Studio a nakonfigurujte projekty.

Konfigurace klientského projektu

Pokud jste použili instalační skripty, budou pro vás použity následující změny.

  1. Otevřete souborUserSync\Web.Config .
  2. Vyhledejte klíč aplikace ida:ClientId. Nahraďte existující hodnotu ID aplikace aplikace dotnet-web-daemon-v2 zkopírované z webu Azure Portal.
  3. Vyhledejte klíč aplikace ida:ClientSecret. Nahraďte existující hodnotu klíčem, který jste uložili při vytváření aplikace dotnet-web-démon-v2 na webu Azure Portal.

Spuštění ukázky

Vyčistěte řešení, znovu vytvořte řešení, spusťte aplikaci UserSync a pak se přihlaste jako správce ve vašem tenantovi Azure AD. Pokud nemáte tenanta Azure AD pro testování, můžete ho získat podle těchto pokynů .

Když se přihlásíte, aplikace vás nejdřív vyzve, abyste se přihlásili a přečetli si profil uživatele. Tento souhlas umožňuje aplikaci zajistit, abyste byli firemním uživatelem.

User consent

Aplikace se pak pokusí synchronizovat seznam uživatelů z vašeho tenanta Azure AD prostřednictvím Microsoft Graphu. Pokud to nejde, požádá vás (správce tenanta) o připojení tenanta k aplikaci.

Aplikace pak požádá o oprávnění ke čtení seznamu uživatelů ve vašem tenantovi.

Admin consent

Po udělení oprávnění se odhlásíte z aplikace. Toto odhlášení zajišťuje odebrání všech existujících přístupových tokenů pro Microsoft Graph z mezipaměti tokenů. Když se znovu přihlásíte, nový token, který jste získali, bude mít potřebná oprávnění k volání Do Microsoft Graphu.

Když udělíte oprávnění, aplikace se pak může dotazovat na uživatele v libovolném okamžiku. Můžete to ověřit tak, že vyberete tlačítko Synchronizovat uživatele a aktualizujete seznam uživatelů. Zkuste přidat nebo odebrat uživatele a znovu synchronizovat seznam. (Všimněte si ale, že aplikace synchronizuje jenom první stránku uživatelů.)

Informace o kódu

Příslušný kód pro tuto ukázku je v následujících souborech:

  • App_Start\Startup.Auth.cs, Controllers\AccountController.cs: Počáteční přihlášení. Konkrétně akce na kontroleru mají atribut Authorize , který vynutí, aby se uživatel přihlásil. Aplikace používá tok autorizačního kódu k přihlášení uživatele.
  • Controllers\SyncController.cs: Synchronizace seznamu uživatelů do místního úložiště v paměti.
  • Controllers\UserController.cs: Zobrazení seznamu uživatelů z místního úložiště v paměti.
  • Controllers\AccountController.cs: Získání oprávnění od správce tenanta pomocí koncového bodu souhlasu správce.

Opětovné vytvoření ukázkové aplikace

  1. V sadě Visual Studio vytvořte nový projekt webové aplikace Visual C#ASP.NET (.NET Framework).
  2. Na další obrazovce zvolte šablonu projektu MVC . Přidejte také odkazy na složky a jádra webového rozhraní API, protože později přidáte kontroler webového rozhraní API. Ponechte vybraný režim ověřování projektu jako výchozí: Žádné ověřování.
  3. V okně Průzkumníka řešení vyberte projekt a vyberte klávesu F4 .
  4. Ve vlastnostech projektu nastavte ssl Povoleno na True. Poznamenejte si informace v adrese URL protokolu SSL. Budete ho potřebovat při konfiguraci registrace této aplikace na webu Azure Portal.
  5. Přidejte následující balíčky NuGet middlewaru OWIN ASP.NET:
    • Microsoft.Owin.Security.ActiveDirectory
    • Microsoft.Owin.Security.Cookies
    • Microsoft.Owin.Host.SystemWeb
    • Microsoft.IdentityModel.Protocol.Extensions
    • Microsoft.Owin.Security.OpenIdConnect
    • Microsoft.Identity.Client
  6. Ve složce App_Start :
    1. Vytvořte třídu s názvem Startup.Auth.cs.
    2. Odebrat . App_Start z názvu oboru názvů.
    3. Nahraďte kód třídy Startup kódem ze stejného souboru ukázkové aplikace. Nezapomeňte vzít definici celé třídy. Definice se změní z veřejné třídy Startup na veřejné částečné třídy Startup.
  7. V souboru Startup.Auth.cs vyřešte chybějící odkazy přidáním příkazů using , jak navrhuje Visual Studio IntelliSense.
  8. Klikněte pravým tlačítkem myši na projekt, vyberte Přidat a pak vyberte Třídu.
  9. Do vyhledávacího pole zadejte OWIN. Spouštěcí třída OWIN se zobrazí jako výběr. Vyberte ji a pojmenujte třídu Startup.cs.
  10. V souboru Startup.cs nahraďte kód třídy Startup kódem ze stejného souboru ukázkové aplikace. Znovu si všimněte, že definice se změní z veřejné třídy Startup na veřejné částečné třídy Startup.
  11. Do složky Models přidejte novou třídu s názvem MsGraphUser.cs. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  12. Přidejte nový kontroler MVC 5 – prázdná instance s názvem AccountController. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  13. Přidejte nový kontroler MVC 5 – prázdná instance s názvem UserController. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  14. Přidejte nový kontroler webového rozhraní API 2 – prázdná instance s názvem SyncController. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  15. Pro uživatelské rozhraní ve složce Views\Account přidejte tři prázdné (bez modelu) Instance zobrazenís názvem GrantPermissions, Index a UserMismatch. Do složky Views\User přidejte a jeden pojmenovaný index. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  16. Aktualizujte soubor Shared_Layout.cshtml a Home\Index.cshtml tak, aby správně propojil různé zobrazení.

Nasazení ukázky do Azure

Tento projekt obsahuje webové aplikace a projekty webového rozhraní API. Pokud je chcete nasadit na weby Azure, proveďte pro každou z nich následující kroky:

  1. Vytvořte web Azure.
  2. Publikujte webovou aplikaci a webová rozhraní API na web.
  3. Aktualizujte klienty tak, aby místo služby IIS Express volali web.

Vytvoření a publikování dotnet-web-démon-v2 na web Azure

  1. Přihlaste se k webu Azure Portal.
  2. V levém horním rohu vyberte Vytvořit prostředek.
  3. Vyberte webovou>aplikaci a zadejte název webu. Pojmenujte ho například dotnet-web-daemon-v2-contoso.azurewebsites.net.
  4. Vyberte informace o předplatném, skupině prostředků a plánu a umístění služby App Service. Operační systém je Windows a publikování je kód.
  5. Vyberte Vytvořit a počkejte na vytvoření služby App Service.
  6. Jakmile se zobrazí oznámení o úspěšném nasazení , vyberte Přejít k prostředku a přejděte do nově vytvořené služby App Service.
  7. Po vytvoření webu ho najděte na řídicím panelu a výběrem ho otevřete obrazovku Přehled služby App Service.
  8. Na kartě Přehled služby App Service stáhněte profil publikování tak, že vyberete odkaz Načíst profil publikování a uložíte ho. Můžete použít jiné mechanismy nasazení, například nasazení ze správy zdrojového kódu.
  9. Přepněte do sady Visual Studio a pak:
    1. Přejděte do projektu dotnet-web-daemon-v2 .
    2. V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt a pak vyberte Publikovat.
    3. Na dolním panelu vyberte Importovat profil a naimportujte profil publikování, který jste si stáhli dříve.
  10. Vyberte Konfigurovat.
  11. Na kartě Připojení aktualizujte cílovou adresu URL tak, aby používala "https". Použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.netnapříklad . Vyberte Další.
  12. Na kartě Nastavení se ujistěte, že je zaškrtnutá možnost Povolit ověřování organizace .
  13. Vyberte Uložit. Vyberte Publikovat na hlavní obrazovce.

Visual Studio projekt publikuje a automaticky otevře prohlížeč na adresu URL projektu. Pokud se zobrazí výchozí webová stránka projektu, publikace byla úspěšná.

Aktualizace registrace aplikace tenanta Azure AD pro dotnet-web-daemon-v2

  1. Vraťte se na web Azure Portal.
  2. V levém podokně vyberte službu Azure Active Directory a pak vyberte Registrace aplikací.
  3. Vyberte aplikaci dotnet-web-daemon-v2 .
  4. Na stránce Ověřování vaší aplikace aktualizujte pole adresy URL pro odhlášení z front-kanálu na adresu VAŠÍ služby. Použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSessionnapříklad .
  5. V nabídce Branding aktualizujte adresu URL domovské stránky na adresu vaší služby. Použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.netnapříklad .
  6. Konfiguraci uložte.
  7. Přidejte stejnou adresu URL do seznamu hodnot nabídkyIdentifikátory URI pro přesměrováníověřování>. Pokud máte více adres URL pro přesměrování, ujistěte se, že existuje nová položka, která pro každou adresu URL přesměrování používá identifikátor URI služby App Service.

Vyčištění prostředků

Pokud už ho nepotřebujete, odstraňte objekt aplikace, který jste vytvořili v kroku Registrace aplikace . Pokud chcete aplikaci odebrat, postupujte podle pokynů v tématu Odebrání aplikace vytvořené vámi nebo vaší organizací.

Získání pomoci

Využijte Microsoft Q&A k získání podpory od komunity. Nejdřív se zeptejte na Microsoft Q&A a projděte si stávající problémy, abyste zjistili, jestli se někdo předtím na vaši otázku zeptal. Ujistěte se, že vaše otázky nebo komentáře jsou označené jako "azure-ad-adal-deprecation", "azure-ad-msal" a "dotnet-standard".

Pokud v ukázce najdete chybu, vytvořte problém na GitHub Issues.

Pokud v MSAL.NET zjistíte chybu, zvedněte problém na MSAL.NET problémech na GitHubu.

Pokud chcete poskytnout doporučení, přejděte na stránku Hlas uživatele.

Další kroky

Přečtěte si další informace o vytváření aplikací démon, které používají platformu Microsoft Identity Platform pro přístup k chráněným webovým rozhraním API: