Skip to content

Commit f97d3d1

Browse files
authored
Merge pull request #107354 from MicrosoftDocs/master
3/11 PM Publish
2 parents be53e74 + 50cb3e5 commit f97d3d1

File tree

210 files changed

+2672
-1808
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

210 files changed

+2672
-1808
lines changed

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16880,6 +16880,11 @@
1688016880
"redirect_url": "/azure/storage/blobs/data-lake-storage-upgrade",
1688116881
"redirect_document_id": false
1688216882
},
16883+
{
16884+
"source_path": "articles/storage/blobs/data-lake-storage-upgrade.md",
16885+
"redirect_url": "/azure/storage/blobs/data-lake-storage-migrate-gen1-to-gen2",
16886+
"redirect_document_id": false
16887+
},
1688316888
{
1688416889
"source_path": "articles/storage/blobs/data-lake-storage-integrate-with-azure-services.md",
1688516890
"redirect_url": "/azure/storage/blobs/data-lake-storage-supported-azure-services",

articles/active-directory-b2c/TOC.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,13 @@
182182
- name: Customize the UI
183183
href: custom-policy-ui-customization.md
184184
displayName: ux, input, cors, html, css
185+
- name: Customize language
186+
href: custom-policy-localization.md
185187
- name: Custom email
186188
href: custom-email.md
187189
displayName: verification
190+
- name: Disable email verification
191+
href: custom-policy-disable-email-verification.md
188192
- name: Enable JavaScript
189193
href: javascript-samples.md
190194
- name: Password complexity
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: Disable email verification during customer sign-up with a custom policy
3+
titleSuffix: Azure AD B2C
4+
description: Learn how to disable email verification during customer sign-up in Azure Active Directory B2C.
5+
services: active-directory-b2c
6+
author: msmimart
7+
manager: celestedg
8+
9+
ms.service: active-directory
10+
ms.workload: identity
11+
ms.topic: conceptual
12+
ms.date: 03/11/2020
13+
ms.author: mimart
14+
ms.subservice: B2C
15+
---
16+
17+
# Disable email verification during customer sign-up using a custom policy in Azure Active Directory B2C
18+
19+
[!INCLUDE [disable email verification intro](../../includes/active-directory-b2c-disable-email-verification.md)]
20+
21+
## Prerequisites
22+
23+
Complete the steps in [Get started with custom policies](custom-policy-get-started.md). You should have a working custom policy for sign-up and sign-in with social and local accounts.
24+
25+
## Add the metadata to the self-asserted technical profile
26+
27+
The **LocalAccountSignUpWithLogonEmail** technical profile is a [self-asserted](self-asserted-technical-profile.md), which is invoked during the sign-up flow. To disable the email verification, set the `EnforceEmailVerification` metadata to false. Override the LocalAccountSignUpWithLogonEmail technical profiles in the extension file. Find the `ClaimsProviders` element. Add the following claims provider to the `ClaimsProviders` element:
28+
29+
30+
```XML
31+
<ClaimsProvider>
32+
<DisplayName>Local Account</DisplayName>
33+
<TechnicalProfiles>
34+
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
35+
<Metadata>
36+
<Item Key="EnforceEmailVerification">false</Item>
37+
</Metadata>
38+
</TechnicalProfile>
39+
</TechnicalProfiles>
40+
</ClaimsProvider>
41+
```
42+
43+
## Test the custom policy
44+
45+
1. Sign in to the [Azure portal](https://portal.azure.com).
46+
2. Make sure you're using the directory that contains your Azure AD tenant by selecting the **Directory + subscription** filter in the top menu and choosing the directory that contains your Azure AD tenant.
47+
3. Choose **All services** in the top-left corner of the Azure portal, and then search for and select **App registrations**.
48+
4. Select **Identity Experience Framework**.
49+
5. Select **Upload Custom Policy**, and then upload the two policy files that you changed.
50+
2. Select the sign-up or sign-in policy that you uploaded, and click the **Run now** button.
51+
3. You should be able to sign up using an email address without the validation.
52+
53+
54+
## Next steps
55+
56+
- Learn more about the [self-asserted technical profile](self-asserted-technical-profile.md) in the IEF reference.

articles/active-directory-b2c/custom-policy-localization.md

Lines changed: 261 additions & 0 deletions
Large diffs are not rendered by default.

articles/active-directory-b2c/custom-policy-password-complexity.md

Lines changed: 81 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ manager: celestedg
99
ms.service: active-directory
1010
ms.workload: identity
1111
ms.topic: conceptual
12-
ms.date: 12/13/2018
12+
ms.date: 03/10/2020
1313
ms.author: mimart
1414
ms.subservice: B2C
1515
---
@@ -22,109 +22,131 @@ In Azure Active Directory B2C (Azure AD B2C), you can configure the complexity r
2222

2323
## Prerequisites
2424

25-
Complete the steps in [Get started with custom policies in Active Directory B2C](custom-policy-get-started.md).
25+
Complete the steps in [Get started with custom policies](custom-policy-get-started.md). You should have a working custom policy for sign-up and sign-in with local accounts.
26+
2627

2728
## Add the elements
2829

29-
1. Copy the *SignUpOrSignIn.xml* file that you downloaded with the starter pack and name it *SingUpOrSignInPasswordComplexity.xml*.
30-
2. Open the *SingUpOrSignInPasswordComplexity.xml* file and change the **PolicyId** and the **PublicPolicyUri** to a new policy name. For example, *B2C_1A_signup_signin_password_complexity*.
31-
3. Add the following **ClaimType** elements with identifiers of `newPassword` and `reenterPassword`:
30+
To configure the password complexity, override the `newPassword` and `reenterPassword` [claim types](claimsschema.md) with a reference to [predicate validations](predicates.md#predicatevalidations). The PredicateValidations element groups a set of predicates to form a user input validation that can be applied to a claim type. Open the extensions file of your policy. For example, <em>`SocialAndLocalAccounts/`**`TrustFrameworkExtensions.xml`**</em>.
31+
32+
1. Search for the [BuildingBlocks](buildingblocks.md) element. If the element doesn't exist, add it.
33+
1. Locate the [ClaimsSchema](claimsschema.md) element. If the element doesn't exist, add it.
34+
1. Add the `newPassword` and `reenterPassword` claims to the **ClaimsSchema** element.
3235

3336
```XML
34-
<ClaimsSchema>
35-
<ClaimType Id="newPassword">
36-
<InputValidationReference Id="PasswordValidation" />
37-
</ClaimType>
38-
<ClaimType Id="reenterPassword">
39-
<InputValidationReference Id="PasswordValidation" />
40-
</ClaimType>
41-
</ClaimsSchema>
37+
<ClaimType Id="newPassword">
38+
<PredicateValidationReference Id="CustomPassword" />
39+
</ClaimType>
40+
<ClaimType Id="reenterPassword">
41+
<PredicateValidationReference Id="CustomPassword" />
42+
</ClaimType>
4243
```
4344

44-
4. [Predicates](predicates.md) have method types of `IsLengthRange` or `MatchesRegex`. The `MatchesRegex` type is used to match a regular expression. The `IsLengthRange` type takes a minimum and maximum string length. Add a **Predicates** element to the **BuildingBlocks** element if it doesn't exist with the following **Predicate** elements:
45+
1. [Predicates](predicates.md) defines a basic validation to check the value of a claim type and returns true or false. The validation is done by using a specified method element, and a set of parameters relevant to the method. Add the following predicates to the **BuildingBlocks** element, immediately after the closing of the `</ClaimsSchema>` element:
4546

4647
```XML
4748
<Predicates>
48-
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be a pin.">
49+
<Predicate Id="LengthRange" Method="IsLengthRange">
50+
<UserHelpText>The password must be between 6 and 64 characters.</UserHelpText>
51+
<Parameters>
52+
<Parameter Id="Minimum">6</Parameter>
53+
<Parameter Id="Maximum">64</Parameter>
54+
</Parameters>
55+
</Predicate>
56+
<Predicate Id="Lowercase" Method="IncludesCharacters">
57+
<UserHelpText>a lowercase letter</UserHelpText>
58+
<Parameters>
59+
<Parameter Id="CharacterSet">a-z</Parameter>
60+
</Parameters>
61+
</Predicate>
62+
<Predicate Id="Uppercase" Method="IncludesCharacters">
63+
<UserHelpText>an uppercase letter</UserHelpText>
64+
<Parameters>
65+
<Parameter Id="CharacterSet">A-Z</Parameter>
66+
</Parameters>
67+
</Predicate>
68+
<Predicate Id="Number" Method="IncludesCharacters">
69+
<UserHelpText>a digit</UserHelpText>
4970
<Parameters>
50-
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
71+
<Parameter Id="CharacterSet">0-9</Parameter>
5172
</Parameters>
5273
</Predicate>
53-
<Predicate Id="Length" Method="IsLengthRange" HelpText="The password must be between 8 and 16 characters.">
74+
<Predicate Id="Symbol" Method="IncludesCharacters">
75+
<UserHelpText>a symbol</UserHelpText>
5476
<Parameters>
55-
<Parameter Id="Minimum">8</Parameter>
56-
<Parameter Id="Maximum">16</Parameter>
77+
<Parameter Id="CharacterSet">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
5778
</Parameters>
5879
</Predicate>
5980
</Predicates>
6081
```
6182

62-
5. Each **InputValidation** element is constructed by using the defined **Predicate** elements. This element allows you to perform boolean aggregations that are similar to `and` and `or`. Add an **InputValidations** element to the **BuildingBlocks** element if it doesn't exist with the following **InputValidation** element:
83+
1. Add the following predicate validations to the **BuildingBlocks** element, immediately after the closing of the `</Predicates>` element:
6384

6485
```XML
65-
<InputValidations>
66-
<InputValidation Id="PasswordValidation">
67-
<PredicateReferences Id="LengthGroup" MatchAtLeast="1">
68-
<PredicateReference Id="Length" />
69-
</PredicateReferences>
70-
<PredicateReferences Id="3of4" MatchAtLeast="3" HelpText="You must have at least 3 of the following character classes:">
71-
<PredicateReference Id="Lowercase" />
72-
<PredicateReference Id="Uppercase" />
73-
<PredicateReference Id="Number" />
74-
<PredicateReference Id="Symbol" />
75-
</PredicateReferences>
76-
</InputValidation>
77-
</InputValidations>
86+
<PredicateValidations>
87+
<PredicateValidation Id="CustomPassword">
88+
<PredicateGroups>
89+
<PredicateGroup Id="LengthGroup">
90+
<PredicateReferences MatchAtLeast="1">
91+
<PredicateReference Id="LengthRange" />
92+
</PredicateReferences>
93+
</PredicateGroup>
94+
<PredicateGroup Id="CharacterClasses">
95+
<UserHelpText>The password must have at least 3 of the following:</UserHelpText>
96+
<PredicateReferences MatchAtLeast="3">
97+
<PredicateReference Id="Lowercase" />
98+
<PredicateReference Id="Uppercase" />
99+
<PredicateReference Id="Number" />
100+
<PredicateReference Id="Symbol" />
101+
</PredicateReferences>
102+
</PredicateGroup>
103+
</PredicateGroups>
104+
</PredicateValidation>
105+
</PredicateValidations>
78106
```
79107

80-
6. Make sure that the **PolicyProfile** technical profile contains the following elements:
108+
1. The following technical profiles are [Active Directory technical profiles](active-directory-technical-profile.md), which read and write data to Azure Active Directory. Override these technical profiles in the extension file. Use `PersistedClaims` to disable the strong password policy. Find the **ClaimsProviders** element. Add the following claim providers as follows:
81109

82110
```XML
83-
<RelyingParty>
84-
<DefaultUserJourney ReferenceId="SignUpOrSignIn"/>
85-
<TechnicalProfile Id="PolicyProfile">
86-
<DisplayName>PolicyProfile</DisplayName>
87-
<Protocol Name="OpenIdConnect"/>
88-
<InputClaims>
89-
<InputClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
90-
</InputClaims>
91-
<OutputClaims>
92-
<OutputClaim ClaimTypeReferenceId="displayName"/>
93-
<OutputClaim ClaimTypeReferenceId="givenName"/>
94-
<OutputClaim ClaimTypeReferenceId="surname"/>
95-
<OutputClaim ClaimTypeReferenceId="email"/>
96-
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
97-
</OutputClaims>
98-
<SubjectNamingInfo ClaimType="sub"/>
99-
</TechnicalProfile>
100-
</RelyingParty>
111+
<ClaimsProvider>
112+
<DisplayName>Azure Active Directory</DisplayName>
113+
<TechnicalProfiles>
114+
<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
115+
<PersistedClaims>
116+
<PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
117+
</PersistedClaims>
118+
</TechnicalProfile>
119+
<TechnicalProfile Id="AAD-UserWritePasswordUsingObjectId">
120+
<PersistedClaims>
121+
<PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
122+
</PersistedClaims>
123+
</TechnicalProfile>
124+
</TechnicalProfiles>
125+
</ClaimsProvider>
101126
```
102127

103-
7. Save the policy file.
128+
1. Save the policy file.
104129

105130
## Test your policy
106131

107-
When testing your applications in Azure AD B2C, it can be useful to have the Azure AD B2C token returned to `https://jwt.ms` to be able to review the claims in it.
108-
109132
### Upload the files
110133

111134
1. Sign in to the [Azure portal](https://portal.azure.com/).
112135
2. Make sure you're using the directory that contains your Azure AD B2C tenant by selecting the **Directory + subscription** filter in the top menu and choosing the directory that contains your tenant.
113136
3. Choose **All services** in the top-left corner of the Azure portal, and then search for and select **Azure AD B2C**.
114137
4. Select **Identity Experience Framework**.
115138
5. On the Custom Policies page, click **Upload Policy**.
116-
6. Select **Overwrite the policy if it exists**, and then search for and select the *SingUpOrSignInPasswordComplexity.xml* file.
139+
6. Select **Overwrite the policy if it exists**, and then search for and select the *TrustFrameworkExtensions.xml* file.
117140
7. Click **Upload**.
118141

119142
### Run the policy
120143

121-
1. Open the policy that you changed. For example, *B2C_1A_signup_signin_password_complexity*.
144+
1. Open the sign-up or sign-in policy. For example, *B2C_1A_signup_signin*.
122145
2. For **Application**, select your application that you previously registered. To see the token, the **Reply URL** should show `https://jwt.ms`.
123146
3. Click **Run now**.
124147
4. Select **Sign up now**, enter an email address, and enter a new password. Guidance is presented on password restrictions. Finish entering the user information, and then click **Create**. You should see the contents of the token that was returned.
125148

126149
## Next steps
127150

128151
- Learn how to [Configure password change using custom policies in Azure Active Directory B2C](custom-policy-password-change.md).
129-
130-
152+
- - Learn more about the [Predicates](predicates.md) and [PredicateValidations](predicates.md#predicatevalidations) elements in the IEF reference.

0 commit comments

Comments
 (0)