Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.
In diesem Artikel wird beschrieben, wie Sie die Azure Active Directory B2C(Azure AD B2C)-Authentifizierung für Ihre Webanwendung aktivieren, anpassen und verbessern.
Bevor Sie beginnen, ist es wichtig, sich mit den folgenden Artikeln vertraut zu machen:
- Konfigurieren der Authentifizierung in einer Beispielweb-App
- Aktivieren Sie die Authentifizierung in Ihrer eigenen Web-App.
Verwenden einer benutzerdefinierten Domäne
Mithilfe einer benutzerdefinierten Domäne können Sie die Authentifizierungs-URL vollständig kennzeichnen. Aus Benutzerperspektive verbleiben Benutzer während des Authentifizierungsprozesses auf Ihrer Domäne, anstatt an den Azure AD B2C b2clogin.com Domänennamen umgeleitet zu werden.
Um alle Verweise auf "b2c" in der URL zu entfernen, können Sie auch Ihren B2C-Mandantennamen, contoso.onmicrosoft.com, in der Authentifizierungsanforderungs-URL durch Ihre Mandanten-ID-GUID ersetzen. Sie können zum Beispiel https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ zu https://account.contosobank.co.uk/<tenant ID GUID>/ ändern.
Wenn Sie eine benutzerdefinierte Domäne und Ihre Mandanten-ID in der Authentifizierungs-URL verwenden möchten, befolgen Sie die Anweisungen in "Benutzerdefinierte Domänen aktivieren". Öffnen Sie im Projektstammordner die Datei appsettings.json. Diese Datei enthält Informationen zu Ihrem Azure AD B2C-Identitätsanbieter.
Gehen Sie in der dateiappsettings.json wie folgt vor:
- Aktualisieren Sie den
InstanceEintrag mit Ihrer benutzerdefinierten Domäne. - Aktualisieren Sie den
DomainEintrag mit Ihrer Mandanten-ID. Weitere Informationen finden Sie unter Verwenden der Mandanten-ID.
Der folgende JSON-Code zeigt die App-Einstellungen vor der Änderung an:
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "tenant-name.onmicrosoft.com",
...
}
Der folgende JSON-Code zeigt die App-Einstellungen nach der Änderung:
"AzureAdB2C": {
"Instance": "https://login.contoso.com",
"Domain": "00000000-0000-0000-0000-000000000000",
...
}
Unterstützen erweiterter Szenarien
Mit AddMicrosoftIdentityWebAppAuthentication der Methode in der Microsoft Identity Platform-API können Entwickler Code für erweiterte Authentifizierungsszenarien hinzufügen oder OpenIdConnect-Ereignisse abonnieren. Sie können beispielsweise OnRedirectToIdentityProvider abonnieren, mit dem Sie die Authentifizierungsanforderung anpassen können, die Ihre App an Azure AD B2C sendet.
Um erweiterte Szenarien zu unterstützen, öffnen Sie die Startup.cs-Datei, und ersetzen Sie ConfigureServices in der AddMicrosoftIdentityWebAppAuthentication Funktion durch den folgenden Codeausschnitt:
// 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;
});
Der vorangehende Code fügt das OnRedirectToIdentityProvider-Ereignis mit einem Verweis auf die OnRedirectToIdentityProviderFunc Methode hinzu. Fügen Sie der Startup.cs Klasse den folgenden Codeausschnitt hinzu.
private async Task OnRedirectToIdentityProviderFunc(RedirectContext context)
{
// Custom code here
// Don't remove this line
await Task.CompletedTask.ConfigureAwait(false);
}
Sie können Parameter zwischen dem Controller und der OnRedirectToIdentityProvider Funktion übergeben, indem Sie Kontextparameter verwenden.
Den Anmeldenamen im Voraus ausfüllen
Während einer Anmeldebenutzerreise richtet sich Ihre App möglicherweise an einen bestimmten Benutzer. Wenn eine App auf einen Benutzer ausgerichtet ist, kann sie in der Autorisierungsanforderung den login_hint Abfrageparameter mit dem Anmeldenamen des Benutzers angeben. Azure AD B2C füllt automatisch den Anmeldenamen auf, und der Benutzer muss nur das Kennwort angeben.
Gehen Sie wie folgt vor, um den Anmeldenamen vorab aufzufüllen:
Wenn Sie eine benutzerdefinierte Richtlinie verwenden, fügen Sie den erforderlichen Eingabeanspruch hinzu, wie unter "Einrichten der direkten Anmeldung" beschrieben.
Führen Sie das Verfahren für erweiterte Supportszenarien aus.
Fügen Sie der
OnRedirectToIdentityProviderFunktion die folgende Codezeile hinzu:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.LoginHint = "emily@contoso.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Vorauswahl eines Identitätsanbieters
Wenn Sie die Anmeldereise für Ihre Anwendung so konfiguriert haben, dass sie soziale Konten wie Facebook, LinkedIn oder Google enthält, können Sie den domain_hint Parameter angeben. Dieser Abfrageparameter gibt Azure AD B2C einen Hinweis auf den sozialen Identitätsanbieter, der für die Anmeldung verwendet werden soll. Wenn die Anwendung beispielsweise angibt domain_hint=facebook.com, wechselt der Anmeldefluss direkt zur Facebook-Anmeldeseite.
Gehen Sie wie folgt vor, um Benutzer an einen externen Identitätsanbieter umzuleiten:
Überprüfen Sie den Domänennamen Ihres externen Identitätsanbieters. Weitere Informationen finden Sie unter Umleitung der Anmeldung an einen Anbieter für soziale Netzwerke.
Führen Sie das Verfahren für erweiterte Supportszenarien aus.
Fügen Sie der Funktion in der
OnRedirectToIdentityProviderFuncFunktion die folgende Codezeile hinzuOnRedirectToIdentityProvider:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.DomainHint = "facebook.com"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Angeben der Benutzeroberflächensprache
Die Sprachanpassung in Azure AD B2C ermöglicht Es Ihrem Benutzerfluss, eine Vielzahl von Sprachen an die Anforderungen Ihrer Kunden anzupassen. Weitere Informationen finden Sie unter Sprachanpassung.
Gehen Sie wie folgt vor, um die bevorzugte Sprache festzulegen:
Führen Sie das Verfahren für erweiterte Supportszenarien aus.
Fügen Sie der
OnRedirectToIdentityProviderFunktion die folgende Codezeile hinzu:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.UiLocales = "es"; // More code await Task.CompletedTask.ConfigureAwait(false); }
Übergeben eines benutzerdefinierten Abfragezeichenfolgenparameters
Mit benutzerdefinierten Richtlinien können Sie einen benutzerdefinierten Abfragezeichenfolgenparameter übergeben. Ein gutes Anwendungsfallbeispiel ist, wenn Sie den Seiteninhalt dynamisch ändern möchten.
Gehen Sie wie folgt vor, um einen benutzerdefinierten Abfragezeichenfolgenparameter zu übergeben:
Konfigurieren Sie das ContentDefinitionParameters-Element .
Führen Sie das Verfahren für erweiterte Supportszenarien aus.
Fügen Sie der
OnRedirectToIdentityProviderFunktion die folgende Codezeile hinzu:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { context.ProtocolMessage.Parameters.Add("campaignId", "123"); // More code await Task.CompletedTask.ConfigureAwait(false); }
Übergeben eines ID-Tokenhinweises
Eine Anwendung einer vertrauenden Seite kann ein eingehendes JSON-Webtoken (JWT) als Teil der OAuth2-Autorisierungsanforderung senden. Das eingehende Token ist ein Hinweis auf den Benutzer oder die Autorisierungsanforderung. Azure AD B2C überprüft das Token und extrahiert dann den Anspruch.
Gehen Sie wie folgt vor, um einen ID-Tokenhinweis in die Authentifizierungsanforderung einzuschließen:
Führen Sie das Verfahren für erweiterte Supportszenarien aus.
Definieren Sie in Ihrer benutzerdefinierten Richtlinie ein ID-Tokenhinweis technisches Profil.
Fügen Sie der
OnRedirectToIdentityProviderFunktion die folgende Codezeile hinzu:private async Task OnRedirectToIdentityProviderFunc(RedirectContext context) { // The idTokenHint variable holds your ID token context.ProtocolMessage.IdTokenHint = idTokenHint // More code await Task.CompletedTask.ConfigureAwait(false); }
Kontoverantwortlicher
Wenn Sie die Aktionen "SignIn", " SignUp" oder "SignOut " anpassen möchten, empfehlen wir Ihnen, einen eigenen Controller zu erstellen. Mit Ihrem eigenen Controller können Sie Parameter zwischen Dem Controller und der Authentifizierungsbibliothek übergeben.
AccountController ist Teil des Microsoft.Identity.Web.UI NuGet-Pakets, das die Anmelde- und Abmeldeaktionen behandelt. Sie finden die Implementierung in der Microsoft Identity Web Library.
Hinzufügen des Kontocontrollers
Klicken Sie in Ihrem Visual Studio-Projekt mit der rechten Maustaste auf den Ordner "Controller ", und fügen Sie dann einen neuen Controller hinzu. Wählen Sie MVC - Leerer Controller aus, und geben Sie dann den Namen MyAccountController.cs an.
Der folgende Codeausschnitt veranschaulicht einen benutzerdefinierten MyAccountController Codeausschnitt mit der SignIn-Aktion .
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);
}
}
}
Ändern Sie in der Ansicht _LoginPartial.cshtml den Anmeldelink zu Ihrem Controller.
<form method="get" asp-area="MicrosoftIdentity" asp-controller="MyAccount" asp-action="SignIn">
Übergeben der Azure AD B2C-Richtlinien-ID
Der folgende Codeausschnitt veranschaulicht eine benutzerdefinierte MyAccountController Aktion mit der SignIn - und SignUp-Aktion . Die Aktion übergibt einen Parameter, der an die Authentifizierungsbibliothek benannt ist policy . Auf diese Weise können Sie die richtige Azure AD B2C-Richtlinien-ID für die jeweilige Aktion angeben.
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);
}
Ändern Sie in der ansicht _LoginPartial.cshtml den asp-controller Wert MyAccountController für alle anderen Authentifizierungslinks, z. B. das Registrieren oder Bearbeiten des Profils.
Übergeben von benutzerdefinierten Parametern
Der folgende Codeausschnitt veranschaulicht einen benutzerdefinierten MyAccountController Codeausschnitt mit der SignIn-Aktion . Die Aktion übergibt einen Parameter, der an die Authentifizierungsbibliothek benannt ist campaign_id .
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);
}
Führen Sie die Prozedur "Erweiterte Szenarien unterstützen " aus, und lesen Sie dann in der OnRedirectToIdentityProvider Methode den benutzerdefinierten Parameter:
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);
}
Sichern Sie Ihre Abmeldeumleitung
Nach der Abmeldung wird der Benutzer unabhängig von den Antwort-URLs, die für die Anwendung angegeben wurden, an den post_logout_redirect_uri im Parameter angegebenen URI umgeleitet. Wenn jedoch ein gültiges id_token_hint Übergeben und das Anforderungs-ID-Token in Abmeldeanforderungen aktiviert ist, überprüft Azure AD B2C, ob der Wert post_logout_redirect_uri einer der konfigurierten Umleitungs-URIs der Anwendung entspricht, bevor die Umleitung ausgeführt wird. Wenn keine übereinstimmende Antwort-URL für die Anwendung konfiguriert wurde, wird eine Fehlermeldung angezeigt, und der Benutzer wird nicht umgeleitet.
Um eine gesicherte Abmeldeumleitung in Ihrer Anwendung zu unterstützen, führen Sie zunächst die Schritte im Abschnitt " Kontocontroller " und " Erweiterte Szenarien unterstützen " aus. Führen Sie dann die folgenden Schritte aus:
Fügen Sie im
MyAccountController.csController eine SignOut-Aktion mithilfe des folgenden Codeausschnitts hinzu:[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); }Analysieren Sie in der Startup.cs Klasse den
id_token_hintWert, und fügen Sie den Wert an die Authentifizierungsanforderung an. Der folgende Codeausschnitt veranschaulicht, wie derid_token_hintWert an die Authentifizierungsanforderung übergeben wird: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); }Fügen Sie in der
ConfigureServicesFunktion dieSaveTokensOption für Controller hinzu, die Zugriff auf denid_tokenWert hat:services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { Configuration.Bind("AzureAdB2C", options); options.Events ??= new OpenIdConnectEvents(); options.Events.OnRedirectToIdentityProviderForSignOut += OnRedirectToIdentityProviderForSignOutFunc; options.SaveTokens = true; });Fügen Sie in der appsettings.json Konfigurationsdatei den Umleitungs-URI-Pfad zum Schlüssel hinzu
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>" }
Im obigen Beispiel ist die post_logout_redirect_uri , die an die Abmeldeanforderung übergeben wird, im Format: https://your-app.com/signout/<your-sign-up-in-policy>. Diese URL muss der Antwort-URL der Anwendungsregistrierung hinzugefügt werden.
Rollenbasierte Zugriffssteuerung
Mit der Autorisierung in ASP.NET Core können Sie überprüfen, ob Benutzer berechtigt sind, auf eine geschützte Ressource zuzugreifen, indem Sie eine der folgenden Methoden verwenden:
Fügen Sie in der ConfigureServices Methode die AddAuthorization Methode hinzu, die das Autorisierungsmodell hinzufügt. Im folgenden Beispiel wird eine Richtlinie mit dem Namen EmployeeOnlyerstellt. Die Richtlinienüberprüfung überprüft, ob ein Anspruch EmployeeNumber vorhanden ist. Der Wert des Anspruchs muss eine der folgenden IDs sein: 1, 2, 3, 4 oder 5.
services.AddAuthorization(options =>
{
options.AddPolicy("EmployeeOnly", policy =>
policy.RequireClaim("EmployeeNumber", "1", "2", "3", "4", "5"));
});
Sie steuern die Autorisierung in ASP.NET Core mithilfe von AuthorizeAttribute und den verschiedenen Parametern. In ihrer einfachsten Form beschränkt das Anwenden des Authorize Attributs auf einen Controller, eine Aktion oder eine Razor-Seite den Zugriff auf die authentifizierten Benutzer dieser Komponente.
Sie wenden Richtlinien auf Controller an, indem Sie das Authorize Attribut mit dem Richtliniennamen verwenden. Der folgende Code beschränkt den Zugriff auf die Claims Aktion auf Benutzer, die von der EmployeeOnly Richtlinie autorisiert sind:
[Authorize(Policy = "EmployeeOnly")]
public IActionResult Claims()
{
return View();
}
Nächste Schritte
- Weitere Informationen zur Autorisierung finden Sie unter Einführung in die Autorisierung in ASP.NET Core.