Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.
Başlamadan önce, ayarlamakta olduğunuz ilke türünü seçmek için bu sayfanın üst kısmındaki İlke türü seç seçicisini kullanın. Azure Active Directory B2C, kullanıcıların uygulamalarınızla nasıl etkileşim kurduğunu tanımlamak için iki yöntem sunar: önceden tanımlanmış kullanıcı akışları veya tam olarak yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.
Uygulamalarınızı kullanmak üzere kaydolan kullanıcılara özelleştirilmiş e-posta göndermek için Azure Active Directory B2C'de (Azure AD B2C) özel e-posta kullanın. Üçüncü taraf e-posta sağlayıcısı Mailjet'i kullanarak kendi e-posta şablonunuzu ve Kimden: adres ve konu bilgilerini kullanabilir, ayrıca yerelleştirmeyi ve özel tek seferlik parola (OTP) ayarlarını destekleyebilirsiniz.
Bu özellik yalnızca özel ilkeler için kullanılabilir. Kurulum adımları için, önceki seçicide Özel ilke'yi seçin.
Özel e-posta doğrulaması için Mailjet, SendGrid veya SparkPost gibi bir üçüncü taraf e-posta sağlayıcısının, özel bir REST API'nin veya herhangi bir HTTP tabanlı e-posta sağlayıcısının (sizinki dahil) kullanılması gerekir. Bu makalede Mailjet kullanan bir çözüm ayarlama açıklanmaktadır.
Mailjet hesabı oluşturma
Henüz bir e-postanız yoksa, bir Mailjet hesabı ayarlayarak işe başlayın (Azure müşterileri 200 e-posta/gün sınırıyla 6.000 e-postanın kilidini açabilir).
- Mailjet Hesabı Oluşturma başlığındaki kurulum yönergelerini izleyin.
- E-posta gönderebilmek için Gönderen e-posta adresinizi veya etki alanınızı kaydedin ve doğrulayın .
- API Anahtar Yönetimi sayfasına gidin. Daha sonraki bir adımda kullanmak üzere API Anahtarını ve Gizli Anahtarı kaydedin. Hesabınız oluşturulduğunda her iki anahtar da otomatik olarak oluşturulur.
Önemli
Mailjet, müşterilere paylaşılan IP ve ayrılmış IP adreslerinden e-posta gönderme olanağı sunar. Ayrılmış IP adreslerini kullanırken, kendi itibarınızı düzgün bir şekilde oluşturmak için IP adresi ısındırma yapmanız gerekir. Daha fazla bilgi için bkz. IP'mi nasıl ısıtacağım?
Azure AD B2C ilke anahtarı oluşturma
Ardından, ilkelerinizin başvurması için Mailjet API anahtarını bir Azure AD B2C ilke anahtarında depolayın.
- Azure portalınaoturum açın.
- Birden çok kiracıya erişiminiz varsa Azure AD B2C kiracınıza geçiş yapmak için Dizinler + abonelikler menüsünde, üstteki menüden Ayarlar simgesini seçin.
- Azure portalının sol üst köşesindeki Tüm hizmetler'i seçin ve ardından Azure AD B2C'yi arayıp seçin.
- Genel Bakış sayfasında Kimlik Deneyimi Çerçevesi'ni seçin.
- İlke Anahtarları'nı ve ardından Ekle'yi seçin.
- Seçenekler için Manuel seçin.
- İlke anahtarı için bir Ad girin. Örneğin,
MailjetApiKey. Ön ekB2C_1A_, anahtarınızın adına otomatik olarak eklenir. - Gizli Dizi alanına, daha önce kaydettiğiniz Mailjet API Anahtarınızı girin.
- Anahtar kullanımı için İmza seçin.
- Oluştur'i seçin.
- İlke Anahtarları'nı seçin, sonra Ekle'yi seçin.
- Seçenekler için Manuel seçin.
- İlke anahtarı için bir Ad girin. Örneğin,
MailjetSecretKey. Ön ekB2C_1A_, anahtarınızın adına otomatik olarak eklenir. - Gizli alanına, daha önce kaydettiğiniz Mailjet Gizli Anahtarını girin.
- Anahtar kullanımı için İmza seçin.
- Oluştur'i seçin.
Mailjet şablonu oluşturma
Mailjet hesabı oluşturulduğunda ve Mailjet API anahtarı bir Azure AD B2C ilke anahtarında depolandığında bir Mailjet dinamik işlem şablonu oluşturun.
Mailjet sitesinde işlem şablonları sayfasını açın ve Yeni şablon oluştur'u seçin.
HTML ile kodlayarak seçeneğini seçin, ardından Sıfırdan kodlama seçeneğini seçin.
gibi
Verification emailbenzersiz bir şablon adı girin ve Oluştur'u seçin.HTML düzenleyicisinde aşağıdaki HTML şablonunu yapıştırın veya kendi şablonunuzu kullanın.
{{var:otp:""}}ve{{var:email:""}}parametreleri dinamik olarak tek seferlik parola değeri ve kullanıcı e-posta adresiyle değiştirilir.<!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>Sol üst kısımdaki Konuyu düzenle'yi genişletin
- Konu için, konu için varsayılan bir değer girin. API bir konu parametresi içermediğinde Mailjet bu değeri kullanır.
- Ad alanına şirketinizin adını yazın.
- Adres için e-posta adresinizi seçin
- Kaydetseçeneğini seçin.
Sağ üst kısımdan Kaydet ve Yayımla'yı ve ardından Evet, değişiklikleri yayımla'yı seçin
Daha sonraki bir adımda kullanmak üzere oluşturduğunuz şablonun Şablon Kimliğini kaydedin. Talep dönüştürmesini eklerken bu kimliği belirtirsiniz.
Önemli
Sonraki adımlarda özel ilke XML dosyalarınızı nasıl oluşturabileceğiniz gösterilmektedir. GitHub'da kullanılabilen örnek bir Özel e-posta doğrulama özel ilkesi kullanmanızı öneririz.
DisplayControl_TrustFrameworkExtensions.xmltemel dosyası olarak kullanırTrustFrameworkExtensions.xml, bu nedenle TrustFrameworkBase.xmlTrustFrameworkLocalization.xml ve TrustFrameworkExtensions.xml dosyalarını eklediğinizden emin olun.
Azure AD B2C talep türleri ekleme
Politikanızda, <ClaimsSchema> öğesinin içindeki <BuildingBlocks> alanına aşağıdaki talep türlerini ekleyin.
Bu talep türleri, tek seferlik parola (OTP) kodu kullanarak e-posta adresini oluşturmak ve doğrulamak için gereklidir.
<!--
<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> -->
İddia dönüşümünü ekle
Sonraki adımda, Mailjet'e gönderilen isteğin gövdesi olan bir JSON dize talebi çıktısı almak için bir talep dönüşümüne ihtiyacınız var.
JSON nesnesinin yapısı, InputParameters'ın noktalı gösterimi ve InputClaims'in TransformationClaimTypes kimlikleri tarafından tanımlanır. Nokta gösterimindeki sayılar dizileri ifade eder. Değerler InputClaims'in değerlerinden ve InputParameters'ın "Value" özelliklerinden gelir. JSON talep dönüştürmeleri hakkında daha fazla bilgi için bkz. JSON talep dönüştürmeleri.
Aşağıdaki talep dönüştürmesini <ClaimsTransformations> içindeki <BuildingBlocks> öğesine ekleyin. Talep dönüştürme XML'sinde aşağıdaki güncelleştirmeleri yapın:
-
Messages.0.TemplateIDInputParameter değerini, Daha önce Mailjet şablonu oluşturma bölümünde oluşturduğunuz Mailjet işlem şablonunun kimliğiyle güncelleştirin. - Adres değerini güncelleştirin
Messages.0.From.Email. Doğrulama e-postasının istenmeyen posta olarak işaretlenmesini önlemeye yardımcı olması için geçerli bir e-posta adresi kullanın. - Konu satırı giriş parametresinin
Messages.0.Subjectdeğerini kuruluşunuza uygun bir konu satırıyla güncelleştirin.
<!--
<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 içerik tanımı ekleme
<BuildingBlocks> içindeki talep dönüştürmelerinin altına, sürüm 2.1.2 Veri URI'sine başvurmak için aşağıdaki ContentDefinition öğesini ekleyin.
<!--
<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 oluşturma
Kullanıcıya gönderilen bir doğrulama koduyla e-posta adresini doğrulamak için doğrulama görüntüleme denetimi kullanılır.
Bu örnek görüntüleme denetimi şu şekilde yapılandırılmıştır:
Kullanıcıdan
emailadres talep türünü toplayın.eylemini
SendCodekullanarak bir OTP kodu oluşturun ve kullanıcıya OTP kodunu içeren bir e-posta gönderin.
Kullanıcıya gönderilen kodla birlikte
verificationCodetalep türünü kullanıcının sağlamasını bekleyin.emailöğesini, bu görüntüleme denetimine referansı olan kendi kendine onaylanan teknik profile geri döndür.
İçerik tanımlarının altında, halen <BuildingBlocks> içinde, DisplayControl türünde aşağıdaki VerificationControl öğesini ilkenize ekleyin.
<!--
<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 teknik profilleri ekleme
Teknik GenerateOtp profil, e-posta adresi için bir kod oluşturur. Teknik VerifyOtp profil, e-posta adresiyle ilişkili kodu doğrular. Biçimin yapılandırmasını ve tek seferlik parolanın süre sonunu değiştirebilirsiniz. OTP teknik profilleri hakkında daha fazla bilgi için bkz. Tek seferlik parola teknik profili tanımlama.
Uyarı
Web.TPEngine.Providers.OneTimePasswordProtocolProvider protokolü tarafından oluşturulan OTP kodları tarayıcı oturumuna bağlıdır. Bu, kullanıcının her birinin ilgili oturumları için geçerli olan farklı tarayıcı oturumlarında benzersiz OTP kodları oluşturabileceği anlamına gelir. Buna karşılık, yerleşik e-posta sağlayıcısı tarafından oluşturulan bir OTP kodu tarayıcı oturumundan bağımsızdır, bu nedenle kullanıcı yeni bir tarayıcı oturumunda yeni bir OTP kodu oluşturursa, önceki OTP kodunun yerini alır.
öğesine aşağıdaki teknik profilleri <ClaimsProviders> ekleyin.
<!--
<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 teknik profili ekleme
Bu REST API teknik profili, e-posta içeriğini oluşturur (Mailjet biçimini kullanarak). RESTful teknik profilleri hakkında daha fazla bilgi için bkz. RESTful teknik profili tanımlama.
OTP teknik profillerinde olduğu gibi, aşağıdaki teknik profilleri <ClaimsProviders> öğesine ekleyin.
<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>
DisplayControl'e başvuru yapma
Son adımda, oluşturduğunuz DisplayControl'e bir referans ekleyin. Temel ilkede yapılandırılan mevcut LocalAccountSignUpWithLogonEmail ve LocalAccountDiscoveryUsingEmailAddress kendi kendine onaylanan teknik profillerinizi aşağıdaki XML kod parçacığıyla geçersiz kılın. Önceki bir Azure AD B2C ilkesi sürümünü kullandıysanız, bu teknik profiller <%c0%> kullanır ve <%c1%> öğesine atıfta bulunur.
Daha fazla bilgi için bkz. Kendi kendine doğrulanan teknik profil ve 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>
[İsteğe bağlı] E-postanızı yerelleştirme
E-postayı yerelleştirmek için Mailjet'e veya e-posta sağlayıcınıza yerelleştirilmiş dizeler göndermeniz gerekir. Örneğin, e-posta konusunu, gövdesini, kod iletinizi veya e-postanın imzasını yerelleştirebilirsiniz. Bunu yapmak için GetLocalizedStringsTransformation talep dönüştürmesini kullanarak yerelleştirilmiş dizeleri talep türlerine kopyalayabilirsiniz.
GenerateEmailRequestBody JSON yükünü oluşturan talep dönüştürmesi, yerelleştirilmiş dizeleri içeren giriş taleplerini kullanır.
İlkenizde şu dize taleplerini tanımlayın: konu, ileti, kodIntro ve imza.
Yerelleştirilmiş dize değerlerini 1. adımdaki taleplerde yerine koymak için GetLocalizedStringsTransformation talep dönüştürmesi tanımlayın.
GenerateEmailRequestBodyAşağıdaki XML kod parçacığıyla giriş taleplerini kullanmak için talep dönüştürmesini değiştirin.Mailjet şablonunuzu, Azure AD B2C tarafından yerelleştirilecek tüm dizeler yerine dinamik parametreleri kullanacak şekilde güncelleştirin.
<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>Aşağıdaki Localization öğesini ekleyin.
<!-- <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> -->ContentDefinitions öğesini güncelleştirerek LocalizedResources öğelerine başvurular ekleyin.
<!-- <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> -->Son olarak ve
LocalAccountSignUpWithLogonEmailteknik profillerine aşağıdaki giriş talepleri dönüştürmesiniLocalAccountDiscoveryUsingEmailAddressekleyin.<InputClaimsTransformations> <InputClaimsTransformation ReferenceId="GetLocalizedStringsForEmail" /> </InputClaimsTransformations>
[İsteğe bağlı] Kullanıcı arabirimini yerelleştirme
Localization öğesi, kullanıcı yolculukları için ilkede birden çok yerel ayarı veya dili desteklemenizi sağlar. İlkelerdeki yerelleştirme desteği, hem Doğrulama görüntüleme denetimi kullanıcı arabirimi öğeleri hem de Bir kerelik parola hata iletileri için dile özgü dizeler sağlamanıza olanak tanır. LocalizedResources'unuza aşağıdaki LocalizedString öğesini ekleyin.
<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>
İlgili içerik
- GitHub'da Özel e-posta doğrulaması - DisplayControls özel ilkesi örneğini bulabilirsiniz.
- Özel REST API veya HERHANGI bir HTTP tabanlı SMTP e-posta sağlayıcısı kullanma hakkında bilgi için bkz. Azure AD B2C özel ilkesinde RESTful teknik profili tanımlama.