ASP.NET Core'da Azure Active Directory B2C ile bulut kimlik doğrulaması
Tarafından Damien Bod
Azure Active Directory B2C (Azure AD B2C), web ve mobil uygulamalar için bir bulut identity yönetimi çözümüdür. Hizmet, bulutta ve şirket içinde barındırılan uygulamalar için kimlik doğrulaması sağlar. Kimlik doğrulama türleri tek tek hesapları, sosyal ağ hesaplarını ve federasyon kurumsal hesaplarını içerir. Ayrıca Azure AD B2C, çok az yapılandırmayla çok faktörlü kimlik doğrulaması sağlayabilir.
İpucu
Microsoft Entra Id, Microsoft Entra Dış Kimlik ve Azure AD B2C ayrı ürün teklifleridir. Entra Id kiracısı genellikle bir kuruluşu temsil ederken Azure AD B2C kiracısı veya Microsoft Entra Dış Kimlik kiracısı, bağlı olan taraf uygulamalarla kullanılacak kimlik koleksiyonunu temsil edebilir. Daha fazla bilgi edinmek için bkz . Azure AD B2C: Sık sorulan sorular (SSS).
İpucu
Müşteriler için Microsoft Entra Dış Kimlik Microsoft'un yeni müşteri identity ve erişim yönetimi (CIAM) çözümüdür.
Bu öğreticide, Azure AD B2C ile kimlik doğrulaması için bir ASP.NET Core uygulamasını yapılandırmayı öğreneceksiniz.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- .NET SDK'sı. Platformunuz için en son .NET SDK'sını yükleyin.
Hazırlık
Azure Active Directory B2C kiracısı oluşturun.
Yeni bir ASP.NET Core Razor sayfaları uygulaması oluşturun:
dotnet new razor -o azure-ad-b2c
Önceki komut, azure-ad-b2c adlı bir dizinde bir sayfalar uygulaması oluştururRazor.
İpucu
Uygulamanızı oluşturmak için Visual Studio'yu kullanmayı tercih edebilirsiniz.
Kiracıda bir web uygulaması kaydı oluşturun. Yeniden Yönlendirme URI'sini kullanmak için kullanın
https://localhost:5001/signin-oidc
. değerini, Visual Studio tarafından oluşturulan bağlantı noktalarını kullanırken uygulamanız tarafından kullanılan bağlantı noktasıyla değiştirin5001
.
Uygulamayı değiştirme
Microsoft.Identity.Web
veMicrosoft.Identity.Web.UI
paketlerini projeye ekleyin. Visual Studio kullanıyorsanız NuGet Paket Yöneticisi kullanabilirsiniz.dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
Önceki adımda:
Microsoft.Identity.Web
Microsoft identity platformunda kimlik doğrulaması için temel bağımlılık kümesini içerir.Microsoft.Identity.Web.UI
adlıMicrosoftIdentity
bir alanda kapsüllenen kullanıcı arabirimi işlevselliğini içerir.
öğesine
appsettings.json
birAzureADB2C
nesne ekleyin.Not
Azure B2C kullanıcı akışlarını kullanırken, akış türünün Instance ve PolicyId değerlerini ayarlamanız gerekir.
{ "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": "*" }
- Etki Alanı için Azure AD B2C kiracınızın etki alanını kullanın.
- ClientId için, kiracınızda oluşturduğunuz uygulama kaydından Uygulama (istemci) kimliğini kullanın.
- Örneğin, Azure AD B2C kiracınızın etki alanını kullanın.
- SignUpSignInPolicyId için Azure B2C kiracısında tanımlanan kullanıcı akışı ilkesini kullanın
- ClientSecret veya ClientCertificates yapılandırmasını kullanın. ClientCertificates önerilir.
- Diğer tüm değerleri olduğu gibi bırakın.
Sayfalar/Paylaşılan'da adlı
_LoginPartial.cshtml
bir dosya oluşturun. Aşağıdaki kodu ekleyin:@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>
Yukarıdaki kod:
- Kullanıcının kimliğinin doğrulanmış olup olmadığını denetler.
- Oturumu kapat veya Oturum aç bağlantısını uygun şekilde işler.
- Bağlantı, alandaki denetleyicide
Account
bir eylem yöntemineMicrosoftIdentity
işaret eder.
- Bağlantı, alandaki denetleyicide
Pages/Shared/_Layout.cshtml dosyasında vurgulanan satırı öğesi içine
<header>
ekleyin:<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>
Ekleme,
<partial name="_LoginPartial" />
bu düzeni kullanan her sayfa isteğinde kısmi görünümü işler_LoginPartial.cshtml
.Program.cs aşağıdaki değişiklikleri yapın:
Aşağıdaki
using
yönergeleri ekleyin:using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using Microsoft.AspNetCore.Authentication.OpenIdConnect;
Yukarıdaki kod, sonraki adımlarda kullanılan başvuruları çözümler.
builder.Services
Satırları aşağıdaki kodla güncelleştirin: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();
Önceki kodda:
- ve
AddMicrosoftIdentityWebApp
yöntemlerine yapılanAddAuthentication
çağrılar, uygulamayı Open ID Connect kullanacak şekilde yapılandırarak özellikle Microsoft identity platformu için yapılandırılır. AddAuthorization
ASP.NET Çekirdek yetkilendirmeyi başlatır.- Çağrı,
AddRazorPages
anonim tarayıcıların Dizin sayfasını görüntüleyebilmesi için uygulamayı yapılandırıyor. Diğer tüm istekler için kimlik doğrulaması gerekir. AddMvcOptions
veAddMicrosoftIdentityUI
Azure AD B2C'ye/Azure AD B2C'den yönlendirmek için gerekli kullanıcı arabirimi bileşenlerini ekleyin.
- ve
Vurgulanan satırı yöntemine güncelleştirin
Configure
:app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages();
Yukarıdaki kod, ASP.NET Core'da kimlik doğrulamasını etkinleştirir.
Uygulamayı çalıştırma
Not
Azure Uygulaması kaydı Yeniden Yönlendirme URI'leri ile eşleşen profili kullanın
Uygulamayı çalıştırma.
dotnet run --launch-profile https
Uygulamanın güvenli uç noktasına (örneğin,
https://localhost:5001/
) göz atın.- Dizin sayfası kimlik doğrulaması sınaması olmadan işlenir.
- Kimliğiniz doğrulanmadığından üst bilgide Oturum aç bağlantısı bulunur.
Privacy bağlantısını seçin.
- Tarayıcı, kiracınızın yapılandırılmış kimlik doğrulama yöntemine yönlendirilir.
- Oturum açtıktan sonra üst bilgide bir karşılama iletisi ve Oturumu kapat bağlantısı görüntülenir.
Sonraki adımlar
Bu öğreticide, Azure AD B2C ile kimlik doğrulaması için bir ASP.NET Core uygulamasını yapılandırmayı öğrendiniz.
ASP.NET Core uygulaması artık kimlik doğrulaması için Azure AD B2C kullanacak şekilde yapılandırıldığına göre, yetkilendirme özniteliği uygulamanızın güvenliğini sağlamak için kullanılabilir. Şu bilgileri öğrenerek uygulamanızı geliştirmeye devam edin:
- Azure AD B2C kullanıcı arabirimini özelleştirin.
- Parola karmaşıklığı gereksinimlerini yapılandırın.
- Çok faktörlü kimlik doğrulamasını etkinleştirin.
- Microsoft, Facebook, Google, Amazon, Twitter ve diğerleri gibi ek identity sağlayıcıları yapılandırın.
- Azure AD B2C kiracısından grup üyeliği gibi ek kullanıcı bilgilerini almak için Microsoft Graph API'sini kullanın.
- Azure AD B2C kullanarak ASP.NET Core ile oluşturulmuş bir Web API'sinin güvenliğini sağlama.
- Öğretici: Azure Active Directory B2C kullanarak ASP.NET web API'sine erişim izni verme.
ASP.NET Core