Megosztás a következőn keresztül:


Felhasználókat bejelentkező webalkalmazás: Kódkonfiguráció

Ez a cikk bemutatja, hogyan konfigurálhat kódot egy olyan webalkalmazáshoz, amely bejelentkezik a felhasználókba.

Webalkalmazásokat támogató Microsoft-kódtárak

A webalkalmazások (és webes API-k) védelmére az alábbi Microsoft-kódtárak szolgálnak:

Nyelv/ keretrendszer Projekt bekapcsolva
GitHub
Csomag Megszerzés
közül
Felhasználók bejelentkezése Webes API-k elérése Általánosan elérhető (GA) vagy
1. nyilvános előzetes verzió
.NET MSAL.NET Microsoft.Identity.Client A tár nem tud azonosító jogkivonatokat kérni a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
.NET Microsoft.IdentityModel Microsoft.IdentityModel A tár nem tud azonosító jogkivonatokat kérni a felhasználói bejelentkezéshez.2 A tár nem tud hozzáférési jogkivonatokat kérni a védett webes API-khoz.2 FE
ASP.NET Core ASP.NET Core Microsoft.AspNetCore.Authentication Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A tár nem tud hozzáférési jogkivonatokat kérni a védett webes API-khoz. FE
ASP.NET Core Microsoft.Identity.Web Microsoft.Identity.Web Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Java MSAL4J msal4j Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Spring spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory Oktatóanyag A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Node.js MSAL-csomópont msal-node Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Python MSAL Python msal A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Python azonosság azonosság Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. --

(1) Az online szolgáltatásokra vonatkozó univerzális licencfeltételek a nyilvános előzetes verzióban lévő kódtárakra vonatkoznak.

(2) A Microsoft.IdentityModel-kódtár csak a jogkivonatokat érvényesíti – nem tud azonosítókat vagy hozzáférési jogkivonatokat kérni.

Válassza ki a kívánt platformnak megfelelő lapot:

A cikkben szereplő kódrészleteket és az alábbiakat a ASP.NET Core webalkalmazás növekményes oktatóanyagából nyerjük ki, 1. fejezet.

A megvalósítás részleteiért tekintse meg ezt az oktatóanyagot.

Konfigurációs fájlok

A felhasználókat a Microsoft Identitásplatform használó webalkalmazások konfigurációs fájlokon keresztül vannak konfigurálva. Ezeknek a fájloknak a következő értékeket kell megadniuk:

  • A felhőpéldány, ha például azt szeretné, hogy az alkalmazás nemzeti felhőkben fusson. A különböző lehetőségek közé tartoznak a következők:
    • https://login.microsoftonline.com/ nyilvános Azure-felhőhöz
    • https://login.microsoftonline.us/ az Azure US Government esetében
    • https://login.microsoftonline.de/ Microsoft Entra Germany esetén
    • https://login.partner.microsoftonline.cn/common a 21Vianet által üzemeltetett Microsoft Entra China esetében
  • A bérlőazonosító célközönsége. A lehetőségek attól függően változnak, hogy az alkalmazás egy bérlős vagy több-bérlős.
    • Az Azure Portalról beszerzett bérlői GUID a felhasználók szervezetbe való bejelentkezéséhez. Tartománynevet is használhat.
    • organizations felhasználók bejelentkezése bármely munkahelyi vagy iskolai fiókba
    • common a felhasználók munkahelyi vagy iskolai fiókjával vagy Microsoft személyes fiókjával való bejelentkezéshez
    • consumers a felhasználók csak Microsoft-személyes fiókkal való bejelentkezéséhez
  • Az alkalmazás ügyfélazonosítója az Azure Portalról másolt módon

A szolgáltatóra mutató hivatkozások, a példány és a bérlőazonosító értékeinek összefűzése is megjelenhet.

A ASP.NET Core-ban ezek a beállítások a appsettings.json fájlban, a "Microsoft Entra ID" szakaszban találhatók.

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "[Enter the tenantId here]",

    // Client ID (application ID) obtained from the Azure portal
    "ClientId": "[Enter the Client Id here]",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath": "/signout-oidc"
  }
}

A ASP.NET Core-ban egy másik fájl (properties\launchSettings.json) tartalmazza az alkalmazás URL-címét (applicationUrl) és a TLS/SSL-portot (sslPort) és a különböző profilokat.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:3110/",
      "sslPort": 44321
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "webApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:3110/"
    }
  }
}

Az Azure Portalon az alkalmazás hitelesítési oldalán regisztrált átirányítási URI-knak meg kell egyezniük ezekkel az URL-címekkel. Az előző két konfigurációs fájl esetében a következő lenne https://localhost:44321/signin-oidc: . Ennek oka az, hogy applicationUrl az , de sslPort meg van adva (44321http://localhost:3110). CallbackPatha /signin-oidc.appsettings.json

Ugyanígy a kijelentkezés URI-ja is a következőre van állítva https://localhost:44321/signout-oidc: .

Feljegyzés

A SignedOutCallbackPath-nak a portálra vagy az alkalmazásra kell állítania, hogy elkerülje az ütközést az esemény kezelése során.

Inicializálási kód

Az inicializálási kód különbségei platformfüggőek. A ASP.NET Core és ASP.NET esetén a felhasználók bejelentkezése az OpenID Connect köztes szoftverbe delegálva történik. A ASP.NET vagy ASP.NET Core-sablon webalkalmazásokat hoz létre az Azure AD 1.0-s végponthoz. A Microsoft Identitásplatform való alkalmazkodáshoz bizonyos konfigurációra van szükség.

A ASP.NET Core-webalkalmazásokban (és webes API-kban) az alkalmazás védett, mert rendelkezik egy Authorize attribútummal a vezérlők vagy a vezérlőműveletek esetében. Ez az attribútum ellenőrzi, hogy a felhasználó hitelesítése megtörtént-e. A .NET 6 kiadása előtt a kód inicializálása a Startup.cs fájlban történt. A .NET 6-ot tartalmazó új ASP.NET Core-projektek már nem tartalmaznak Startup.cs fájlt. A helyét a Program.cs fájl veszi át. Az oktatóanyag többi része a .NET 5-ös vagy újabb verziójára vonatkozik.

Feljegyzés

Ha közvetlenül a Microsoft.Identity.Webet használó Microsoft Identitásplatform új ASP.NET Core-sablonjaival szeretne kezdeni, letöltheti a .NET 5.0-hoz készült projektsablonokat tartalmazó előzetes NuGet-csomagot. Ezután a telepítés után közvetlenül példányosíthatja ASP.NET Core-webalkalmazásokat (MVC vagy Blazor). Részletekért tekintse meg a Microsoft.Identity.Web webalkalmazás projektsablonjait . Ez a legegyszerűbb megközelítés, mivel a következő lépéseket fogja elvégezni Önnek.

Ha inkább az aktuális alapértelmezett ASP.NET Core webes projekttel szeretné elindítani a projektet a Visual Studióban, vagy használja vagy dotnet new webapp --auth SingleOrghasználjadotnet new mvc --auth SingleOrg, a következőhöz hasonló kód jelenik meg:

 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
         .AddAzureAD(options => Configuration.Bind("AzureAd", options));

Ez a kód az örökölt Microsoft.AspNetCore.Authentication.AzureAD.UI NuGet-csomagot használja, amely egy Azure Active Directory v1.0-s alkalmazás létrehozásához használatos. Ez a cikk bemutatja, hogyan hozhat létre Microsoft Identitásplatform 2.0-s verziós alkalmazást, amely lecseréli a kódot.

  1. Adja hozzá a Microsoft.Identity.Web és a Microsoft.Identity.Web.UI NuGet-csomagokat a projekthez. Távolítsa el a Microsoft.AspNetCore.Authentication.AzureAD.UI NuGet-csomagot, ha az jelen van.

  2. Frissítse a kódot ConfigureServices úgy, hogy a metódusokat és AddMicrosoftIdentityUI a AddMicrosoftIdentityWebApp metódusokat használja.

    public class Startup
    {
     ...
     // This method gets called by the runtime. Use this method to add services to the container.
     public void ConfigureServices(IServiceCollection services)
     {
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
             .AddMicrosoftIdentityWebApp(Configuration, "AzureAd");
    
      services.AddRazorPages().AddMvcOptions(options =>
      {
       var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
       options.Filters.Add(new AuthorizeFilter(policy));
      }).AddMicrosoftIdentityUI();
    
  3. A Startup.cs metódusában engedélyezze a Configure hitelesítést a következő hívássalapp.UseAuthentication();: és app.MapControllers();.

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
     // more code here
     app.UseAuthentication();
     app.UseAuthorization();
    
     app.MapRazorPages();
     app.MapControllers();
     // more code here
    }
    

Ebben a kódban:

  • A AddMicrosoftIdentityWebApp bővítménymetódus a Microsoft.Identity.Web-ben van definiálva, amely;

    • Konfigurálja a konfigurációs fájl olvasási beállításait (itt a "Microsoft Entra ID" szakaszból)
    • Úgy konfigurálja az OpenID Connect beállításait, hogy a szolgáltató legyen a Microsoft Identitásplatform.
    • Ellenőrzi a jogkivonat kiállítóját.
    • Biztosítja, hogy a névnek megfelelő jogcímek le vannak képezve az preferred_username azonosító jogkivonatában szereplő jogcímből.
  • A konfigurációs objektum mellett megadhatja a konfigurációs szakasz nevét híváskor AddMicrosoftIdentityWebApp. Alapértelmezés szerint az AzureAd.

  • AddMicrosoftIdentityWebApp speciális forgatókönyvekhez más paraméterekkel is rendelkezik. Az OpenID Connect köztes szoftveresemények nyomon követése például segíthet a webalkalmazás hibaelhárításában, ha a hitelesítés nem működik. Az opcionális paraméter subscribeToOpenIdConnectMiddlewareDiagnosticsEvents true beállítása megmutatja, hogy a ASP.NET Core köztes szoftverkészlet hogyan dolgozza fel az adatokat, miközben az a HTTP-válaszból a felhasználó HttpContext.Useridentitására mutat.

  • A AddMicrosoftIdentityUI bővítménymetódus a Microsoft.Identity.Web.UI-ban van definiálva. Ez egy alapértelmezett vezérlőt biztosít a bejelentkezés és a kijelentkezés kezeléséhez.

Ha többet szeretne tudni arról, hogy a Microsoft.Identity.Web hogyan teszi lehetővé a webalkalmazások létrehozását, tekintse meg a Web Apps alkalmazást a Microsoft-Identity-Web webhelyen.

Következő lépés