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.
Bevor Sie beginnen, verwenden Sie die Auswahl eines Richtlinientyps oben auf dieser Seite, um den Typ der Richtlinie auszuwählen, die Sie einrichten. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.
Verwenden Sie benutzerdefinierte E-Mails in Azure Active Directory B2C (Azure AD B2C), um angepasste E-Mails an Benutzer zu senden, die sich für die Verwendung Ihrer Anwendungen registrieren. Mithilfe des E-Mail-Anbieters SendGrid eines Drittanbieters können Sie Ihre eigene E-Mail-Vorlage und "Von: Adresse und Betreff" verwenden sowie Lokalisierung und benutzerdefinierte OTP-Einstellungen (Einmaliges Kennwort) unterstützen.
Dieses Feature ist nur für benutzerdefinierte Richtlinien verfügbar. Wählen Sie für Setupschritte im vorherigen Selektor die Option "Benutzerdefinierte Richtlinie " aus.
Für eine benutzerdefinierte E-Mail-Überprüfung ist die Verwendung eines Drittanbieters wie SendGrid, Mailjet oder SparkPost, einer benutzerdefinierten REST-API oder eines HTTP-basierten E-Mail-Anbieters (einschließlich Eigener) erforderlich. In diesem Artikel wird das Einrichten einer Lösung beschrieben, die SendGrid verwendet.
Erstellen eines SendGrid-Kontos
Wenn Sie noch kein Konto haben, richten Sie zunächst ein SendGrid-Konto ein. Anweisungen zum Einrichten finden Sie im Abschnitt Erstellen eines SendGrid-Kontos unter Senden von E-Mails in Azure mit SendGrid.
Stellen Sie sicher, dass Sie den Abschnitt abschließen, in dem Sie einen SendGrid-API-Schlüssel erstellen. Notieren Sie den API-Schlüssel für die Verwendung in einem späteren Schritt.
Von Bedeutung
SendGrid bietet Kunden die Möglichkeit, E-Mails von freigegebenen IP- und dedizierten IP-Adressen zu senden. Bei Verwendung dedizierter IP-Adressen müssen die IP-Adressen zunächst „aufgewärmt“ werden, um Ihre eigene Reputation aufzubauen. Weitere Informationen finden Sie unter "Aufwärmen einer IP-Adresse".
Erstellen eines Azure AD B2C-Richtlinienschlüssels
Speichern Sie als Nächstes den SendGrid-API-Schlüssel in einem Azure AD B2C-Richtlinienschlüssel, auf den Sie verweisen möchten.
- Melden Sie sich beim Azure-Portal an.
- Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
- Wählen Sie in der oberen linken Ecke des Azure-Portals "Alle Dienste" aus, und suchen Sie dann nach Azure AD B2C, und wählen Sie sie aus.
- Wählen Sie auf der Seite "Übersicht" die Option "Identity Experience Framework" aus.
- Wählen Sie "Richtlinienschlüssel" und dann "Hinzufügen" aus.
- Wählen Sie unter "Optionen" die Option "Manuell" aus.
- Geben Sie einen Namen für den Richtlinienschlüssel ein. Beispiel:
SendGridSecret. Das PräfixB2C_1A_wird automatisch dem Namen Des Schlüssels hinzugefügt. - Geben Sie im geheimen Schlüssel den SendGrid-API-Schlüssel ein, den Sie zuvor aufgezeichnet haben.
- Wählen Sie für die Schlüsselverwendung"Signatur" aus.
- Wählen Sie "Erstellen" aus.
SendGrid-Vorlage erstellen
Erstellen Sie ein SendGrid-Konto und speichern Sie den SendGrid-API-Schlüssel in einem Azure AD B2C-Richtlinienschlüssel, um eine SendGrid dynamische Transaktionsvorlage zu erstellen.
Öffnen Sie auf der SendGrid-Website die Seite " Transaktionsvorlagen ", und wählen Sie " Dynamische Vorlage erstellen" aus.
Geben Sie einen eindeutigen Vorlagennamen ein und wählen Sie dann
Verification emailaus.Um mit der Bearbeitung der neuen Vorlage zu beginnen, wählen Sie die Vorlage aus, die heißt,
Verification emailund wählen Sie dann " Version hinzufügen" aus.Wählen Sie "Leere Vorlage" und dann den Code-Editor aus.
Fügen Sie im HTML-Editor die folgende HTML-Vorlage ein, oder verwenden Sie ihre eigene. Die Parameter
{{otp}}und{{email}}werden dynamisch durch den Einmalkennwortwert und die E-Mail-Adresse des Benutzers ersetzt.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"><head id="Head1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Contoso demo account email verification code</title><meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <style> table td {border-collapse:collapse;margin:0;padding:0;} </style> </head> <body dir="ltr" lang="en"> <table width="100%" cellpadding="0" cellspacing="0" border="0" dir="ltr" lang="en"> <tr> <td valign="top" width="50%"></td> <td valign="top"> <!-- Email Header --> <table width="640" cellpadding="0" cellspacing="0" border="0" dir="ltr" lang="en" style="border-left:1px solid #e3e3e3;border-right: 1px solid #e3e3e3;"> <tr style="background-color: #0072C6;"> <td width="1" style="background:#0072C6; border-top:1px solid #e3e3e3;"></td> <td width="24" style="border-top:1px solid #e3e3e3;border-bottom:1px solid #e3e3e3;"> </td> <td width="310" valign="middle" style="border-top:1px solid #e3e3e3; border-bottom:1px solid #e3e3e3;padding:12px 0;"> <h1 style="line-height:20pt;font-family:Segoe UI Light; font-size:18pt; color:#ffffff; font-weight:normal;"> <span id="HeaderPlaceholder_UserVerificationEmailHeader"><font color="#FFFFFF">Verify your email address</font></span> </h1> </td> <td width="24" style="border-top: 1px solid #e3e3e3;border-bottom: 1px solid #e3e3e3;"> </td> </tr> </table> <!-- Email Content --> <table width="640" cellpadding="0" cellspacing="0" border="0" dir="ltr" lang="en"> <tr> <td width="1" style="background:#e3e3e3;"></td> <td width="24"> </td> <td id="PageBody" width="640" valign="top" colspan="2" style="border-bottom:1px solid #e3e3e3;padding:10px 0 20px;border-bottom-style:hidden;"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="630" style="font-size:10pt; line-height:13pt; color:#000;"> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="" dir="ltr" lang="en"> <tr> <td> <div style="font-family:'Segoe UI', Tahoma, sans-serif; font-size:14px; color:#333;"> <span id="BodyPlaceholder_UserVerificationEmailBodySentence1">Thanks for verifying your {{email}} account!</span> </div> <br> <div style="font-family:'Segoe UI', Tahoma, sans-serif; font-size:14px; color:#333; font-weight: bold"> <span id="BodyPlaceholder_UserVerificationEmailBodySentence2">Your code is: {{otp}}</span> </div> <br> <br> <div style="font-family:'Segoe UI', Tahoma, sans-serif; font-size:14px; color:#333;"> Sincerely, </div> <div style="font-family:'Segoe UI', Tahoma, sans-serif; font-size:14px; font-style:italic; color:#333;"> Contoso </div> </td> </tr> </table> </td> </tr> </table> </td> <td width="1"> </td> <td width="1"></td> <td width="1"> </td> <td width="1" valign="top"></td> <td width="29"> </td> <td width="1" style="background:#e3e3e3;"></td> </tr> <tr> <td width="1" style="background:#e3e3e3; border-bottom:1px solid #e3e3e3;"></td> <td width="24" style="border-bottom:1px solid #e3e3e3;"> </td> <td id="PageFooterContainer" width="585" valign="top" colspan="6" style="border-bottom:1px solid #e3e3e3;padding:0px;"> </td> <td width="29" style="border-bottom:1px solid #e3e3e3;"> </td> <td width="1" style="background:#e3e3e3; border-bottom:1px solid #e3e3e3;"></td> </tr> </table> </td> <td valign="top" width="50%"></td> </tr> </table> </body> </html>Erweitern Sie das Menü "Einstellungen ", und geben Sie für den Versionsnamen eine Vorlagenversion ein.
Geben Sie für "Betreff" die Zeichenfolge
{{subject}}ein.Wählen Sie Speichern aus.
Kehren Sie zur Seite "Transaktionsvorlagen " zurück, indem Sie den Pfeil "Zurück" auswählen.
Notieren Sie die ID der Vorlage, die Sie für die Verwendung in einem späteren Schritt erstellt haben. Beispiel:
d-989077fbba9746e89f3f6411f596fb96. Sie geben diese ID an, wenn Sie die Anspruchstransformation hinzufügen.
Von Bedeutung
Die nächsten Schritte zeigen, wie Sie Ihre benutzerdefinierten RICHTLINIEN-XML-Dateien erstellen. Wir empfehlen Ihnen, eine Muster für benutzerdefinierte E-Mail-Überprüfungsrichtlinie zu verwenden, die auf GitHub verfügbar ist.
DisplayControl_TrustFrameworkExtensions.xml verwendet TrustFrameworkExtensions.xml als Ausgangsdatei, stellen Sie daher sicher, dass Sie die Dateien TrustFrameworkBase.xml, TrustFrameworkLocalization.xml und TrustFrameworkExtensions.xml aus dem Startpaket 'SocialAndLocalAccounts' in Ihre Richtlinie einschließen.
Hinzufügen von Azure AD B2C-Anspruchstypen
Fügen Sie in Ihrer Richtlinie im <ClaimsSchema>-Element in <BuildingBlocks> die folgenden Anspruchstypen hinzu.
Diese Anspruchstypen sind erforderlich, um die E-Mail-Adresse mithilfe eines OTP-Codes (Einmaliges Kennwort) zu generieren und zu überprüfen.
<!--
<BuildingBlocks>
<ClaimsSchema> -->
<ClaimType Id="Otp">
<DisplayName>Secondary One-time password</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="emailRequestBody">
<DisplayName>SendGrid request body</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="VerificationCode">
<DisplayName>Secondary Verification Code</DisplayName>
<DataType>string</DataType>
<UserHelpText>Enter your email verification code</UserHelpText>
<UserInputType>TextBox</UserInputType>
</ClaimType>
<!--
</ClaimsSchema>
</BuildingBlocks> -->
Hinzufügen der Anspruchstransformation
Als Nächstes benötigen Sie eine Forderungstransformation, um einen JSON-Zeichenfolgenanspruch auszugeben, der den Text der an SendGrid gesendeten Anforderung bildet.
Die Struktur des JSON-Objekts wird durch die IDs in der Punktnotation der InputParameters und der TransformationClaimTypes der InputClaims definiert. Zahlen in Punktnotation implizieren Arrays. Die Werte stammen aus den Werten der InputClaims und den Value-Eigenschaften der InputParameters. Weitere Informationen zu JSON-Anspruchstransformationen finden Sie unter JSON-Anspruchstransformationen.
Fügen Sie im Element <ClaimsTransformations> in <BuildingBlocks> die folgenden Anspruchstransformation hinzu. Nehmen Sie die folgenden Aktualisierungen an der Forderungstransformations-XML vor:
- Aktualisieren Sie den
template_idInputParameter-Wert mit der ID der SendGrid-Transaktionsvorlage, die Sie zuvor in der Create SendGrid-Vorlage erstellt haben. - Aktualisieren Sie den Adresswert
from.email. Verwenden Sie eine gültige E-Mail-Adresse, um zu verhindern, dass die Überprüfungs-E-Mails als Spam gekennzeichnet werden.Hinweis
Diese E-Mail-Adresse muss in "SendGrid" unter "Absenderauthentifizierung" mit Domänenauthentifizierung oder "Authentifizierung einzelner Absender" überprüft werden.
- Aktualisieren Sie den Wert des Eingabeparameters der
personalizations.0.dynamic_template_data.subjectBetreffzeile mit einer betreffzeile, die für Ihre Organisation geeignet ist.
<!--
<BuildingBlocks>
<ClaimsTransformations> -->
<ClaimsTransformation Id="GenerateEmailRequestBody" TransformationMethod="GenerateJson">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.to.0.email" />
<InputClaim ClaimTypeReferenceId="otp" TransformationClaimType="personalizations.0.dynamic_template_data.otp" />
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.dynamic_template_data.email" />
</InputClaims>
<InputParameters>
<!-- Update the template_id value with the ID of your SendGrid template. -->
<InputParameter Id="template_id" DataType="string" Value="d-989077fbba9746e89f3f6411f596fb96"/>
<InputParameter Id="from.email" DataType="string" Value="my_email@mydomain.com"/>
<!-- Update with a subject line appropriate for your organization. -->
<InputParameter Id="personalizations.0.dynamic_template_data.subject" DataType="string" Value="Contoso account email verification code"/>
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim"/>
</OutputClaims>
</ClaimsTransformation>
<!--
</ClaimsTransformations>
</BuildingBlocks> -->
Hinzufügen einer DataUri-Inhaltsdefinition
Fügen Sie unterhalb der Anspruchstransformationen innerhalb von <BuildingBlocks> die folgende ContentDefinition hinzu, um auf den Daten-URI der Version 2.1.2 zu verweisen:
<!--
<BuildingBlocks> -->
<ContentDefinitions>
<ContentDefinition Id="api.localaccountsignup">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.2</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.localaccountpasswordreset">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.2</DataUri>
</ContentDefinition>
</ContentDefinitions>
<!--
</BuildingBlocks> -->
DisplayControl erstellen
Ein Überprüfungsanzeigesteuerelement wird verwendet, um die E-Mail-Adresse mit einem Überprüfungscode zu überprüfen, den der Benutzer erhält.
Dieses Beispiel-Anzeigesteuerelement ist für Folgendes konfiguriert:
Erfassen des
email-Adressanspruchstyps vom BenutzerGenerieren Sie mithilfe der
SendCodeAktion einen OTP-Code, und senden Sie eine E-Mail mit dem OTP-Code an den Benutzer.
Warten Sie, bis der Benutzer den
verificationCode-Anspruchstyp mithilfe des dem Benutzer zugesandten Codes bereitstellt.Zurückgeben von
emailan das selbstbestätigte technische Profil, das einen Verweis auf das Anzeigesteuerelement enthält
Fügen Sie der Richtlinie unter „content definitions“ in <BuildingBlocks> das folgende DisplayControl-Element vom Typ VerificationControl hinzu.
<!--
<BuildingBlocks> -->
<DisplayControls>
<DisplayControl Id="emailVerificationControl" UserInterfaceControlType="VerificationControl">
<DisplayClaims>
<DisplayClaim ClaimTypeReferenceId="email" Required="true" />
<DisplayClaim ClaimTypeReferenceId="verificationCode" ControlClaimType="VerificationCode" Required="true" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
<Actions>
<Action Id="SendCode">
<ValidationClaimsExchange>
<ValidationClaimsExchangeTechnicalProfile TechnicalProfileReferenceId="GenerateOtp" />
<ValidationClaimsExchangeTechnicalProfile TechnicalProfileReferenceId="SendOtp" />
</ValidationClaimsExchange>
</Action>
<Action Id="VerifyCode">
<ValidationClaimsExchange>
<ValidationClaimsExchangeTechnicalProfile TechnicalProfileReferenceId="VerifyOtp" />
</ValidationClaimsExchange>
</Action>
</Actions>
</DisplayControl>
</DisplayControls>
<!--
</BuildingBlocks> -->
Hinzufügen technischer Profile für Einmalkennwörter
Das GenerateOtp technische Profil generiert einen Code für die E-Mail-Adresse. Das VerifyOtp technische Profil überprüft den Code, der der E-Mail-Adresse zugeordnet ist. Sie können die Konfiguration des Formats und das Ablaufen des einmaligen Kennworts ändern. Weitere Informationen zu technischen Profilen für Einmalpasswörter finden Sie unter Einmalpasswort-Technisches Profil definieren.
Hinweis
OTP-Codes, die vom Web.TPEngine.Providers.OneTimePasswordProtocolProvider-Protokoll generiert werden, sind an die Browsersitzung gebunden. Dies bedeutet, dass ein Benutzer eindeutige OTP-Codes in verschiedenen Browsersitzungen generieren kann, die jeweils für ihre entsprechenden Sitzungen gültig sind. Im Gegensatz dazu ist ein OTP-Code, der vom integrierten E-Mail-Anbieter generiert wird, von der Browsersitzung unabhängig. Wenn ein Benutzer also einen neuen OTP-Code in einer neuen Browsersitzung generiert, ersetzt er den vorherigen OTP-Code.
Fügen Sie dem <ClaimsProviders> Element die folgenden technischen Profile hinzu.
<!--
<ClaimsProviders> -->
<ClaimsProvider>
<DisplayName>One time password technical profiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="GenerateOtp">
<DisplayName>Generate one time password</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">GenerateCode</Item>
<Item Key="CodeExpirationInSeconds">600</Item>
<Item Key="CodeLength">6</Item>
<Item Key="CharacterSet">0-9</Item>
<Item Key="NumRetryAttempts">5</Item>
<Item Key="NumCodeGenerationAttempts">10</Item>
<Item Key="ReuseSameCode">false</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="identifier" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="otp" PartnerClaimType="otpGenerated" />
</OutputClaims>
</TechnicalProfile>
<TechnicalProfile Id="VerifyOtp">
<DisplayName>Verify one time password</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">VerifyCode</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="identifier" />
<InputClaim ClaimTypeReferenceId="verificationCode" PartnerClaimType="otpToVerify" />
</InputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<!--
</ClaimsProviders> -->
Hinzufügen eines technischen REST-API-Profils
Dieses technische REST-API-Profil generiert den E-Mail-Inhalt (mit dem SendGrid-Format). Weitere Informationen zu RESTful technischen Profilen finden Sie unter Define a RESTful technical profile.
Wie bei den technischen OTP-Profilen fügen Sie dem <ClaimsProviders> Element die folgenden technischen Profile hinzu.
<ClaimsProvider>
<DisplayName>RestfulProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="SendOtp">
<DisplayName>Use SendGrid's email API to send the code to the user</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="ClaimUsedForRequestPayload">emailRequestBody</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_SendGridSecret" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="GenerateEmailRequestBody" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="emailRequestBody" />
</InputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Erstellen eines Verweises auf das DisplayControl-Element
Fügen Sie im letzten Schritt einen Verweis auf das von Ihnen erstellte DisplayControl hinzu. Überschreiben Sie Ihre bestehenden selbstbestätigten technischen Profile LocalAccountSignUpWithLogonEmail und LocalAccountDiscoveryUsingEmailAddress, die in der Basisrichtlinie konfiguriert sind, mit dem folgenden XML-Codeschnipsel. Wenn Sie eine frühere Version der Azure AD B2C-Richtlinie verwendet haben, verwenden diese technischen Profile DisplayClaims mit einem Verweis auf die DisplayControl.
Weitere Informationen finden Sie unter Self-asserted technical profile und DisplayControl.
<ClaimsProvider>
<DisplayName>Local Account</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
<DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
</DisplayClaims>
</TechnicalProfile>
<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
</DisplayClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
[Optional] Lokalisieren Ihrer E-Mails
Um die E-Mail zu lokalisieren, müssen Sie lokalisierte Zeichenfolgen an SendGrid oder Ihren E-Mail-Anbieter senden. Sie können z. B. den E-Mail-Betreff, den Textkörper, die Codenachricht oder die Signatur der E-Mail lokalisieren. Dazu können Sie die GetLocalizedStringsTransformation-Anspruchstransformation verwenden, um lokalisierte Zeichenfolgen in Anspruchstypen zu kopieren. Die Anspruchstransformation GenerateEmailRequestBody , die die JSON-Nutzlast generiert, verwendet Eingabeansprüche, die die lokalisierten Zeichenfolgen enthalten.
Definieren Sie in Ihrer Richtlinie die folgenden Zeichenfolgenansprüche: Betreff, Nachricht, CodeIntro und Signatur.
Definieren Sie eine GetLocalizedStringsTransformation-Anspruchstransformation , um lokalisierte Zeichenfolgenwerte in die Ansprüche aus Schritt 1 zu ersetzen.
Ändern Sie die Anspruchstransformation
GenerateEmailRequestBody, um Eingabeansprüche mit dem folgenden XML-Codeausschnitt zu verwenden.Aktualisieren Sie Ihre SendGrid-Vorlage so, dass dynamische Parameter anstelle aller Zeichenfolgen verwendet werden, die Azure AD B2C lokalisiert.
<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" /> <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" /> <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" /> <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="GenerateEmailRequestBody" TransformationMethod="GenerateJson"> <InputClaims> <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.to.0.email" /> <InputClaim ClaimTypeReferenceId="subject" TransformationClaimType="personalizations.0.dynamic_template_data.subject" /> <InputClaim ClaimTypeReferenceId="otp" TransformationClaimType="personalizations.0.dynamic_template_data.otp" /> <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.dynamic_template_data.email" /> <InputClaim ClaimTypeReferenceId="message" TransformationClaimType="personalizations.0.dynamic_template_data.message" /> <InputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="personalizations.0.dynamic_template_data.codeIntro" /> <InputClaim ClaimTypeReferenceId="signature" TransformationClaimType="personalizations.0.dynamic_template_data.signature" /> </InputClaims> <InputParameters> <InputParameter Id="template_id" DataType="string" Value="d-1234567890" /> <InputParameter Id="from.email" DataType="string" Value="my_email@mydomain.com" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>Fügen Sie das folgende Lokalisierungselement hinzu.
<!-- <BuildingBlocks> --> <Localization Enabled="true"> <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll"> <SupportedLanguage>en</SupportedLanguage> <SupportedLanguage>es</SupportedLanguage> </SupportedLanguages> <LocalizedResources Id="api.custom-email.en"> <LocalizedStrings> <!--Email template parameters--> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for validating the account</LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString> </LocalizedStrings> </LocalizedResources> <LocalizedResources Id="api.custom-email.es"> <LocalizedStrings> <!--Email template parameters--> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Código de verificación del correo electrónico de la cuenta de Contoso</LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Gracias por comprobar la cuenta de </LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Su código es</LocalizedString> <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sinceramente</LocalizedString> </LocalizedStrings> </LocalizedResources> </Localization> <!-- </BuildingBlocks> -->Fügen Sie Verweise auf die LocalizedResources-Elemente hinzu, indem Sie das ContentDefinitions-Element aktualisieren.
<!-- <BuildingBlocks> --> <ContentDefinitions> <ContentDefinition Id="api.localaccountsignup"> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.2</DataUri> <LocalizedResourcesReferences MergeBehavior="Prepend"> <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.custom-email.en" /> <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.custom-email.es" /> </LocalizedResourcesReferences> </ContentDefinition> <ContentDefinition Id="api.localaccountpasswordreset"> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.2</DataUri> <LocalizedResourcesReferences MergeBehavior="Prepend"> <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.custom-email.en" /> <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.custom-email.es" /> </LocalizedResourcesReferences> </ContentDefinition> </ContentDefinitions> <!-- </BuildingBlocks> -->Fügen Sie schließlich die folgende Eingabeanspruchstransformation zu den
LocalAccountSignUpWithLogonEmailundLocalAccountDiscoveryUsingEmailAddresstechnischen Profilen hinzu.<InputClaimsTransformations> <InputClaimsTransformation ReferenceId="GetLocalizedStringsForEmail" /> </InputClaimsTransformations>
[Optional] Lokalisieren der Benutzeroberfläche
Mithilfe des Elements „Lokalisierung“ können Sie mehrere Gebietsschemas oder Sprachen in der Richtlinie für die User Journeys unterstützen. Die Lokalisierungsunterstützung in Richtlinien ermöglicht es Ihnen, sprachspezifische Zeichenfolgen sowohl für Elemente der Überprüfungsanzeigesteuerungs-Benutzeroberfläche als auch einmalige Kennwortfehlermeldungen bereitzustellen. Fügen Sie die folgende LocalizedString zu Ihren LocalizedResources hinzu.
<LocalizedResources Id="api.custom-email.en">
<LocalizedStrings>
...
<!-- Display control UI elements-->
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="intro_msg">Verification is necessary. Please click Send button.</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="success_send_code_msg">Verification code has been sent to your inbox. Please copy it to the input box below.</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="failure_send_code_msg">We are having trouble verifying your email address. Please enter a valid email address and try again.</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="success_verify_code_msg">E-mail address verified. You can now continue.</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="failure_verify_code_msg">We are having trouble verifying your email address. Please try again.</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_send_code">Send verification code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_verify_code">Verify code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_send_new_code">Send new code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_change_claims">Change e-mail</LocalizedString>
<!-- Claims-->
<LocalizedString ElementType="ClaimType" ElementId="VerificationCode" StringId="DisplayName">Verification Code</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="VerificationCode" StringId="UserHelpText">Verification code received in the email.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="VerificationCode" StringId="AdminHelpText">Verification code received in the email.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">Email</LocalizedString>
<!-- Email validation error messages-->
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfSessionDoesNotExist">You have exceeded the maximum time allowed.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMaxRetryAttempted">You have exceeded the number of retries allowed.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMaxNumberOfCodeGenerated">You have exceeded the number of code generation attempts allowed.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidCode">You have entered the wrong code.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfSessionConflict">Cannot verify the code, please try again later.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfVerificationFailedRetryAllowed">The verification has failed, please try again.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
Verwandte Inhalte
- Hier finden Sie ein Beispiel für die benutzerdefinierte E-Mail-Überprüfung – Benutzerdefinierte DisplayControls-Richtlinie auf GitHub.
- Erfahren Sie, wie Sie eine benutzerdefinierte REST-API oder einen beliebigen HTTP-basierten SMTP-E-Mail-Anbieter verwenden, siehe Definieren eines RESTful-technischen Profils in einer benutzerdefinierten Azure AD B2C-Richtlinie.