Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.
Bu makalede, web uygulamanız için Azure Active Directory B2C (Azure AD B2C) kimlik doğrulama deneyimini etkinleştirme, özelleştirme ve geliştirme işlemleri açıklanır.
Başlamadan önce aşağıdaki makaleler hakkında bilgi sahibi olmanız önemlidir:
- Örnek web uygulamasında kimlik doğrulamasını yapılandırma
- Kendi web uygulamanızda kimlik doğrulamasını etkinleştirin.
Özel bir etki alanı kullanın
Özel bir etki alanı kullanarak kimlik doğrulama URL'sini tamamen markalayabilirsiniz. Kullanıcı perspektifinden bakıldığında, kullanıcılar kimlik doğrulama işlemi sırasında Azure AD B2C b2clogin.com alan adına yönlendirilmeden kendi alan adınızda kalır.
URL'de tüm "b2c" referanslarını kaldırmak için, kimlik doğrulama isteği URL'sindeki B2C kiracı adınızı, contoso.onmicrosoft.com yerine kiracı kimliği GUID'niz ile değiştirebilirsiniz. Örneğin, https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/'ı https://account.contosobank.co.uk/<tenant ID GUID>/ olarak değiştirebilirsiniz.
Kimlik doğrulama URL'sinde özel bir etki alanı ve kiracı kimliğinizi kullanmak için Özel etki alanlarını etkinleştirme başlığındaki yönergeleri izleyin. Proje kök klasörünün altında appsettings.json dosyasını açın. Bu dosya, Azure AD B2C kimlik sağlayıcınız hakkında bilgi içerir.
appsettings.json dosyasında aşağıdakileri yapın:
- Girdiyi
Instanceözel etki alanınızla güncelleştirin. - Girdiyi
Domainkiracı kimliğiniz ile güncelleştirin. Daha fazla bilgi için bkz. Kiracı kimliğini kullanma.
Aşağıdaki JSON, değişiklik öncesinde uygulama ayarlarını gösterir:
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "tenant-name.onmicrosoft.com",
...
}
Aşağıdaki JSON, değişiklik sonrasında uygulama ayarlarını gösterir:
"AzureAdB2C": {
"Instance": "https://login.contoso.com",
"Domain": "00000000-0000-0000-0000-000000000000",
...
}
Gelişmiş senaryoları destekleme
AddMicrosoftIdentityWebAppAuthentication Microsoft kimlik platformu API'sindeki yöntem, geliştiricilerin gelişmiş kimlik doğrulama senaryoları için kod eklemesine veya OpenIdConnect olaylarına abone olmasını sağlar. Örneğin, uygulamanızın Azure AD B2C'ye gönderdiği kimlik doğrulama isteğini özelleştirmenizi sağlayan OnRedirectToIdentityProvider'a abone olabilirsiniz.
Gelişmiş senaryoları desteklemek için Startup.cs dosyasını açın ve ConfigureServices işlevini aşağıdaki kod parçacığıyla değiştirin AddMicrosoftIdentityWebAppAuthentication :
// Configuration to sign-in users with Azure AD B2C
//services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C");
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
Configuration.Bind("AzureAdB2C", options);
options.Events ??= new OpenIdConnectEvents();
options.Events.OnRedirectToIdentityProvider += OnRedirectToIdentityProviderFunc;
});
Yukarıdaki kod, yöntemine bir başvuru OnRedirectToIdentityProviderFunc ile OnRedirectToIdentityProvider olayını ekler. Sınıfına aşağıdaki kod parçacığını Startup.cs ekleyin.
private async Task OnRedirectToIdentityProviderFunc(RedirectContext context)
{
// Custom code here
// Don't remove this line
await Task.CompletedTask.ConfigureAwait(false);
}
Bağlam parametrelerini kullanarak denetleyicinizle OnRedirectToIdentityProvider işlev arasında parametre geçirebilirsiniz.
Oturum açma adını önceden doldurma
Oturum açma kullanıcı yolculuğu sırasında uygulamanız belirli bir kullanıcıyı hedef alabilir. Bir uygulama bir kullanıcıyı hedeflediğinde, yetkilendirme isteğinde login_hint kullanıcının oturum açma adıyla sorgu parametresini belirtebilir. Azure AD B2C, oturum açma adını otomatik olarak doldurur ve kullanıcının yalnızca parolayı sağlaması gerekir.
Oturum açma adını önceden doldurmak için aşağıdakileri yapın:
Özel bir ilke kullanıyorsanız, Doğrudan oturum açmayı ayarlama bölümünde açıklandığı gibi gerekli giriş beyanını ekleyin.
Gelişmiş senaryoları destekleme yordamını tamamlayın.
İşleve aşağıdaki kod
OnRedirectToIdentityProvidersatırını ekleyin:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.LoginHint = "emily@contoso.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Kimlik sağlayıcısını önceden seçme
Uygulamanızın oturum açma yolculuğunu Facebook, LinkedIn veya Google gibi sosyal hesapları içerecek şekilde yapılandırdıysanız parametresini domain_hint belirtebilirsiniz. Bu sorgu parametresi, Azure AD B2C'ye oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında bir ipucu sağlar. Örneğin, uygulama belirtirse domain_hint=facebook.comoturum açma akışı doğrudan Facebook oturum açma sayfasına gider.
Kullanıcıları bir dış kimlik sağlayıcısına yönlendirmek için aşağıdakileri yapın:
Dış kimlik sağlayıcınızın alan adını denetleyin. Daha fazla bilgi için bkz. Oturum açmayı sosyal bir sağlayıcıyayönlendirme.
Gelişmiş senaryoları destekleme yordamını tamamlayın.
işlevinde
OnRedirectToIdentityProviderFunc, işleveOnRedirectToIdentityProvideraşağıdaki kod satırını ekleyin:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.DomainHint = "facebook.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Kullanıcı arabirimi dilini belirtme
Azure AD B2C'de dil özelleştirmesi, kullanıcı akışınızın müşterilerinizin ihtiyaçlarına uygun çeşitli dilleri barındırmasını sağlar. Daha fazla bilgi için bkz . Dil özelleştirme.
Tercih edilen dili ayarlamak için aşağıdakileri yapın:
Gelişmiş senaryoları destekleme yordamını tamamlayın.
İşleve aşağıdaki kod
OnRedirectToIdentityProvidersatırını ekleyin:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.UiLocales = "es"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Özel sorgu dizesi parametresi geçirme
Özel ilkelerle, özel bir sorgu dizesi parametresi geçirebilirsiniz. İyi bir kullanım örneği, sayfa içeriğini dinamik olarak değiştirmek istediğiniz durumlardır.
Özel sorgu dizesi parametresi geçirmek için aşağıdakileri yapın:
ContentDefinitionParameters öğesini yapılandırın.
Gelişmiş senaryoları destekleme yordamını tamamlayın.
İşleve aşağıdaki kod
OnRedirectToIdentityProvidersatırını ekleyin:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.Parameters.Add("campaignId", "123"); // More code await Task.CompletedTask.ConfigureAwait(false); }
Kimlik belirteci ipucu sağla
Bağlı olan taraf uygulaması, OAuth2 yetkilendirme isteğinin bir parçası olarak bir gelen JSON Web Belirteci (JWT) gönderebilir. Gelen belirteç, kullanıcı veya yetkilendirme isteği hakkında bir ipucudur. Azure AD B2C belirteci doğrular ve ardından talebi ayıklar.
Kimlik doğrulama isteğine kimlik belirteci ipucu eklemek için aşağıdakileri yapın:
Gelişmiş senaryoları destekleme yordamını tamamlayın.
Özel ilkenizde bir kimlik belirteci ipucu teknik profili tanımlayın.
İşleve aşağıdaki kod
OnRedirectToIdentityProvidersatırını ekleyin:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { // The idTokenHint variable holds your ID token context.ProtocolMessage.IdTokenHint = idTokenHint // More code await Task.CompletedTask.ConfigureAwait(false); }
Hesap denetleyicisi
SignIn, SignUp veya SignOut eylemlerini özelleştirmek istiyorsanız, kendi denetleyicinizi oluşturmanızı öneririz. Kendi denetleyicinizin olması, denetleyicinizle kimlik doğrulama kitaplığı arasında parametre geçirmenizi sağlar.
AccountController , oturum açma ve oturum kapatma eylemlerini işleyen NuGet paketinin bir parçasıdır Microsoft.Identity.Web.UI . Uygulamasını Microsoft Identity Web kitaplığında bulabilirsiniz.
Hesap denetleyicisini ekleme
Visual Studio projenizde Denetleyiciler klasörüne sağ tıklayın ve yeni bir Denetleyici ekleyin. MVC - Boş Denetleyici'yi seçin ve MyAccountController.cs adını belirtin.
Aşağıdaki kod parçacığıMyAccountController eylemiyle bir özel öğe gösterir.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace mywebapp.Controllers
{
[AllowAnonymous]
[Area("MicrosoftIdentity")]
[Route("[area]/[controller]/[action]")]
public class MyAccountController : Controller
{
[HttpGet("{scheme?}")]
public IActionResult SignIn([FromRoute] string scheme)
{
scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
var redirectUrl = Url.Content("~/");
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
return Challenge(properties, scheme);
}
}
}
_LoginPartial.cshtml görünümünde, denetleyicinizle oturum açma bağlantısını değiştirin.
<form method="get" asp-area="MicrosoftIdentity" asp-controller="MyAccount" asp-action="SignIn">
Azure AD B2C ilke kimliğini geçirme
Aşağıdaki kod parçacığı, MyAccountController ve SignUp eylemiyle bir özel öğe gösterir. Eylem, kimlik doğrulama kitaplığına adlı policy bir parametre geçirir. Bu, belirli bir eylem için doğru Azure AD B2C ilke kimliğini sağlamanıza olanak tanır.
public IActionResult SignIn([FromRoute] string scheme)
{
scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
var redirectUrl = Url.Content("~/");
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
properties.Items["policy"] = "B2C_1_SignIn";
return Challenge(properties, scheme);
}
public IActionResult SignUp([FromRoute] string scheme)
{
scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
var redirectUrl = Url.Content("~/");
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
properties.Items["policy"] = "B2C_1_SignUp";
return Challenge(properties, scheme);
}
_LoginPartial.cshtml görünümünde, kaydolma veya profil düzenleme gibi diğer kimlik doğrulama bağlantıları için değerini asp-controller olarak değiştirinMyAccountController.
Özel parametreleri geçirme
Aşağıdaki kod parçacığıMyAccountController eylemiyle bir özel öğe gösterir. Eylem, kimlik doğrulama kitaplığına adlı campaign_id bir parametre geçirir.
public IActionResult SignIn([FromRoute] string scheme)
{
scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
var redirectUrl = Url.Content("~/");
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
properties.Items["policy"] = "B2C_1_SignIn";
properties.Items["campaign_id"] = "1234";
return Challenge(properties, scheme);
}
Gelişmiş senaryoları destekle yordamını tamamlayın ve yönteminde OnRedirectToIdentityProvider özel parametreyi okuyun:
private async Task OnRedirectToIdentityProviderFunc(RedirectContext context)
{
// Read the custom parameter
var campaign_id = context.Properties.Items.FirstOrDefault(x => x.Key == "campaign_id").Value;
// Add your custom code here
if (campaign_id != null)
{
// Send parameter to authentication request
context.ProtocolMessage.SetParameter("campaign_id", campaign_id);
}
await Task.CompletedTask.ConfigureAwait(false);
}
Oturumu kapatma yeniden yönlendirmesini güvenli hale getirin
Oturumu kapatıldıktan sonra kullanıcı, uygulama için belirtilen yanıt URL'lerinden bağımsız olarak parametresinde post_logout_redirect_uri belirtilen URI'ye yönlendirilir. Ancak geçerli id_token_hint bir ileti geçirilirse ve oturum kapatma isteklerinde Kimlik Belirteci Gerektir seçeneği açıksa Azure AD B2C, yeniden yönlendirmeyi gerçekleştirmeden önce değerinin post_logout_redirect_uri uygulamanın yapılandırılmış yeniden yönlendirme URI'lerinden biriyle eşleşip eşleşmediğini doğrular. Uygulama için eşleşen yanıt URL'si yapılandırılmadıysa, bir hata iletisi görüntülenir ve kullanıcı yeniden yönlendirılmaz.
Uygulamanızda güvenli bir oturum kapatma yeniden yönlendirmesini desteklemek için önce Hesap denetleyicisi ve Destek gelişmiş senaryoları bölümündeki adımları izleyin. Ardından aşağıdaki adımları izleyin:
Denetleyicide
MyAccountController.cs, aşağıdaki kod parçacığını kullanarak bir SignOut eylemi ekleyin:[HttpGet("{scheme?}")] public async Task<IActionResult> SignOutAsync([FromRoute] string scheme) { scheme ??= OpenIdConnectDefaults.AuthenticationScheme; //obtain the id_token var idToken = await HttpContext.GetTokenAsync("id_token"); //send the id_token value to the authentication middleware properties.Items["id_token_hint"] = idToken; return SignOut(properties,CookieAuthenticationDefaults.AuthenticationScheme,scheme); }Startup.cs sınıfında değeri ayrıştırın
id_token_hintve değeri kimlik doğrulama isteğine ekleyin. Aşağıdaki kod parçacığı, değerinid_token_hintkimlik doğrulama isteğine nasıl geçir yapılacağını gösterir:private async Task OnRedirectToIdentityProviderForSignOutFunc(RedirectContext context) { var id_token_hint = context.Properties.Items.FirstOrDefault(x => x.Key == "id_token_hint").Value; if (id_token_hint != null) { // Send parameter to authentication request context.ProtocolMessage.SetParameter("id_token_hint", id_token_hint); } await Task.CompletedTask.ConfigureAwait(false); }işlevinde
ConfigureServicesSaveTokensdeğerine erişebilir seçeneğini ekleyinid_token:services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { Configuration.Bind("AzureAdB2C", options); options.Events ??= new OpenIdConnectEvents(); options.Events.OnRedirectToIdentityProviderForSignOut += OnRedirectToIdentityProviderForSignOutFunc; options.SaveTokens = true; });appsettings.json yapılandırma dosyasında, oturum kapatma yeniden yönlendirme URI'nizin yolunu key'e
SignedOutCallbackPathekleyin."AzureAdB2C": { "Instance": "https://<your-tenant-name>.b2clogin.com", "ClientId": "<web-app-application-id>", "Domain": "<your-b2c-domain>", "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>", "SignUpSignInPolicyId": "<your-sign-up-in-policy>" }
Yukarıdaki örnekte, oturumu kapatma isteğine geçirilen post_logout_redirect_uri şu biçimde olacaktır: https://your-app.com/signout/<your-sign-up-in-policy>. Bu URL, Uygulama Kaydı'nın yanıt URL'lerine eklenmelidir.
Rol tabanlı erişim denetimi
ASP.NET Core'daki yetkilendirmeyle, aşağıdaki yöntemlerden birini kullanarak kullanıcıların korumalı bir kaynağa erişme yetkisi olup olmadığını kontrol edebilirsiniz:
yönteminde ConfigureServices , yetkilendirme modelini ekleyen yöntemini ekleyin AddAuthorization . Aşağıdaki örnek adlı EmployeeOnlybir ilke oluşturur. İlke, bir talebin EmployeeNumber var olduğunu doğrulamak için denetler. Talebin değeri şu kimliklerden biri olmalıdır: 1, 2, 3, 4 veya 5.
services.AddAuthorization(options =>
{
options.AddPolicy("EmployeeOnly", policy =>
policy.RequireClaim("EmployeeNumber", "1", "2", "3", "4", "5"));
});
Yetkilendirmeyi ASP.NET Core'da AuthorizeAttribute ve çeşitli parametrelerini kullanarak denetleyebilirsiniz. En temel biçimiyle, özniteliği bir Authorize denetleyiciye, eyleme veya Razor Sayfasına uygulamak, bu bileşenin kimliği doğrulanmış kullanıcılarına erişimi sınırlar.
İlke adıyla özniteliğini Authorize kullanarak denetleyicilere ilke uygularsınız. Aşağıdaki kod, eyleme Claims erişimi ilke tarafından yetkilendirilmiş kullanıcılarla EmployeeOnly sınırlar:
[Authorize(Policy = "EmployeeOnly")]
public IActionResult Claims()
{
return View();
}
Sonraki Adımlar
- Yetkilendirme hakkında daha fazla bilgi edinmek için bkz. ASP.NET Core'da yetkilendirmeye giriş.