Sdílet prostřednictvím


Kurz: Vytvoření procesu 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
  • Volání rozhraní Microsoft Graph API

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Požadavky

  • Visual Studio 2017 nebo 2019
  • Tenant Microsoft Entra. Další informace naleznete v tématu Získání tenanta Microsoft Entra.
  • Jeden nebo více uživatelských účtů ve vašem tenantovi. Tato ukázka nebude fungovat s účtem Microsoft. Pokud jste se přihlásili pomocí účtu Microsoft a nikdy jste v adresáři nevytvořili uživatelský účet, udělejte to teď.

Scénář

Aplikace je vytvořená 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 Když se kontroler zavolá, načítá ze služby Microsoft Graph seznam uživatelů v tenantovi Microsoft Entra zákazníka. SyncController.cs je aktivován 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 je aplikace víceklientských aplikací pro firemní zákazníky Microsoftu, musí zákazníkům poskytnout způsob, jak se aplikace "zaregistrovat" nebo "připojit" ke svým firemním datům. Během toku připojení globální správce nejprve udělí aplikaci oprávnění přímo aplikaci, aby mohl přistupovat k firemním datům neinteraktivně bez přítomnosti přihlášeného uživatele. Většina logiky v této ukázce ukazuje, jak tohoto toku připojení dosáhnout pomocí koncového bodu souhlasu správce platformy Identity Platform.

Diagram znázorňuje aplikaci UserSync se třemi místními položkami, které se připojují k Azure, se spuštěním tečky získání tokenu interaktivně pro připojení k Microsoft Entra ID, AccountController získá souhlas správce pro připojení k Microsoft Entra ID a SyncController, který čte uživatele pro připojení k Microsoft Graphu.

Další informace okonceptch

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 ukázku stáhněte v souboru ZIP.

Registrace aplikace

Tato ukázka má jeden projekt. Pokud chcete aplikaci zaregistrovat ve svém tenantovi Microsoft Entra, můžete:

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 Microsoft Entra a odpovídajícím způsobem nakonfigurujte kód ukázkové aplikace:

    .\AppCreationScripts\Configure.ps1
    

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

  4. Otevřete řešení sady Visual Studio a výběrem možnosti Start spusťte kód.

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

Zvolte tenanta.

Tip

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.

  2. Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.

  3. Přejděte k aplikacím> identit>Registrace aplikací.

  4. Vyberte Nová registrace.

  5. 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.

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

  7. V části Identifikátor URI přesměrování (volitelné) vyberte v poli se seznamem web a 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.

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

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

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

  11. Nastavte adresu URL odhlášení z front-kanálu na https://localhost:44316/Account/EndSessionhodnotu .

  12. V části Implicitní udělení a hybridní toky vyberte Přístupové tokeny a tokeny ID. Tato ukázka vyžaduje povolení implicitního toku udělení, aby se uživatel přihlásil a volal rozhraní API.

  13. Zvolte Uložit.

  14. V části Spravovat vyberte Certifikáty a tajné kódy.

  15. V části Tajné klíče klienta vyberte Nový tajný klíč klienta.

  16. Zadejte popis klíče (například tajný klíč aplikace).

  17. Vyberte dobu trvání klíče: Za 1 rok, Za 2 roky nebo Nikdy nevyprší.

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

  19. V části Spravovat vyberte oprávnění>rozhraní API Přidat oprávnění.

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

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

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

Konfigurace ukázky pro použití tenanta

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, použijí se pro vás následující změny.

  1. Otevřete soubor UserSync\Web.Config.
  2. Vyhledejte klíč aplikace ida:ClientId. Nahraďte existující hodnotu ID aplikace aplikace dotnet-web-daemon-v2 , která byla dříve zaznamenána.
  3. Vyhledejte klíč aplikace ida:ClientSecret. Nahraďte existující hodnotu klíčem, který jste uložili při vytváření aplikace dotnet-web-daemon-v2 .

Spuštění ukázky

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

Když se přihlásíte, aplikace vás nejprve požádá o oprávnění k přihlášení a čtení profilu uživatele. Tento souhlas umožňuje aplikaci zajistit, abyste byli firemním uživatelem.

Souhlas uživatele

Aplikace se pak pokusí synchronizovat seznam uživatelů z vašeho tenanta Microsoft Entra 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.

Souhlas správce

Po udělení oprávnění se odhlásíte z aplikace. Toto odhlášení zajišťuje, že se z mezipaměti tokenů odeberou všechny existující přístupové tokeny pro Microsoft Graph. Když se znovu přihlásíte, bude mít nově získaný token 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. (Mějte ale na paměti, že aplikace synchronizuje pouze první stránku uživatelů.)

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: Zobrazuje seznam 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 visual C# ASP.NET webové aplikace (.NET Framework).
  2. Na další obrazovce zvolte šablonu projektu MVC . Přidejte také odkazy na složky a jádra pro webové 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í: Bez ověřování.
  3. V okně Průzkumník řešení vyberte projekt a vyberte klávesu F4.
  4. Ve vlastnostech projektu nastavte ssl enabled 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 celou definici třídy. Definice se změní z veřejné třídy Startup na veřejné částečné třídy Startup.
  7. V 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řída.
  9. Do vyhledávacího pole zadejte OWIN. Třída OWIN Startup se zobrazí jako výběr. Vyberte ji a pojmenujte Startup.cs třídy.
  10. V 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í přidejte do složky Views\Account tři prázdné (bez modelu) instance zobrazení s názvem GrantPermissions, Index a UserMismatch. Do složky Views\User přidejte a jeden s názvem Index. Nahraďte implementaci obsahem souboru se stejným názvem z ukázky.
  16. Aktualizujte Shared_Layout.cshtml a Home\Index.cshtml tak, aby správně propojila 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-daemon-v2 na web Azure

  1. Přihlaste se k portálu Azure.
  2. V levém horním rohu vyberte Vytvořit prostředek.
  3. Vyberte WebOvou>aplikaci a pak dejte svému webu název. 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 vyberte ho, aby se otevřela obrazovka 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 Získat profil publikování a uložíte ho. Můžete použít jiné mechanismy nasazení, jako je 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. Klikněte pravým tlačítkem myši na projekt v Průzkumník řešení a pak vyberte Publikovat.
    3. Na dolním panelu vyberte Importovat profil a importujte profil publikování, který jste stáhli dříve.
  10. Vyberte Konfigurovat.
  11. Na kartě Připojení aktualizujte cílovou adresu URL tak, aby používala "https". Například použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.net. Vyberte Další.
  12. Na kartě Nastavení se ujistěte, že je zaškrtnutá možnost Povolit ověřování organizace.
  13. Zvolte Uložit. Na hlavní obrazovce vyberte Publikovat .

Visual Studio publikuje projekt 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 Microsoft Entra pro dotnet-web-daemon-v2

  1. Vraťte se do Centra pro správu Microsoft Entra a v Registrace aplikací vyberte aplikaci dotnet-web-daemon-v2.
  2. Na stránce Ověřování pro vaši aplikaci aktualizujte pole adresy URL odhlášení front-channel s adresou vaší služby. Například použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSession.
  3. V nabídce Branding aktualizujte adresu URL domovské stránky na adresu vaší služby. Například použijte https://dotnet-web-daemon-v2-contoso.azurewebsites.net.
  4. Uložte konfiguraci.
  5. Do seznamu hodnot nabídky Identifikátory URI pro přesměrování ověřování>přidejte stejnou adresu URL. 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 části Odebrání aplikace vytvořené vámi nebo vaší organizací.

Získání pomoci

Pokud chcete získat podporu od komunity, použijte Microsoft Q&A . Nejprve položte své otázky na webu Microsoft Q&A a projděte si existující problémy, abyste zjistili, jestli se někdo předtím zeptal na vaši otázku. Ujistěte se, že vaše otázky nebo komentáře jsou označené značkou azure-ad-adal-deprecation, azure-ad-msala dotnet-standard."

Pokud v ukázce najdete chybu, vyvolejte problém na GitHub Issues.

Pokud v MSAL.NET najdete chybu, požádejte o problém MSAL.NET problémy na GitHubu.

Pokud chcete poskytnout doporučení, přejděte na stránku User Voice.

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: