Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
2025. május 1-jére az Azure AD B2C már nem lesz elérhető az új ügyfelek számára. További információ a GYIK-ben.
Ez a cikk azt ismerteti, hogyan engedélyezheti, szabhatja testre és fejlesztheti az Azure Active Directory B2C (Azure AD B2C) hitelesítési felületét a webalkalmazáshoz.
Mielőtt hozzákezd, fontos megismerkednie a következő cikkekkel:
- Hitelesítés konfigurálása minta webalkalmazásban
- Engedélyezze a hitelesítést a saját webalkalmazásában.
Egyéni tartomány használata
Egyéni domain használatával teljesen testre szabhatja a hitelesítési URL-t. Felhasználói szempontból a felhasználók a hitelesítési folyamat során a tartományon maradnak, ahelyett, hogy az Azure AD B2C b2clogin.com tartománynévre irányítanák át őket.
Ha az URL-címben el szeretné távolítani a "b2c" kifejezésre mutató összes hivatkozást, a B2C-bérlő nevét is lecserélheti contoso.onmicrosoft.com a hitelesítési kérelem URL-címében a bérlőazonosító GUID azonosítójával. Például átválthatja a https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ elemet a https://account.contosobank.co.uk/<tenant ID GUID>/ elemre.
Ha egyéni tartományt és bérlőazonosítót szeretne használni a hitelesítési URL-címben, kövesse az Egyéni tartományok engedélyezése című útmutatót. A projekt gyökérmappájában nyissa meg a appsettings.json fájlt. Ez a fájl az Azure AD B2C identitásszolgáltatójáról tartalmaz információkat.
A appsettings.json fájlban tegye a következőket:
- Frissítse a bejegyzést
Instanceaz egyéni tartományával. - Frissítse a bejegyzést
Domaina bérlőazonosítóval. További információ: Bérlőazonosító használata.
Az alábbi JSON a módosítás előtt megjeleníti az alkalmazás beállításait:
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "tenant-name.onmicrosoft.com",
...
}
Az alábbi JSON a módosítás után megjeleníti az alkalmazás beállításait:
"AzureAdB2C": {
"Instance": "https://login.contoso.com",
"Domain": "00000000-0000-0000-0000-000000000000",
...
}
Speciális forgatókönyvek támogatása
A AddMicrosoftIdentityWebAppAuthentication Microsoft Identity Platform API metódusa lehetővé teszi, hogy a fejlesztők speciális hitelesítési forgatókönyvekhez kódot adjanak hozzá, vagy feliratkozzanak az OpenIdConnect-eseményekre. Előfizethet például az OnRedirectToIdentityProviderre, amely lehetővé teszi az alkalmazás által az Azure AD B2C-nek küldött hitelesítési kérés testreszabását.
A speciális forgatókönyvek támogatásához nyissa meg a Startup.cs fájlt, és a ConfigureServices függvényben cserélje le AddMicrosoftIdentityWebAppAuthentication a következő kódrészletre:
// 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;
});
Az előző kód hozzáadja az OnRedirectToIdentityProvider eseményt a OnRedirectToIdentityProviderFunc metódusra való hivatkozással. Adja hozzá a következő kódrészletet az Startup.cs osztályhoz.
private async Task OnRedirectToIdentityProviderFunc(RedirectContext context)
{
// Custom code here
// Don't remove this line
await Task.CompletedTask.ConfigureAwait(false);
}
Környezeti paraméterek használatával paramétereket adhat át a vezérlő és a OnRedirectToIdentityProvider függvény között.
A bejelentkezési név előzetes feltöltése
A bejelentkezési felhasználói folyamat során előfordulhat, hogy az alkalmazás egy adott felhasználót céloz meg. Amikor egy alkalmazás egy felhasználót céloz meg, az engedélyezési kérelemben megadhatja a login_hint lekérdezési paramétert a felhasználó bejelentkezési nevével. Az Azure AD B2C automatikusan kitölti a bejelentkezési nevet, és a felhasználónak csak a jelszót kell megadnia.
A bejelentkezési név előzetes feltöltéséhez tegye a következőket:
Ha egyéni szabályzatot használ, adja hozzá a szükséges bemeneti jogcímet a közvetlen bejelentkezés beállítása című cikkben leírtak szerint.
Végezze el a Támogatási speciális forgatókönyvek eljárást.
Adja hozzá a következő kódsort a
OnRedirectToIdentityProviderfüggvényhez:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.LoginHint = "emily@contoso.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Identitásszolgáltató előzetes kijelölése
Ha úgy konfigurálta az alkalmazás bejelentkezési útját, hogy közösségi fiókokat , például Facebookot, LinkedIn-t vagy Google-t is tartalmazzon, megadhatja a paramétert domain_hint . Ez a lekérdezési paraméter az Azure AD B2C-nek a bejelentkezéshez használandó közösségi identitásszolgáltatóra vonatkozó tippet nyújt. Ha például az alkalmazás megadja domain_hint=facebook.com, a bejelentkezési folyamat közvetlenül a Facebook bejelentkezési oldalára kerül.
A felhasználók külső identitásszolgáltatóhoz való átirányításához tegye a következőket:
Ellenőrizze a külső identitásszolgáltató tartománynevét. További információ: Bejelentkezés átirányítása közösségi szolgáltatóhoz.
Végezze el a Támogatási speciális forgatókönyvek eljárást.
A függvényben
OnRedirectToIdentityProviderFuncadja hozzá a következő kódsort aOnRedirectToIdentityProviderfüggvényhez:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.DomainHint = "facebook.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
A felhasználói felület nyelvének megadása
Az Azure AD B2C nyelvi testreszabása lehetővé teszi a felhasználói folyamat számára, hogy az ügyfelek igényeinek megfelelően különféle nyelveket fogadjon el. További információ: Nyelvi testreszabás.
Az előnyben részesített nyelv beállításához tegye a következőket:
Végezze el a Támogatási speciális forgatókönyvek eljárást.
Adja hozzá a következő kódsort a
OnRedirectToIdentityProviderfüggvényhez:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.UiLocales = "es"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Egyéni lekérdezési sztringparaméter átadása
Egyéni szabályzatokkal egyéni lekérdezési sztringparamétert adhat át. Jó példa erre, ha dinamikusan szeretné módosítani a lap tartalmát.
Egyéni lekérdezési sztringparaméter átadásához tegye a következőket:
Konfigurálja a ContentDefinitionParameters elemet.
Végezze el a Támogatási speciális forgatókönyvek eljárást.
Adja hozzá a következő kódsort a
OnRedirectToIdentityProviderfüggvényhez:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.Parameters.Add("campaignId", "123"); // More code await Task.CompletedTask.ConfigureAwait(false); }
Azonosító token javaslat átadása
A függő entitásalkalmazások az OAuth2 engedélyezési kérelem részeként küldhetnek bejövő JSON-webjogkivonatot (JWT). A bejövő jogkivonat egy jelzés a felhasználóra vagy az engedélyezési kérelemre vonatkozóan. Az Azure AD B2C ellenőrzi a jogkivonatot, majd kinyeri a jogcímet.
Azonosító token javaslat hozzáadásához a hitelesítési kéréshez, tegye a következőket:
Végezze el a Támogatási speciális forgatókönyvek eljárást.
Az egyéni szabályzatban definiáljon egy ID token hint technikai profil definíciót.
Adja hozzá a következő kódsort a
OnRedirectToIdentityProviderfüggvényhez:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { // The idTokenHint variable holds your ID token context.ProtocolMessage.IdTokenHint = idTokenHint // More code await Task.CompletedTask.ConfigureAwait(false); }
Fiókvezérlő
Ha testre szeretné szabni a Bejelentkezési, Regisztrációs vagy Kijelentkezési műveleteket, javasoljuk, hogy hozzon létre saját vezérlőt. A saját vezérlővel paramétereket adhat át a vezérlő és a hitelesítési kódtár között.
AccountController a NuGet-csomag része Microsoft.Identity.Web.UI , amely kezeli a bejelentkezési és kijelentkezési műveleteket. A megvalósítást a Microsoft Identity webtárban találja.
Fiókvezérlő hozzáadása
A Visual Studio-projektben kattintson a jobb gombbal a Vezérlők mappára, majd vegyen fel egy új vezérlőt. Válassza az MVC – Üres vezérlő lehetőséget, majd adja meg a MyAccountController.cs nevet.
Az alábbi kódrészlet bemutatja az egyéni MyAccountController adatokat a SignIn művelettel.
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);
}
}
}
A _LoginPartial.cshtml nézetben módosítsa a vezérlő bejelentkezési hivatkozását.
<form method="get" asp-area="MicrosoftIdentity" asp-controller="MyAccount" asp-action="SignIn">
Az Azure AD B2C szabályzatazonosítójának átadása
Az alábbi kódrészlet bemutatja az egyéni MyAccountController adatokat a SignIn és a SignUp művelettel. A művelet átad egy hitelesítési kódtárnak elnevezett policy paramétert. Ez lehetővé teszi a megfelelő Azure AD B2C-szabályzatazonosító megadását az adott művelethez.
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);
}
A _LoginPartial.cshtml nézetben módosítsa az értéket asp-controller bármely más hitelesítési hivatkozásra, például a regisztrációra vagy a MyAccountController profil szerkesztésére.
Egyéni paraméterek átadása
Az alábbi kódrészlet bemutatja az egyéni MyAccountController adatokat a SignIn művelettel. A művelet átad egy hitelesítési kódtárnak elnevezett campaign_id paramétert.
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);
}
Végezze el a Támogatási speciális forgatókönyvek eljárást, majd a OnRedirectToIdentityProvider metódusban olvassa el az egyéni paramétert:
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);
}
A kijelentkezés átirányításának védelme
A kijelentkezés után a rendszer átirányítja a felhasználót a post_logout_redirect_uri paraméterben megadott URI-ra, függetlenül az alkalmazáshoz megadott válasz URL-címektől. Ha azonban érvényes id_token_hint értéket ad meg, és a kijelentkezési kérelmekben engedélyezve van az azonosító jogkivonat, az Azure AD B2C ellenőrzi, hogy a post_logout_redirect_uri érték megegyezik-e az alkalmazás egyik konfigurált átirányítási URI-jával az átirányítás végrehajtása előtt. Ha nem lett konfigurálva egyező válasz URL-cím az alkalmazáshoz, hibaüzenet jelenik meg, és a felhasználó nem lesz átirányítva.
Ha támogatni szeretné a biztonságos kijelentkezési átirányítást az alkalmazásban, először kövesse a Fiókvezérlő és a Speciális forgatókönyvek támogatása szakasz lépéseit . Ezután kövesse az alábbi lépéseket:
A vezérlőben
MyAccountController.csadjon hozzá egy SignOut-műveletet a következő kódrészlet használatával:[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); }Az Startup.cs osztályban elemezze az
id_token_hintértéket, és fűzze hozzá az értéket a hitelesítési kérelemhez. Az alábbi kódrészlet bemutatja, hogyan adhatja át az értéket aid_token_hinthitelesítési kérelemnek: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); }A függvényben
ConfigureServicesadja hozzá aSaveTokensvezérlők számára elérhető beállítást azid_tokenértékhez:services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { Configuration.Bind("AzureAdB2C", options); options.Events ??= new OpenIdConnectEvents(); options.Events.OnRedirectToIdentityProviderForSignOut += OnRedirectToIdentityProviderForSignOutFunc; options.SaveTokens = true; });A appsettings.json konfigurációs fájlban adja hozzá a bejelentkezési átirányítási URI elérési útját a kulcshoz
SignedOutCallbackPath."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>" }
A fenti példában a bejelentkezési kérelembe átadott post_logout_redirect_uri formátuma a következő lesz: https://your-app.com/signout/<your-sign-up-in-policy>. Ezt az URL-címet hozzá kell adni az alkalmazásregisztráció válasz URL-címéhez.
Szerepköralapú hozzáférés-vezérlés
A ASP.NET Core-ban történő engedélyezéssel ellenőrizheti, hogy a felhasználók jogosultak-e hozzáférni egy védett erőforráshoz az alábbi módszerek egyikével:
A metódusban ConfigureServices adja hozzá a AddAuthorization metódust, amely hozzáadja az engedélyezési modellt. Az alábbi példa létrehoz egy szabályzatot .EmployeeOnly A szabályzat ellenőrzi, hogy létezik-e jogcím EmployeeNumber . A jogcím értékének az alábbi azonosítók egyikének kell lennie: 1, 2, 3, 4 vagy 5.
services.AddAuthorization(options =>
{
options.AddPolicy("EmployeeOnly", policy =>
policy.RequireClaim("EmployeeNumber", "1", "2", "3", "4", "5"));
});
Az engedélyezést a ASP.NET Core-ban az AuthorizationAttribute és annak különböző paraméterei használatával szabályozhatja. A legalapvetőbb formában az Authorize attribútum vezérlőre, műveletre vagy Razor-lapra való alkalmazása korlátozza az összetevő hitelesített felhasználóihoz való hozzáférést.
A szabályzatokat a szabályzat nevével ellátott attribútummal Authorize alkalmazhatja a vezérlőkre. Az alábbi kód korlátozza a művelethez való hozzáférést a Claims szabályzat által EmployeeOnly engedélyezett felhasználók számára:
[Authorize(Policy = "EmployeeOnly")]
public IActionResult Claims()
{
return View();
}
Következő lépések
- Az engedélyezésről további információt a ASP.NET Core engedélyezési útmutatójában talál.