Egyéni e-mail-ellenőrzés a Mailjettel
Mielőtt hozzákezdene, a Szabályzattípus kiválasztása választóval válassza ki a beállított szabályzat típusát. Az Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre definiált felhasználói folyamatokon vagy teljesen konfigurálható egyéni szabályzatokon keresztül. A cikkben szereplő lépések különbözőek az egyes metódusok esetében.
Egyéni e-maileket az Azure Active Directory B2C-ben (Azure AD B2C) használva testre szabott e-maileket küldhet az alkalmazások használatára regisztráló felhasználóknak. A Mailjet külső e-mail-szolgáltató használatával használhatja saját e-mail-sablonját és Feladó: cím és tárgy, valamint a honosítás és az egyéni egyszeri jelszó (OTP) beállításait.
Ez a funkció csak egyéni szabályzatokhoz érhető el. A beállítási lépésekhez válassza az egyéni szabályzatot az előző választóban.
Az egyéni e-mail-ellenőrzéshez külső e-mail-szolgáltató , például Mailjet, SendGrid vagy SparkPost, egyéni REST API vagy HTTP-alapú e-mail-szolgáltató (a sajátját is beleértve) kell használnia. Ez a cikk a Mailjetet használó megoldás beállítását ismerteti.
Mailjet-fiók létrehozása
Ha még nem rendelkezik ilyen fiókkal, először állítson be egy Mailjet-fiókot (az Azure-ügyfelek 6000 e-mail zárolását oldhatják fel 200 e-mail/nap korlát mellett).
- Kövesse a Mailjet-fiók létrehozása beállítási utasításait.
- Az e-mailek küldéséhez regisztrálja és érvényesítse feladója e-mail-címét vagy tartományát.
- Lépjen az API Kulcskezelés lapjára. Jegyezze fel az API-kulcsot és a titkos kulcsot egy későbbi lépésben való használatra. A fiók létrehozásakor mindkét kulcs automatikusan létrejön.
Fontos
A Mailjet lehetővé teszi az ügyfelek számára, hogy megosztott IP-címről és dedikált IP-címekről küldjenek e-maileket. Dedikált IP-címek használata esetén az IP-címek bemelegítésével megfelelően kell felépítenie a saját hírnevét. További információ: Hogyan bemelegíti az IP-címemet?.
Azure AD B2C szabályzatkulcs létrehozása
Ezután tárolja a Mailjet API-kulcsot egy Azure AD B2C-szabályzatkulcsban a szabályzatok hivatkozásához.
- Jelentkezzen be az Azure Portalra.
- Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.
- Válassza az Összes szolgáltatást az Azure Portal bal felső sarkában, majd keresse meg és válassza az Azure AD B2C-t.
- Az Áttekintés lapon válassza az Identity Experience Framework lehetőséget.
- Válassza a Házirendkulcsok lehetőséget, majd válassza a Hozzáadás lehetőséget.
- A Beállítások beállításnál válassza a Manuális lehetőséget.
- Adja meg a szabályzatkulcs nevét. For example,
MailjetApiKey
. A rendszer automatikusan hozzáadja az előtagotB2C_1A_
a kulcs nevéhez. - A Titkos kód mezőbe írja be a korábban rögzített Mailjet API-kulcsot .
- Kulcshasználat esetén válassza az Aláírás lehetőséget.
- Select Create.
- Válassza a Házirendkulcsok lehetőséget, majd válassza a Hozzáadás lehetőséget.
- A Beállítások beállításnál válassza a Manuális lehetőséget.
- Adja meg a szabályzatkulcs nevét. For example,
MailjetSecretKey
. A rendszer automatikusan hozzáadja az előtagotB2C_1A_
a kulcs nevéhez. - A Titkos kód mezőbe írja be a korábban rögzített Mailjet titkos kulcsát .
- Kulcshasználat esetén válassza az Aláírás lehetőséget.
- Select Create.
Mailjet-sablon létrehozása
Ha létrehoz egy Mailjet-fiókot, és egy Azure AD B2C-szabályzatkulcsban tárolt Mailjet API-kulcsot, hozzon létre egy Mailjet dinamikus tranzakciós sablont.
A Mailjet webhelyen nyissa meg a tranzakciós sablonok lapot, és válassza az Új sablon létrehozása lehetőséget.
Válassza a Html kódolásával lehetőséget, majd az alapoktól válassza a Kód lehetőséget.
Adjon meg egy egyedi sablonnevet, például
Verification email
, majd válassza a Létrehozás lehetőséget.A HTML-szerkesztőben illessze be a következő HTML-sablont, vagy használja a sajátját.
{{var:email:""}}
A{{var:otp:""}}
rendszer dinamikusan lecseréli a paramétereket az egyszeri jelszóértékre és a felhasználói e-mail-címre.<!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"> <!-- Template B O365 --> <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 {{var: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: {{var: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>
Bontsa ki a tárgy szerkesztése a bal felső sarokban
- A Tárgy mezőben adja meg a tárgy alapértelmezett értékét. A Mailjet akkor használja ezt az értéket, ha az API nem tartalmaz tárgyparamétert.
- A Név mezőbe írja be a vállalat nevét.
- A Cím mezőben válassza ki az e-mail-címét
- Válassza a Mentés parancsot.
A jobb felső sarokban válassza a Közzététel mentése & lehetőséget, majd igen, tegye közzé a módosításokat
Jegyezze fel egy későbbi lépésben használatra létrehozott sablon sablonazonosítóját . Ezt az azonosítót a jogcímátalakítás hozzáadásakor adja meg.
Fontos
A következő lépések bemutatják, hogyan hozhatja létre egyéni szabályzat XML-fájljait. Javasoljuk, hogy a GitHubon elérhető egyéni e-mail-ellenőrzési egyéni szabályzatmintát használja. DisplayControl_TrustFrameworkExtensions.xml
alapfájlként használjaTrustFrameworkExtensions.xml
, ezért ügyeljen arra, TrustFrameworkLocalization.xml
TrustFrameworkExtensions.xml
hogy a házirendbe belefoglalja TrustFrameworkBase.xml
a SocialAndLocalAccounts kezdőcsomagból származó fájlokat.
Azure AD B2C-jogcímtípusok hozzáadása
A szabályzatban adja hozzá a következő jogcímtípusokat a <ClaimsSchema>
benne lévő <BuildingBlocks>
elemhez.
Ezek a jogcímtípusok szükségesek az e-mail-cím egyszeri jelszó (OTP) kóddal történő létrehozásához és ellenőrzéséhez.
<!--
<BuildingBlocks>
<ClaimsSchema> -->
<ClaimType Id="Otp">
<DisplayName>Secondary One-time password</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="emailRequestBody">
<DisplayName>Mailjet 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> -->
A jogcímátalakítás hozzáadása
Ezután szüksége lesz egy jogcímátalakításra egy JSON-sztring jogcímének kimenetéhez, amely a Mailjetnek küldött kérés törzse lesz.
A JSON-objektum struktúráját az InputParameters és az InputClaims TransformationClaimTypes pontjegyzetében szereplő azonosítók határozzák meg. A pont jelölésében szereplő számok tömbökre utalnak. Az értékek az InputClaims értékeiből és az InputParameters "Érték" tulajdonságaiból származnak. További információ a JSON-jogcímek átalakításáról: JSON-jogcímátalakítások.
Adja hozzá a következő jogcímátalakítást a következő elemhez a <ClaimsTransformations>
következőben <BuildingBlocks>
: Végezze el a következő frissítéseket a jogcím-átalakítási XML-fájlban:
- Frissítse az
Messages.0.TemplateID
InputParameter értéket a Mailjet-sablon létrehozása korábban létrehozott Mailjet tranzakciós sablon azonosítójával. - Frissítse a
Messages.0.From.Email
cím értékét. Érvényes e-mail-címmel megakadályozhatja, hogy az ellenőrző e-mail levélszemétként legyen megjelölve. - Frissítse a tárgysor bemeneti paraméterének
Messages.0.Subject
értékét a szervezetnek megfelelő tárgysorra.
<!--
<BuildingBlocks>
<ClaimsTransformations> -->
<ClaimsTransformation Id="GenerateEmailRequestBody" TransformationMethod="GenerateJson">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="Messages.0.To.0.Email" />
<InputClaim ClaimTypeReferenceId="otp" TransformationClaimType="Messages.0.Variables.otp" />
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="Messages.0.Variables.email" />
</InputClaims>
<InputParameters>
<!-- Update the template_id value with the ID of your Mailjet template. -->
<InputParameter Id="Messages.0.TemplateID" DataType="int" Value="1234567"/>
<InputParameter Id="Messages.0.TemplateLanguage" DataType="boolean" Value="true"/>
<!-- Update with an email appropriate for your organization. -->
<InputParameter Id="Messages.0.From.Email" DataType="string" Value="my_email@mydomain.com"/>
<!-- Update with a subject line appropriate for your organization. -->
<InputParameter Id="Messages.0.Subject" DataType="string" Value="Contoso account email verification code"/>
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim"/>
</OutputClaims>
</ClaimsTransformation>
<!--
</ClaimsTransformations>
</BuildingBlocks> -->
DataUri-tartalomdefiníció hozzáadása
A jogcímátalakítások <BuildingBlocks>
alatt adja hozzá a következő ContentDefinitiont a 2.1.2-es adat URI-ra való hivatkozáshoz:
<!--
<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 létrehozása
Az ellenőrző megjelenítési vezérlővel ellenőrizheti az e-mail-címet a felhasználónak küldött ellenőrző kóddal.
Ez a példamegjelenítési vezérlő a következőre van konfigurálva:
Gyűjtse össze a
email
cím jogcímtípusát a felhasználótól.SendCode
A művelettel hozzon létre egy OTP-kódot, és küldjön egy e-mailt az OTP-kóddal a felhasználónak.Várja meg, amíg a felhasználó megadja a
verificationCode
jogcímtípust a felhasználónak küldött kóddal.Adja vissza azt az
email
önazonos műszaki profilt, amely hivatkozik erre a megjelenítési vezérlőre.
A tartalomdefiníciók alatt adja <BuildingBlocks>
hozzá a következő, VerificationControl típusú DisplayControlt a szabályzathoz.
<!--
<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> -->
OTP technikai profilok hozzáadása
A GenerateOtp
technikai profil létrehoz egy kódot az e-mail-címhez. A VerifyOtp
technikai profil ellenőrzi az e-mail-címhez társított kódot. Módosíthatja a formátum konfigurációját és az egyszeri jelszó lejáratát. Az OTP technikai profiljaival kapcsolatos további információkért lásd az egyszeri jelszó technikai profiljának definiálása című témakört.
Megjegyzés:
A Web.TPEngine.Providers.OneTimePasswordProtocolProvider protokoll által létrehozott OTP-kódok a böngésző munkamenetéhez vannak kötve. Ez azt jelenti, hogy a felhasználó egyedi OTP-kódokat hozhat létre különböző böngésző munkamenetekben, amelyek mindegyike érvényes a megfelelő munkamenetekre. Ezzel szemben a beépített e-mail-szolgáltató által létrehozott OTP-kód független a böngésző munkamenetétől, így ha egy felhasználó új OTP-kódot hoz létre egy új böngésző munkamenetben, az felülírja a korábbi OTP-kódot.
Adja hozzá a következő technikai profilokat az <ClaimsProviders>
elemhez.
<!--
<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> -->
REST API technikai profil hozzáadása
Ez a REST API technikai profil létrehozza az e-mail-tartalmat (Mailjet formátummal). A RESTful technikai profilokról további információt a RESTful műszaki profil definiálása című témakörben talál.
Az OTP technikai profiljaihoz hasonlóan adja hozzá az alábbi technikai profilokat az <ClaimsProviders>
elemhez.
<ClaimsProvider>
<DisplayName>RestfulProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="sendOtp">
<DisplayName>Use 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.mailjet.com/v3.1/send</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="ClaimUsedForRequestPayload">emailRequestBody</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_MailjetApiKey" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_MailjetSecretKey" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="GenerateEmailRequestBody" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="emailRequestBody" />
</InputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Hivatkozás készítése a DisplayControlra
Az utolsó lépésben adjon hozzá egy hivatkozást a létrehozott DisplayControlhoz. Felülbírálja az alapszabályzatban konfigurált meglévő LocalAccountSignUpWithLogonEmail
és LocalAccountDiscoveryUsingEmailAddress
önaláért technikai profilokat az alábbi XML-kódrészlettel. Ha az Azure AD B2C-szabályzat egy korábbi verzióját használta, ezek a technikai profilok DisplayClaims
a DisplayControl
.
További információkért tekintse meg az önérvényesített műszaki profilt és a DisplayControlt.
<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>
[Nem kötelező] Az e-mail honosítása
Az e-mail honosításához honosított sztringeket kell küldenie a Mailjetnek vagy az e-mail-szolgáltatónak. Honosíthatja például az e-mail tárgyát, törzsét, kódüzenetét vagy aláírását. Ehhez a GetLocalizedStringsTransformation jogcímátalakítással honosított sztringeket másolhat jogcímtípusokba. A GenerateEmailRequestBody
JSON hasznos adatait generáló jogcímátalakítás a honosított sztringeket tartalmazó bemeneti jogcímeket használja.
A szabályzatban adja meg a következő sztring jogcímeket: tárgy, üzenet, codeIntro és aláírás.
GetLocalizedStringsTransformation jogcímátalakítás definiálása honosított sztringértékek helyettesítéséhez az 1. lépésben szereplő jogcímekre.
Módosítsa a jogcímátalakítást
GenerateEmailRequestBody
úgy, hogy bemeneti jogcímeket használjon az alábbi XML-kódrészlettel.Frissítse a Mailjet-sablont, hogy dinamikus paramétereket használjon az Azure AD B2C által honosított összes sztring helyett.
<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="Messages.0.To.0.Email" /> <InputClaim ClaimTypeReferenceId="subject" TransformationClaimType="Messages.0.Subject" /> <InputClaim ClaimTypeReferenceId="otp" TransformationClaimType="Messages.0.Variables.otp" /> <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="Messages.0.Variables.email" /> <InputClaim ClaimTypeReferenceId="message" TransformationClaimType="Messages.0.Variables.otpmessage" /> <InputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="Messages.0.Variables.otpcodeIntro" /> <InputClaim ClaimTypeReferenceId="signature" TransformationClaimType="Messages.0.Variables.otpsignature" /> </InputClaims> <InputParameters> <!-- Update the template_id value with the ID of your Mailjet template. --> <InputParameter Id="Messages.0.TemplateID" DataType="int" Value="1234567"/> <InputParameter Id="Messages.0.TemplateLanguage" DataType="boolean" Value="true"/> <!-- Update with an email appropriate for your organization. --> <InputParameter Id="Messages.0.From.Email" DataType="string" Value="my_email@mydomain.com"/> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim"/> </OutputClaims> </ClaimsTransformation>
Adja hozzá a következő honosítási elemet.
<!-- <BuildingBlocks> --> <Localization Enabled="true"> <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll"> <SupportedLanguage>en</SupportedLanguage> <SupportedLanguage>es</SupportedLanguage> </SupportedLanguages> <LocalizedResources Id="api.custom-email.en"> <LocalizedStrings> <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> <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> -->
A ContentDefinitions elem frissítésével hivatkozásokat adhat a LocalizedResources elemekhez .
<!-- <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> -->
Végül adja hozzá a következő bemeneti jogcímek átalakítását a
LocalAccountSignUpWithLogonEmail
műszaki profilokhozLocalAccountDiscoveryUsingEmailAddress
.<InputClaimsTransformations> <InputClaimsTransformation ReferenceId="GetLocalizedStringsForEmail" /> </InputClaimsTransformations>
[Nem kötelező] A felhasználói felület honosítása
A Honosítás elem lehetővé teszi több területi beállítás vagy nyelv támogatását a házirendben a felhasználói folyamatokhoz. A házirendek honosítási támogatása lehetővé teszi, hogy nyelvspecifikus sztringeket biztosítson mind az Ellenőrzés megjelenítési vezérlő felhasználói felület elemeihez, mind az Egyszeri jelszó hibaüzenetekhez. Adja hozzá a következő LocalizedString parancsot a LocalizedResource-hoz.
<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="emailVerificationCode" StringId="DisplayName">Verification Code</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="emailVerificationCode" StringId="UserHelpText">Verification code received in the email.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="emailVerificationCode" 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>
Következő lépések
- Az Egyéni e-mail-ellenőrzés – DisplayControls egyéni szabályzatra a GitHubon talál példát.
- Az egyéni REST API vagy bármely HTTP-alapú SMTP-levelezési szolgáltató használatáról további információt az Azure AD B2C egyéni szabályzatában található RESTful technikai profil definiálása című témakörben talál.