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


Felhőhitelesítés az Azure Active Directory B2C-vel a ASP.NET Core-ban

Damien Bod által

Azure Active Directory B2C (Azure AD B2C) egy felhőalapú identitáskezelési megoldás webes és mobilalkalmazásokhoz. A szolgáltatás hitelesítést biztosít a felhőben és a helyszínen üzemeltetett alkalmazásokhoz. A hitelesítési típusok közé tartoznak az egyéni fiókok, a közösségi hálózati fiókok és az összevont vállalati fiókok. Az Azure AD B2C emellett minimális konfigurációval többtényezős hitelesítést is biztosít.

Borravaló

A Microsoft Entra ID, a Microsoft Entra External ID és az Azure AD B2C különálló termékajánlatok. Az Entra ID-bérlők általában egy szervezetet képviselnek, míg az Azure AD B2C-bérlő vagy a Microsoft Entra külső azonosító bérlője a függő entitások alkalmazásaival használandó identitások gyűjteményét képviselheti. További információ: Azure AD B2C: Gyakori kérdések (GYIK).

Borravaló

Microsoft Entra külső azonosító az ügyfelek a Microsoft új ügyfélidentitás- és hozzáférés-kezelési (CIAM) megoldása.

Ebben az oktatóanyagban megtudhatja, hogyan konfigurálhat egy ASP.NET Core-alkalmazást az Azure AD B2C-vel való hitelesítéshez.

Előfeltételek

Előkészítés

  1. Hozzon létre egy Azure Active Directory B2C-bérlőt.

  2. Hozzon létre egy új ASP.NET Core Razor-lapalkalmazást:

    dotnet new razor -o azure-ad-b2c
    

    Az előző parancs létrehoz egy Razor oldalakat tartalmazó alkalmazást egy azure-ad-b2cnevű könyvtárban.

  3. Webalkalmazás-regisztráció létrehozása a bérlő-ben. Átirányítási URIesetén használja a https://localhost:5001/signin-oidc. Cserélje le 5001 az alkalmazás által a Visual Studio által létrehozott portok használatakor használt portra.

Az alkalmazás módosítása

  1. Adja hozzá a Microsoft.Identity.Web és Microsoft.Identity.Web.UI csomagokat a projekthez. Ha Visual Studiót használ, használhatja NuGet Package Manager.

    dotnet add package Microsoft.Identity.Web
    dotnet add package Microsoft.Identity.Web.UI
    

    Az előzőben:

    • Microsoft.Identity.Web tartalmazza a Microsoft identitásplatformon való hitelesítéshez szükséges alapvető függőségeket.
    • Microsoft.Identity.Web.UI MicrosoftIdentitynevű területen beágyazott felhasználói felületi funkciókat tartalmaz.
  2. Adj hozzá egy AzureADB2C objektumot a appsettings.json-hez.

    Jegyzet

    Az Azure B2C felhasználói folyamatait használva be kell állítania a Instance és a folyamattípus PolicyId azonosítóját.

    {
      "AzureADB2C": {
        "Instance": "https://--your-domain--.b2clogin.com",
        "Domain": "[Enter the domain of your B2C tenant, e.g. contoso.onmicrosoft.com]",
        "TenantId": "[Enter 'common', or 'organizations' or the Tenant Id (Obtained from the Azure portal. Select 'Endpoints' from the 'App registrations' blade and use the GUID in any of the URLs), e.g. da41245a5-11b3-996c-00a8-4d99re19f292]",
        "ClientId": "[Enter the Client Id (Application ID obtained from the Azure portal), e.g. ba74781c2-53c2-442a-97c2-3d60re42f403]",
        // Use either a secret or a certificate. ClientCertificates are recommended.
        "ClientSecret": "[Copy the client secret added to the app from the Azure portal]",
        "ClientCertificates": [
        ],
        // the following is required to handle Continuous Access Evaluation challenges
        "ClientCapabilities": [ "cp1" ],
        "CallbackPath": "/signin-oidc",
        // Add your policy here
        "SignUpSignInPolicyId": "B2C_1_signup_signin",
        "SignedOutCallbackPath": "/signout-callback-oidc"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*"
    }
    
    • Tartományszámára használja az Azure AD B2C bérlő tartományát.
    • ClientIdesetében használja a tenantban létrehozott alkalmazásregisztráció Alkalmazás (ügyfél) azonosítóját.
    • Példányesetében használja az Azure AD B2C-bérlő tartományát.
    • A SignUpSignInPolicyIdesetében használja az Azure B2C-bérlőben definiált felhasználói folyamatszabályzatot
    • Használja a ClientSecret vagy a ClientCertificates konfigurációt. A ClientCertificates használata ajánlott.
    • Hagyja meg az összes többi értéket változatlanul.
  3. A Lapok/Megosztottlapon hozzon létre egy _LoginPartial.cshtmlnevű fájlt. Adja meg a következő kódot:

    @using System.Security.Principal
    
    <ul class="navbar-nav">
    @if (User.Identity?.IsAuthenticated == true)
    {
            <span class="navbar-text text-dark">Hello @User.Identity?.Name!</span>
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
            </li>
    }
    else
    {
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
            </li>
    }
    </ul>
    

    Az előző kód:

    • Ellenőrzi, hogy a felhasználó hitelesítése megtörtént-e.
    • Megjeleníti a Kijelentkezés vagy Bejelentkezés hivatkozást, ha szükséges.
      • A hivatkozás egy műveletmetódusra mutat a Account területen található MicrosoftIdentity vezérlőn.
  4. A Pages/Shared/_Layout.cshtmlelemben adja hozzá a kiemelt sort a <header> elemhez:

    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <a class="navbar-brand" asp-area="" asp-page="/Index">azure_ad_b2c</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                        </li>
                    </ul>
                    <partial name="_LoginPartial" />
                </div>
            </div>
        </nav>
    </header>
    

    A <partial name="_LoginPartial" /> hozzáadása a _LoginPartial.cshtml részleges nézetet jeleníti meg minden olyan lapkérelemben, amely ezt az elrendezést használja.

  5. A Program.csvégezze el a következő módosításokat:

    1. Adja hozzá a következő using irányelveket:

      using Microsoft.Identity.Web;
      using Microsoft.Identity.Web.UI;
      using Microsoft.AspNetCore.Authentication.OpenIdConnect;
      

      Az előző kód feloldja a következő lépésekben használt hivatkozásokat.

    2. Frissítse a builder.Services sorokat a következő kóddal:

      builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
              .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureADB2C"));
      
      builder.Services.AddAuthorization(options =>
      {
          // By default, all incoming requests will be authorized according to 
          // the default policy
          options.FallbackPolicy = options.DefaultPolicy;
      });
      builder.Services.AddRazorPages(options => {
          options.Conventions.AllowAnonymousToPage("/Index");
      })
      .AddMvcOptions(options => { })
      .AddMicrosoftIdentityUI();
      

      Az előző kódban:

      • A AddAuthentication és AddMicrosoftIdentityWebApp metódusok hívásai konfigurálják az alkalmazást az Open ID Connect használatára, amely kifejezetten a Microsoft identitásplatformhoz van konfigurálva.
      • AddAuthorization inicializálja ASP.NET Core-hitelesítést.
      • A AddRazorPages hívás konfigurálja az alkalmazást, hogy a névtelen böngészők megtekinthassék az Index oldalt. Minden más kéréshez hitelesítés szükséges.
      • AddMvcOptions és AddMicrosoftIdentityUI adja hozzá az Azure AD B2C-be vagy onnan való átirányításhoz szükséges felhasználói felületi összetevőket.
    3. Frissítse a kiemelt sort a Configure módszerre:

      app.UseRouting();
      
      app.UseAuthentication();
      app.UseAuthorization();
      
      app.MapRazorPages();
      

      Az előző kód engedélyezi a hitelesítést ASP.NET Core-ban.

Az alkalmazás futtatása

Jegyzet

Használja azt a profilt, amely megfelel az Azure alkalmazásregisztrációs átirányítási URI-k értékeinek.

  1. Futtassa az alkalmazást.

    dotnet run --launch-profile https
    
  2. Keresse meg az alkalmazás biztonságos végpontját, például https://localhost:5001/.

    • Az Index lap hitelesítési kihívás nélkül jelenik meg.
    • A fejléc tartalmaz egy Bejelentkezés hivatkozást, mert nincs hitelesítve.
  3. Válassza a Privacy hivatkozást.

    • A rendszer átirányítja a böngészőt a bérlő konfigurált hitelesítési módszerére.
    • Bejelentkezés után a fejléc egy üdvözlő üzenetet és egy Kijelentkezés hivatkozást jelenít meg.

Következő lépések

Ebben az oktatóanyagban megtanulta, hogyan konfigurálhat egy ASP.NET Core-alkalmazást az Azure AD B2C-vel való hitelesítéshez.

Most, hogy a ASP.NET Core-alkalmazás úgy van konfigurálva, hogy az Azure AD B2C-t használja a hitelesítéshez, az Engedélyezés attribútum használható az alkalmazás védelméhez. Fejleszd tovább az alkalmazásodat, tanuld meg a következőket: