Uwierzytelnianie w chmurze za pomocą usługi Azure Active Directory B2C w usłudze ASP.NET Core
Autor: Damien Bod
Usługa Azure Active Directory B2C (Azure AD B2C ) to rozwiązanie do zarządzania chmurą identity dla aplikacji internetowych i mobilnych. Usługa zapewnia uwierzytelnianie aplikacji hostowanych w chmurze i lokalnie. Typy uwierzytelniania obejmują indywidualne konta, konta sieci społecznościowe i federacyjne konta przedsiębiorstwa. Ponadto usługa Azure AD B2C może zapewnić uwierzytelnianie wieloskładnikowe z minimalną konfiguracją.
Napiwek
Microsoft Entra ID, Tożsamość zewnętrzna Microsoft Entra i Azure AD B2C to oddzielne oferty produktów. Dzierżawa entra ID zazwyczaj reprezentuje organizację, podczas gdy dzierżawa usługi Azure AD B2C lub dzierżawa Tożsamość zewnętrzna Microsoft Entra może reprezentować kolekcję tożsamości do użycia z aplikacjami jednostki uzależnionej. Aby dowiedzieć się więcej, zobacz Azure AD B2C: często zadawane pytania.
Napiwek
Tożsamość zewnętrzna Microsoft Entra dla klientów to nowe rozwiązanie firmy Microsoft do zarządzania dostępem identity i klientami (CIAM).
Z tego samouczka dowiesz się, jak skonfigurować aplikację ASP.NET Core na potrzeby uwierzytelniania za pomocą usługi Azure AD B2C.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Zestaw .NET SDK. Zainstaluj najnowszy zestaw .NET SDK dla swojej platformy.
Przygotowywanie
Utwórz dzierżawę usługi Azure Active Directory B2C.
Utwórz nową aplikację ASP.NET Core Razor pages:
dotnet new razor -o azure-ad-b2c
Poprzednie polecenie tworzy aplikację Razor pages w katalogu o nazwie azure-ad-b2c.
Napiwek
Możesz użyć programu Visual Studio do utworzenia aplikacji.
Utwórz rejestrację aplikacji internetowej w dzierżawie. W przypadku identyfikatora URI przekierowania użyj polecenia
https://localhost:5001/signin-oidc
. Zastąp5001
element portem używanym przez aplikację podczas korzystania z portów wygenerowanych przez program Visual Studio.
Modyfikowanie aplikacji
Dodaj pakiety
Microsoft.Identity.Web
iMicrosoft.Identity.Web.UI
do projektu. Jeśli używasz programu Visual Studio, możesz użyć Menedżer pakietów NuGet.dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
W poprzednim:
Microsoft.Identity.Web
zawiera podstawowy zestaw zależności do uwierzytelniania za pomocą platformy Microsoft identity .Microsoft.Identity.Web.UI
zawiera funkcje interfejsu użytkownika hermetyzowane w obszarze o nazwieMicrosoftIdentity
.
AzureADB2C
Dodaj obiekt doappsettings.json
obiektu .Uwaga
W przypadku korzystania z przepływów użytkownika usługi Azure B2C należy ustawić wystąpienie i identyfikator PolicyId typu przepływu.
{ "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": "*" }
- W przypadku domeny użyj domeny dzierżawy usługi Azure AD B2C.
- W polu ClientId użyj identyfikatora aplikacji (klienta) z rejestracji aplikacji utworzonej w dzierżawie.
- Na przykład użyj domeny dzierżawy usługi Azure AD B2C.
- W przypadku identyfikatora SignUpSignInPolicyId użyj zasad przepływu użytkownika zdefiniowanych w dzierżawie usługi Azure B2C
- Użyj konfiguracji ClientSecret lub ClientCertificates. Zalecane są certyfikaty klienta.
- Pozostaw wszystkie inne wartości w niezmienionej formie.
W obszarze Strony/Udostępnione utwórz plik o nazwie
_LoginPartial.cshtml
. Dołącz następujący kod:@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>
Powyższy kod ma następujące działanie:
- Sprawdza, czy użytkownik jest uwierzytelniony.
- Renderuje link Wyloguj się lub Zaloguj odpowiednio.
- Link wskazuje metodę akcji na
Account
kontrolerzeMicrosoftIdentity
w obszarze.
- Link wskazuje metodę akcji na
W pliku Pages/Shared/_Layout.cshtml dodaj wyróżniony wiersz w elemecie
<header>
:<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>
Dodanie
<partial name="_LoginPartial" />
powoduje renderowanie_LoginPartial.cshtml
widoku częściowego w każdym żądaniu strony, które używa tego układu.W Program.cs wprowadź następujące zmiany:
Dodaj następujące
using
dyrektywy:using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using Microsoft.AspNetCore.Authentication.OpenIdConnect;
Powyższy kod rozwiązuje odwołania używane w następnych krokach.
Zaktualizuj wiersze
builder.Services
przy użyciu następującego kodu: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();
Powyższy kod:
- Wywołania metod
AddAuthentication
iAddMicrosoftIdentityWebApp
konfigurują aplikację tak, aby korzystała z programu Open ID Connect, specjalnie skonfigurowanego dla platformy Microsoft identity . AddAuthorization
inicjuje autoryzację ASP.NET Core.- Wywołanie
AddRazorPages
konfiguruje aplikację, aby przeglądarki anonimowe mogły wyświetlać stronę Indeks. Wszystkie inne żądania wymagają uwierzytelnienia. AddMvcOptions
iAddMicrosoftIdentityUI
dodaj wymagane składniki interfejsu użytkownika do przekierowania do/z usługi Azure AD B2C.
- Wywołania metod
Zaktualizuj wyróżniony wiersz do
Configure
metody :app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages();
Powyższy kod umożliwia uwierzytelnianie w programie ASP.NET Core.
Uruchom aplikację
Uwaga
Użyj profilu zgodnego z identyfikatorami URI przekierowania rejestracji aplikacja systemu Azure
Uruchom aplikację.
dotnet run --launch-profile https
Przejdź do bezpiecznego punktu końcowego aplikacji, na przykład
https://localhost:5001/
.- Strona Indeks jest renderowana bez konieczności uwierzytelniania.
- Nagłówek zawiera link Zaloguj, ponieważ nie jest uwierzytelniony.
Wybierz link Privacy.
- Przeglądarka jest przekierowywana do skonfigurowanej metody uwierzytelniania dzierżawy.
- Po zalogowaniu nagłówek wyświetla komunikat powitalny i link Wyloguj.
Następne kroki
W tym samouczku przedstawiono sposób konfigurowania aplikacji ASP.NET Core na potrzeby uwierzytelniania za pomocą usługi Azure AD B2C.
Teraz, gdy aplikacja ASP.NET Core jest skonfigurowana do używania usługi Azure AD B2C do uwierzytelniania, atrybut Authorize może służyć do zabezpieczania aplikacji. Kontynuuj opracowywanie aplikacji, ucząc się:
- Dostosowywanie interfejsu użytkownika usługi Azure AD B2C.
- Konfigurowanie wymagań dotyczących złożoności hasła.
- Włącz uwierzytelnianie wieloskładnikowe.
- Skonfiguruj dodatkowych identity dostawców, takich jak Microsoft, Facebook, Google, Amazon, Twitter i inne.
- Użyj interfejsu API programu Microsoft Graph, aby pobrać dodatkowe informacje o użytkowniku, takie jak członkostwo w grupie, z dzierżawy usługi Azure AD B2C.
- Jak zabezpieczyć internetowy interfejs API utworzony za pomocą ASP.NET Core przy użyciu usługi Azure AD B2C.
- Samouczek: udzielanie dostępu do internetowego interfejsu API ASP.NET przy użyciu usługi Azure Active Directory B2C.