Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.
Prima di iniziare, utilizza il selettore Scegli un tipo di criterio nella parte superiore di questa pagina per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.
Usare la posta elettronica personalizzata in Azure Active Directory B2C (Azure AD B2C) per inviare messaggi di posta elettronica personalizzati agli utenti che si iscrive per l'uso delle applicazioni. Usando il provider di posta elettronica di terze parti Mailjet, è possibile usare il proprio modello di posta elettronica e Da: indirizzo e oggetto, nonché supportare le impostazioni di localizzazione e password monouso (OTP) personalizzate.
Questa funzionalità è disponibile solo per i criteri personalizzati. Per i passaggi di installazione, selezionare Criteri personalizzati nel selettore precedente.
La verifica personalizzata della posta elettronica richiede l'uso di un provider di posta elettronica di terze parti, ad esempio Mailjet, SendGrid o SparkPost, un'API REST personalizzata o qualsiasi provider di posta elettronica basato su HTTP (incluso il proprio). Questo articolo descrive la configurazione di una soluzione che usa Mailjet.
Creare un account Mailjet
Se non è già disponibile, iniziare configurando un account Mailjet (i clienti di Azure possono sbloccare 6.000 messaggi di posta elettronica con un limite di 200 messaggi di posta elettronica al giorno).
- Seguire le istruzioni di configurazione in Creare un account Mailjet.
- Per poter inviare messaggi di posta elettronica, registrare e convalidare l'indirizzo di posta elettronica o il dominio del mittente.
- Passare alla pagina Gestione chiavi API. Registrare la chiave API e la chiave privata da usare in un passaggio successivo. Entrambe le chiavi vengono generate automaticamente quando viene creato l'account.
Importante
Mailjet offre ai clienti la possibilità di inviare messaggi di posta elettronica da indirizzi IP condivisi e indirizzi IP dedicati. Quando si usano indirizzi IP dedicati, è necessario costruire correttamente la propria reputazione con un adeguato processo di riscaldamento dell'indirizzo IP. Per altre informazioni, vedere Come riscaldo il mio IP?.
Creare la chiave dei criteri di Azure AD B2C
Archiviare quindi la chiave API Mailjet in una chiave dei criteri di Azure AD B2C per i criteri a cui fare riferimento.
- Accedi al portale di Azure.
- Se si dispone dell'accesso a più tenant, selezionare l'icona Impostazioni nel menu superiore per passare al tenant di Azure AD B2C dal menu Directory + sottoscrizioni.
- Scegliere Tutti i servizi nell'angolo in alto a sinistra del portale di Azure e quindi cercare e selezionare Azure AD B2C.
- Nella pagina Panoramica selezionare Identity Experience Framework.
- Seleziona Chiavi dei criteri e quindi Aggiungi.
- Per Opzioni scegliere Manuale.
- Immettere un nome per la chiave della politica. Ad esempio:
MailjetApiKey
. Il prefissoB2C_1A_
viene aggiunto automaticamente al nome della chiave. - In Segreto immettere la chiave API Mailjet registrata in precedenza.
- Per Uso chiave selezionare Firma.
- Fare clic su Crea.
- Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
- Per Opzioni scegliere Manuale.
- Immettere un nome per la chiave della politica. Ad esempio:
MailjetSecretKey
. Il prefissoB2C_1A_
viene aggiunto automaticamente al nome della chiave. - In Segreto immettere la chiave privata mailjet registrata in precedenza.
- Per Uso chiave selezionare Firma.
- Fare clic su Crea.
Creare un modello mailjet
Con un account Mailjet creato e la chiave API Mailjet archiviata in una chiave dei criteri di Azure AD B2C, creare un modello transazionale dinamico Mailjet.
Nel sito Mailjet aprire la pagina modelli transazionali e selezionare Crea un nuovo modello.
Selezionare Codificandolo in HTML e quindi selezionare Codice da zero.
Immettere un nome di modello univoco, ad esempio
Verification email
, e quindi selezionare Crea.Nell'editor HTML incollare il modello HTML seguente o usare il proprio. I
{{var:otp:""}}
parametri e{{var:email:""}}
vengono sostituiti dinamicamente con il valore della password monouso e l'indirizzo di posta elettronica dell'utente.<!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>
Espandi Modifica oggetto in alto a sinistra
- Per Oggetto immettere un valore predefinito per l'oggetto. Mailjet usa questo valore quando l'API non contiene un parametro soggetto.
- In Nome digitare il nome della società.
- Per Indirizzo selezionare l'indirizzo di posta elettronica
- Seleziona Salva.
Nell'angolo in alto a destra selezionare Salva e pubblica e quindi Sì, pubblicare le modifiche
Registrare l'ID del modello che hai creato per utilizzarlo in un passaggio successivo. Questo ID viene specificato quando si aggiunge la trasformazione delle dichiarazioni.
Importante
I passaggi successivi illustrano come compilare i file XML dei criteri personalizzati. È consigliabile usare un esempio di criteri personalizzati di verifica della posta elettronica personalizzati disponibili in GitHub.
DisplayControl_TrustFrameworkExtensions.xml
usa TrustFrameworkExtensions.xml
come file di base, quindi assicurati di includere i file TrustFrameworkBase.xml
, TrustFrameworkLocalization.xml
e TrustFrameworkExtensions.xml
dal SocialAndLocalAccounts pacchetto di avvio nella tua policy.
Aggiungere tipi di claim di Azure AD B2C
Nei criteri aggiungere i tipi di attestazione seguenti all'elemento all'interno <ClaimsSchema>
<BuildingBlocks>
di .
Questi tipi di attestazioni sono necessari per generare e verificare l'indirizzo di posta elettronica usando un codice OTP (One-Time Password).
<!--
<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> -->
Aggiungere la trasformazione delle rivendicazioni
Successivamente, è necessaria una trasformazione delle attestazioni per restituire un'attestazione stringa JSON che è il corpo della richiesta inviata a Mailjet.
La struttura dell'oggetto JSON è definita dagli ID nella notazione con punti di InputParameters e TransformationClaimTypes di InputClaims. I numeri nella notazione punto implicano matrici. I valori provengono dai valori di InputClaims e dalle proprietà "Value" di InputParameters. Per altre informazioni sulle trasformazioni delle attestazioni JSON, vedere Trasformazioni delle attestazioni JSON.
Aggiungere la seguente trasformazione delle attestazioni all'elemento <ClaimsTransformations>
all'interno di <BuildingBlocks>
. Apportare gli aggiornamenti seguenti al codice XML della trasformazione delle attestazioni:
- Aggiornare il
Messages.0.TemplateID
valore InputParameter con l'ID del modello transazionale Mailjet creato in precedenza in Creare un modello Mailjet. - Aggiornare il valore dell'indirizzo
Messages.0.From.Email
. Utilizzare un indirizzo di posta elettronica valido per impedire che il messaggio di posta elettronica di verifica venga contrassegnato come posta indesiderata. - Aggiornare il valore del parametro di input della riga dell'oggetto
Messages.0.Subject
con una riga dell'oggetto appropriata per l'organizzazione.
<!--
<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> -->
Aggiungere una definizione di contenuto DataUri
Sotto le trasformazioni delle attestazioni all'interno di <BuildingBlocks>
, aggiungere il seguente ContentDefinition per fare riferimento all'URI dati versione 2.1.2:
<!--
<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> -->
Crea un DisplayControl
Un controllo di visualizzazione della verifica viene usato per verificare l'indirizzo di posta elettronica con un codice di verifica inviato all'utente.
Questo controllo di visualizzazione di esempio è configurato per:
Raccogliere il
email
tipo di richiesta di indirizzo dall'utente.Usando l'azione
SendCode
, generare un codice OTP e inviare un messaggio di posta elettronica con il codice OTP all'utente.Attendere che l'utente fornisca il tipo di attestazione
verificationCode
insieme al codice inviato all'utente.Restituisci l'oggetto
email
al profilo tecnico autocertificato che fa riferimento a questo controllo di visualizzazione.
In definizioni di contenuto, ancora all'interno di <BuildingBlocks>
, aggiungi il DisplayControl di tipo VerificationControl alla tua policy.
<!--
<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> -->
Aggiungere profili tecnici OTP
Il GenerateOtp
profilo tecnico genera un codice per l'indirizzo di posta elettronica. Il VerifyOtp
profilo tecnico verifica il codice associato all'indirizzo di posta elettronica. È possibile modificare la configurazione del formato e la scadenza della password monouso. Per altre informazioni sui profili tecnici OTP, vedere Definire un profilo tecnico di password monouso.
Annotazioni
I codici OTP generati dal protocollo Web.TPEngine.Providers.OneTimePasswordProtocolProvider sono associati alla sessione del browser. Ciò significa che un utente può generare codici OTP univoci in sessioni del browser diverse che sono valide per le sessioni corrispondenti. Al contrario, un codice OTP generato dal provider di posta elettronica predefinito è indipendente dalla sessione del browser, quindi se un utente genera un nuovo codice OTP in una nuova sessione del browser, sostituisce il codice OTP precedente.
Aggiungere i profili tecnici seguenti all'elemento <ClaimsProviders>
.
<!--
<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> -->
Aggiungere un profilo tecnico dell'API REST
Questo profilo tecnico dell'API REST genera il contenuto della posta elettronica (usando il formato Mailjet). Per altre informazioni sui profili tecnici RESTful, vedere Definire un profilo tecnico RESTful.
Come per i profili tecnici OTP, aggiungere i profili tecnici seguenti all'elemento <ClaimsProviders>
.
<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>
Creare un riferimento a DisplayControl
Nel passaggio finale aggiungere un riferimento al controllo DisplayControl creato. Sostituisci i profili tecnici esistenti LocalAccountSignUpWithLogonEmail
e LocalAccountDiscoveryUsingEmailAddress
autoasseriti configurati nei criteri di base con il frammento XML seguente. Se è stata usata una versione precedente dei criteri di Azure AD B2C, questi profili tecnici usano DisplayClaims
con un riferimento a DisplayControl
.
Per altre informazioni, vedere Profilo tecnico autocertificato e 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>
[Facoltativo] Localizzare il messaggio di posta elettronica
Per localizzare il messaggio di posta elettronica, è necessario inviare stringhe localizzate a Mailjet o al provider di posta elettronica. Ad esempio, è possibile localizzare l'oggetto, il corpo, il codice o la firma del messaggio di posta elettronica. A tale scopo, è possibile usare la trasformazione delle attestazioni GetLocalizedStringsTransformation per copiare stringhe localizzate in tipi di attestazione. La GenerateEmailRequestBody
trasformazione delle attestazioni, che genera il payload JSON, usa attestazioni di input che contengono le stringhe localizzate.
Nella tua politica, definisci le seguenti attestazioni stringhe: subject, message, codeIntro e signature.
Definire una trasformazione delle attestazioni GetLocalizedStringsTransformation per sostituire nelle attestazioni del passaggio 1 i valori di stringhe localizzate.
Modificare la
GenerateEmailRequestBody
trasformazione delle attestazioni per usare le attestazioni di input con il seguente frammento XML.Aggiornare il modello mailjet per usare i parametri dinamici al posto di tutte le stringhe che verranno localizzate da Azure AD B2C.
<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>
Aggiungere l'elemento Di localizzazione seguente.
<!-- <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> -->
Aggiungere riferimenti agli elementi LocalizedResources aggiornando l'elemento ContentDefinitions .
<!-- <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> -->
Infine, aggiungere la trasformazione delle attestazioni di input seguenti ai profili tecnici
LocalAccountSignUpWithLogonEmail
eLocalAccountDiscoveryUsingEmailAddress
.<InputClaimsTransformations> <InputClaimsTransformation ReferenceId="GetLocalizedStringsForEmail" /> </InputClaimsTransformations>
[Facoltativo] Localizzare l'interfaccia utente
L'elemento Localizzazione consente di supportare più impostazioni locali o lingue nei criteri per i percorsi utente. Il supporto per la localizzazione nei criteri consente di fornire stringhe specifiche della lingua sia per gli elementi dell'interfaccia utente del controllo di verifica sia per i messaggi di errore della password a uso singolo. Aggiungere il codice LocalizedString seguente a LocalizedResources.
<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>
Contenuti correlati
- È possibile trovare un esempio di una politica personalizzata di verifica della posta elettronica - DisplayControls su GitHub.
- Per informazioni sull'uso di un'API REST personalizzata o di qualsiasi provider di posta elettronica SMTP basato su HTTP, vedere Definire un profilo tecnico RESTful in un criterio personalizzato di Azure AD B2C.