Oktatóanyag: Több-bérlős démon létrehozása, amely a Microsoft Identitásplatform

Ebben az oktatóanyagban letölt és futtat egy ASP.NET démon webalkalmazást, amely bemutatja, hogy az OAuth 2.0 ügyfél hitelesítő adataival hozzáférési jogkivonatot kap a Microsoft Graph API meghívásához.

Ebben az oktatóanyagban:

  • Démonalkalmazás integrálása a Microsoft Identitásplatform
  • Alkalmazásengedélyek megadása közvetlenül az alkalmazásnak rendszergazda által
  • Hozzáférési jogkivonat beszerzése a Microsoft Graph API meghívásához
  • Hívja meg a Microsoft Graph API-t.

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

  • Visual Studio 2017 vagy 2019.
  • Egy Microsoft Entra-bérlő. További információ: Microsoft Entra-bérlő lekérése.
  • Egy vagy több felhasználói fiók a bérlőben. Ez a minta nem működik Microsoft-fiókkal. Ha microsoftos fiókkal jelentkezett be, és még soha nem hozott létre felhasználói fiókot a címtárában, tegye ezt most.

Eset

Az alkalmazás ASP.NET MVC-alkalmazásként készült. Az OWIN OpenID Csatlakozás köztes szoftver használatával jelentkezik be a felhasználókba.

A mintában szereplő "démon" összetevő egy API-vezérlő. SyncController.cs A vezérlő meghívásakor lekéri az ügyfél Microsoft Entra-bérlőjének felhasználóinak listáját a Microsoft Graphból. SyncController.cs egy AJAX-hívás aktiválódik a webalkalmazásban. A .NET-hez készült Microsoft Authentication Library (MSAL) használatával szerez be hozzáférési jogkivonatot a Microsoft Graphhoz.

Mivel az alkalmazás egy több-bérlős alkalmazás a Microsoft üzleti ügyfelei számára, lehetővé kell tennie az ügyfelek számára, hogy "regisztrálják" vagy "összekapcsolják" az alkalmazást a vállalati adataikkal. A kapcsolati folyamat során a globális Rendszergazda istrator először közvetlenül az alkalmazásnak ad engedélyt, hogy a céges adatok nem interaktív módon, bejelentkezett felhasználó jelenléte nélkül férjenek hozzá. A minta logikájának többsége bemutatja, hogyan érhető el ez a kapcsolati folyamat az identitásplatform rendszergazdai hozzájárulási végpontjával.

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

A mintában használt fogalmakkal kapcsolatos további információkért olvassa el az identitásplatform ügyfél-hitelesítő adatok protokolljának dokumentációját.

Az adattár klónozása vagy letöltése

A rendszerhéjból vagy a parancssorból adja meg a következő parancsot:

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

Vagy töltse le a mintát egy zip-fájlban.

Az alkalmazás regisztrálása

Ez a minta egy projektből áll. Ha regisztrálni szeretné az alkalmazást a Microsoft Entra-bérlőjében, a következőket teheti:

Ha az automatizálást szeretné használni:

  1. Windows rendszeren futtassa a PowerShellt, és nyissa meg a klónozott könyvtár gyökerét.

  2. Futtassa ezt a parancsot:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
    
  3. Futtassa a szkriptet a Microsoft Entra-alkalmazás létrehozásához, és ennek megfelelően konfigurálja a mintaalkalmazás kódját:

    .\AppCreationScripts\Configure.ps1
    

    A szkriptek futtatásának egyéb módjait az alkalmazáslétrehozási szkriptek ismertetik.

  4. Nyissa meg a Visual Studio-megoldást, és válassza a Start lehetőséget a kód futtatásához.

Ha nem szeretné használni az automatizálást, kövesse az alábbi szakaszok lépéseit.

A bérlő kiválasztása

Tipp.

A cikkben szereplő lépések a portáltól függően kissé eltérhetnek.

  1. Jelentkezzen be a Microsoft Entra felügyeleti központba legalább alkalmazásfejlesztőként.

  2. Ha több bérlőhöz is hozzáfér, a felső menü Gépház ikonjávalválthat arra a bérlőre, amelyben regisztrálni szeretné az alkalmazást a Könyvtárak + előfizetések menüből.

  3. Keresse meg az identitásalkalmazásokat>> Alkalmazásregisztrációk.

  4. Új regisztráció kiválasztása.

  5. Adja meg például dotnet-web-daemon-v2az alkalmazás nevét. Előfordulhat, hogy az alkalmazás felhasználói látják ezt a nevet, és később módosíthatja.

  6. A Támogatott fióktípusok szakaszban válassza a Fiókok lehetőséget bármely szervezeti címtárban.

  7. Az Átirányítási URI (nem kötelező) szakaszban válassza a Web lehetőséget a kombinált listában, és adja meg és https://localhost:44316/Account/GrantPermissions adja meg https://localhost:44316/ átirányítási URI-kként.

    Ha kétnál több átirányítási URI van, az alkalmazás sikeres létrehozása után később hozzá kell adnia őket a Hitelesítés lapról.

  8. Válassza a Regisztráció elemet az alkalmazás létrehozásához.

  9. Az alkalmazás Áttekintés lapján keresse meg az alkalmazás (ügyfél) azonosítóját , és jegyezze fel későbbi használatra. Ehhez konfigurálnia kell a Visual Studio konfigurációs fájlját ehhez a projekthez.

  10. A Kezelés területen válassza a Hitelesítés lehetőséget.

  11. Az előtérbeli bejelentkezési URL-cím beállítása a következőrehttps://localhost:44316/Account/EndSession: .

  12. Az Implicit engedélyezési és hibrid folyamatok szakaszban válassza ki az Access-jogkivonatokat és az azonosító jogkivonatokat. Ehhez a mintához engedélyezni kell az implicit engedélyezési folyamatot , hogy bejelentkezhessen a felhasználóba, és meghívjon egy API-t.

  13. Válassza a Mentés parancsot.

  14. A Kezelés területen válassza a Tanúsítványok és titkos kódok lehetőséget.

  15. Az Ügyfél titkos kulcsok szakaszban válassza az Új ügyfélkód lehetőséget.

  16. Adjon meg egy kulcsleírást (például az alkalmazás titkos kódját).

  17. Válassza ki a kulcs időtartamát 1 év alatt, 2 év alatt vagy Soha nem jár le.

  18. Válassza a Hozzáadás lehetőséget. Rögzítse a kulcs értékét egy biztonságos helyen. A projekt Visual Studióban való konfigurálásához később szüksége lesz erre a kulcsra.

  19. A Kezelés területen válassza az API-engedélyeket>: Engedély hozzáadása.

  20. A Gyakran használt Microsoft API-k szakaszban válassza a Microsoft Graph lehetőséget.

  21. Az Alkalmazásengedélyek szakaszban győződjön meg arról, hogy a megfelelő engedélyek vannak kiválasztva: User.Read.All.

  22. Jelölje be az Engedélyek hozzáadása lehetőséget.

A minta konfigurálása a bérlő használatára

A következő lépésekben a ClientID ugyanaz, mint az "alkalmazásazonosító" vagy az AppId.

Nyissa meg a megoldást a Visual Studióban a projektek konfigurálásához.

Az ügyfélprojekt konfigurálása

Ha a beállítási szkripteket használta, a rendszer a következő módosításokat alkalmazza Önre.

  1. Nyissa meg a UserSync\Web.Config fájlt.
  2. Keresse meg az ida:ClientId alkalmazáskulcsot. Cserélje le a meglévő értéket a korábban rögzített dotnet-web-daemon-v2 alkalmazásazonosítóra.
  3. Keresse meg az ida:ClientSecret alkalmazáskulcsot. Cserélje le a meglévő értéket a dotnet-web-daemon-v2 alkalmazás létrehozása során mentett kulcsra.

Minta futtatása

Tisztítsa meg a megoldást, építse újra a megoldást, futtassa a UserSync alkalmazást, majd jelentkezzen be rendszergazdaként a Microsoft Entra-bérlőben. Ha nincs Microsoft Entra-bérlője a teszteléshez, az alábbi utasításokat követve kérhet egyet.

Amikor bejelentkezik, az alkalmazás először engedélyt kér a bejelentkezéshez és a felhasználói profil olvasásához. Ez a hozzájárulás lehetővé teszi az alkalmazás számára, hogy ön üzleti felhasználó legyen.

User consent

Az alkalmazás ezután megpróbálja szinkronizálni a Felhasználók listáját a Microsoft Entra-bérlőről a Microsoft Graphon keresztül. Ha nem tudja, arra kéri Önt (a bérlői rendszergazdát), hogy csatlakoztassa a bérlőt az alkalmazáshoz.

Az alkalmazás ezután engedélyt kér a bérlőben lévő felhasználók listájának olvasására.

Admin consent

Az engedély megadása után kijelentkezik az alkalmazásból. Ez a kijelentkezés biztosítja, hogy a Microsoft Graph meglévő hozzáférési jogkivonatai törlődnek a jogkivonat-gyorsítótárból. Amikor ismét bejelentkezik, a beszerzett új jogkivonat rendelkezik a Microsoft Graph felé irányuló hívások indításához szükséges engedélyekkel.

Az engedély megadása után az alkalmazás bármikor lekérdezheti a felhasználókat. Ezt a Felhasználók szinkronizálása gombra kattintva és a felhasználók listájának frissítésével ellenőrizheti. Próbáljon meg hozzáadni vagy eltávolítani egy felhasználót, majd újraszinkronizálást a listára. (Vegye figyelembe azonban, hogy az alkalmazás csak a felhasználók első oldalát szinkronizálja.)

Tudnivalók a kódról

A minta vonatkozó kódja a következő fájlokban található:

  • App_Start\Startup.Auth.cs, Controllers\AccountController.cs: Kezdeti bejelentkezés. A vezérlőn végrehajtott műveleteknek van egy Engedélyezés attribútuma, amely arra kényszeríti a felhasználót, hogy jelentkezzen be. Az alkalmazás az engedélyezési kód folyamatával jelentkezik be a felhasználóba.
  • Controllers\SyncController.cs: A felhasználók listájának szinkronizálása a helyi memóriabeli tárolóval.
  • Controllers\UserController.cs: A helyi memóriabeli tárolóból származó felhasználók listájának megjelenítése.
  • Controllers\AccountController.cs: Engedélyek beszerzése a bérlő rendszergazdájától a rendszergazdai hozzájárulási végpont használatával.

A mintaalkalmazás újbóli létrehozása

  1. A Visual Studióban hozzon létre egy új Visual C#ASP.NET webalkalmazási (.NET-keretrendszer) projektet.
  2. A következő képernyőn válassza ki az MVC-projektsablont . Mappa- és alapvető hivatkozásokat is hozzáadhat a Webes API-hoz, mert később hozzá fog adni egy webes API-vezérlőt. Hagyja alapértelmezettként a projekt választott hitelesítési módját: Nincs hitelesítés.
  3. Jelölje ki a projektet a Megoldáskezelő ablakban, és válassza az F4 billentyűt.
  4. A projekttulajdonságokban állítsa az SSL Engedélyezve értéket True értékre. Jegyezze fel az SSL URL-címében szereplő információkat. Szüksége lesz rá, amikor konfigurálja az alkalmazás regisztrációját az Azure Portalon.
  5. Adja hozzá a következő ASP.NET OWIN köztes szoftveres NuGet-csomagokat:
    • Microsoft.Owin.Security.ActiveDirectory
    • Microsoft.Owin.Security.Cookies
    • Microsoft.Owin.Host.SystemWeb
    • Microsoft.IdentityModel.Protocol.Extensions
    • Microsoft.Owin.Security.OpenIdConnect
    • Microsoft.Identity.Client
  6. A App_Start mappában:
    1. Hozzon létre egy Startup.Auth.cs nevű osztályt.
    2. Eltávolítás . App_Start a névtér nevéből.
    3. Cserélje le az indítási osztály kódját a mintaalkalmazás ugyanazon fájljából származó kódra. Ügyeljen arra, hogy a teljes osztálydefiníciót használja. A definíció a nyilvános osztály indítási osztályáról a nyilvános részleges osztály indítási osztályára változik.
  7. A Startup.Auth.cs fájlban a hiányzó hivatkozásokat a Visual Studio IntelliSense által javasolt utasítások hozzáadásával oldhatja fel.
  8. Kattintson a jobb gombbal a projektre, válassza a Hozzáadás, majd az Osztály lehetőséget.
  9. A keresőmezőbe írja be az OWIN kifejezést. Az OWIN indítási osztály kijelölésként jelenik meg. Jelölje ki, és nevezze el a Startup.cs osztályt.
  10. A Startup.cs fájlban cserélje le az indításiosztály kódját a mintaalkalmazás ugyanazon fájljának kódjára. Vegye figyelembe, hogy a definíció nyilvános osztály indítási osztályáról nyilvános részleges indítási osztályra változik.
  11. A Modellek mappában adjon hozzá egy új, MsGraphUser.cs nevű osztályt. Cserélje le az implementációt a mintából származó azonos nevű fájl tartalmára.
  12. Adjon hozzá egy új MVC 5-vezérlőt – Üres, AccountController nevű példányt. Cserélje le az implementációt a mintából származó azonos nevű fájl tartalmára.
  13. Adjon hozzá egy új MVC 5-vezérlőt – Üres, UserController nevű példányt. Cserélje le az implementációt a mintából származó azonos nevű fájl tartalmára.
  14. Adjon hozzá egy új Web API 2-vezérlőt – Üres, SyncController nevű példányt. Cserélje le az implementációt a mintából származó azonos nevű fájl tartalmára.
  15. A felhasználói felület Nézetek\Fiók mappájában adjon hozzá három Üres (modell nélküli) Nézetpéldányt GrantPermissions, Index és UserMismatch néven. Adjon hozzá egy indexet a Nézetek\Felhasználó mappában. Cserélje le az implementációt a mintából származó azonos nevű fájl tartalmára.
  16. Frissítse a Shared_Layout.cshtml és a Home\Index.cshtml fájlt a különböző nézetek helyes összekapcsolásához.

A minta üzembe helyezése az Azure-ban

Ez a projekt webalkalmazással és webes API-projektel rendelkezik. Az Azure-webhelyeken való üzembe helyezéshez hajtsa végre az alábbi lépéseket mindegyikhez:

  1. Azure-webhely létrehozása.
  2. Tegye közzé a webalkalmazást és a webes API-kat a webhelyen.
  3. Frissítse az ügyfeleket, hogy az IIS Express helyett a webhelyet hívja meg.

Dotnet-web-daemon-v2 létrehozása és közzététele egy Azure-webhelyen

  1. Jelentkezzen be az Azure Portalra.
  2. Válassza az Erőforrás létrehozása lehetőséget a bal felső sarokban.
  3. Válassza a Web>Web App lehetőséget, majd adjon nevet a webhelynek. Nevezze el például dotnet-web-daemon-v2-contoso.azurewebsites.net.
  4. Válassza ki az előfizetés, az erőforráscsoport és az App Service-csomag és -hely adatait. Az operációs rendszer Windows, a Publish pedig Code.
  5. Válassza a Létrehozás lehetőséget , és várja meg, amíg az app service létrejön.
  6. Amikor megkapja az üzembe helyezés sikeres értesítését , válassza az Ugrás az erőforrásra lehetőséget az újonnan létrehozott app service-hez való ugráshoz.
  7. A webhely létrehozása után keresse meg az irányítópulton, és válassza ki az App Service Áttekintés képernyőjének megnyitásához.
  8. Az app service Áttekintés lapján töltse le a közzétételi profilt a Közzétételi profil lekérése hivatkozásra kattintva, és mentse azt. Más üzembehelyezési mechanizmusokat is használhat, például a forrásvezérlőből történő üzembe helyezést.
  9. Váltson a Visual Studióra, majd:
    1. Nyissa meg a dotnet-web-daemon-v2 projektet.
    2. Kattintson a jobb gombbal a projektre a Megoldáskezelő, majd válassza a Közzététel lehetőséget.
    3. Az alsó sávon válassza a Profil importálása lehetőséget, és importálja a korábban letöltött közzétételi profilt.
  10. Válassza a Konfigurálás lehetőséget.
  11. A Csatlakozás ion lapon frissítse a cél URL-címét úgy, hogy a "https" értéket használja. Használja például a következőthttps://dotnet-web-daemon-v2-contoso.azurewebsites.net: . Válassza a Következő lehetőséget.
  12. A Gépház lapon győződjön meg arról, hogy a szervezeti hitelesítés engedélyezése nincs engedélyezve.
  13. Válassza a Mentés parancsot. Válassza a Közzététel lehetőséget a főképernyőn.

A Visual Studio közzéteszi a projektet, és automatikusan megnyit egy böngészőt a projekt URL-címére. Ha a projekt alapértelmezett weblapja jelenik meg, a kiadvány sikeres volt.

A Microsoft Entra-bérlőalkalmazás regisztrációjának frissítése dotnet-web-daemon-v2 esetén

  1. Lépjen vissza a Microsoft Entra felügyeleti központjába, majd válassza ki a dotnet-web-daemon-v2 alkalmazást a Alkalmazásregisztrációk.
  2. Az alkalmazás hitelesítési oldalán frissítse az előtérbeli kijelentkezés URL-mezőit a szolgáltatás címével. Használja például a következőt https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSession: .
  3. A Védjegyzés menüben frissítse a kezdőlap URL-címét a szolgáltatás címére. Használja például a következőt https://dotnet-web-daemon-v2-contoso.azurewebsites.net: .
  4. Save the configuration.
  5. Adja hozzá ugyanazt az URL-címet a Hitelesítési>átirányítási URI-k menü értékeinek listájához. Ha több átirányítási URL-cím is van, győződjön meg arról, hogy van egy új bejegyzés, amely az App Service URI-ját használja az egyes átirányítási URL-címekhez.

Clean up resources

Ha már nincs rá szükség, törölje az alkalmazás regisztrálása lépésben létrehozott alkalmazásobjektumot. Az alkalmazás eltávolításához kövesse az Ön vagy a szervezete által létrehozott alkalmazás eltávolítása című témakör utasításait.

Támogatás kérése

A Microsoft Q&A használatával támogatást kérhet a közösségtől. Először tegye fel kérdéseit a Microsoft Q&A-ról, és tallózással ellenőrizze, hogy valaki feltette-e korábban a kérdését. Győződjön meg arról, hogy kérdései vagy megjegyzései címkézve vannak az , azure-ad-msalés dotnet-standarda ." címkévelazure-ad-adal-deprecation.

Ha hibát talál a mintában, forduljon a GitHub-problémákhoz.

Ha hibát talál a MSAL.NET, forduljon MSAL.NET GitHub-problémákhoz.

Javaslat megadásához nyissa meg a Felhasználói hang lapot.

További lépések

További információ a Microsoft Identitásplatform használatával védett webes API-k eléréséhez használható démonalkalmazások készítéséről: