Skip to content

Commit c5eded3

Browse files
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into acifix2
2 parents a200d4c + b73c416 commit c5eded3

File tree

2,548 files changed

+29555
-42640
lines changed

Some content is hidden

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

2,548 files changed

+29555
-42640
lines changed

.openpublishing.publish.config.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,11 @@
499499
"path_to_root": "azure-cosmosdb-java-v4-getting-started",
500500
"url": "https://github.com/Azure-Samples/azure-cosmos-java-getting-started",
501501
"branch": "master"
502+
},
503+
{
504+
"path_to_root": "azure-storage-snippets",
505+
"url": "https://github.com/azure-samples/AzureStorageSnippets",
506+
"branch": "master"
502507
}
503508
],
504509
"branch_target_mapping": {

.openpublishing.redirection.json

Lines changed: 708 additions & 3 deletions
Large diffs are not rendered by default.

articles/active-directory-b2c/best-practices.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Define your application and service architecture, inventory current systems, and
3939
| Create a migration plan |Planning ahead can make migration go more smoothly. Learn more about [user migration](user-migration.md).|
4040
| Usability vs. security | Your solution must strike the right balance between application usability and your organization's acceptable level of risk. |
4141
| Move on-premises dependencies to the cloud | To help ensure a resilient solution, consider moving existing application dependencies to the cloud. |
42-
| Migrate existing apps to b2clogin.com | The deprecation of login.microsoftonline.com went into effect for all Azure AD B2C tenants on 04 December 2020. [Learn more](b2clogin.md). |
42+
| Migrate existing apps to b2clogin.com | The deprecation of login.microsoftonline.com will go into effect for all Azure AD B2C tenants on 04 December 2020. [Learn more](b2clogin.md). |
4343

4444
## Implementation
4545

@@ -88,4 +88,4 @@ Stay up to date with the state of the service and find support options.
8888
|--|--|
8989
| [Service updates](https://azure.microsoft.com/updates/?product=active-directory-b2c) | Stay up to date with Azure AD B2C product updates and announcements. |
9090
| [Microsoft Support](support-options.md) | File a support request for Azure AD B2C technical issues. Billing and subscription management support is provided at no cost. |
91-
| [Azure status](https://status.azure.com/status) | View the current health status of all Azure services. |
91+
| [Azure status](https://status.azure.com/status) | View the current health status of all Azure services. |

articles/active-directory-b2c/claim-resolver-overview.md

Lines changed: 10 additions & 2 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: reference
12-
ms.date: 03/30/2020
12+
ms.date: 04/21/2020
1313
ms.author: mimart
1414
ms.subservice: B2C
1515
---
@@ -86,7 +86,14 @@ The following sections list available claim resolvers.
8686
| {Context:IPAddress} | The user IP address. | 11.111.111.11 |
8787
| {Context:KMSI} | Indicates whether [Keep me signed in](custom-policy-keep-me-signed-in.md) checkbox is selected. | true |
8888

89-
### Non-protocol parameters
89+
### Claims
90+
91+
| Claim | Description | Example |
92+
| ----- | ----------- | --------|
93+
| {Claim:claim type} | An identifier of a claim type already defined in the ClaimsSchema section in the policy file or parent policy file. For example: `{Claim:displayName}`, or `{Claim:objectId}`. | A claim type value.|
94+
95+
96+
### OAuth2 key-value parameters
9097

9198
Any parameter name included as part of an OIDC or OAuth2 request can be mapped to a claim in the user journey. For example, the request from the application might include a query string parameter with a name of `app_session`, `loyalty_number`, or any custom query string.
9299

@@ -114,6 +121,7 @@ Any parameter name included as part of an OIDC or OAuth2 request can be mapped t
114121
| {SAML:AllowCreate} | The `AllowCreate` attribute value, from the `NameIDPolicy` element of the SAML request. | True |
115122
| {SAML:ForceAuthn} | The `ForceAuthN` attribute value, from the `AuthnRequest` element of the SAML request. | True |
116123
| {SAML:ProviderName} | The `ProviderName` attribute value, from the `AuthnRequest` element of the SAML request.| Contoso.com |
124+
| {SAML:RelayState} | The `RelayState` query string parameter.|
117125

118126
## Using claim resolvers
119127

articles/active-directory-b2c/code-samples.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,9 @@ The following tables provide links to samples for applications including iOS, An
4343
| Sample | Description |
4444
|--------| ----------- |
4545
| [javascript-msal-singlepageapp](https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp) | A single page application (SPA) calling a Web API. Authentication is done with Azure AD B2C by using MSAL.js. |
46+
47+
## SAML test application
48+
49+
| Sample | Description |
50+
|--------| ----------- |
51+
| [saml-sp-tester](https://github.com/azure-ad-b2c/saml-sp-tester/tree/master/source-code) | SAML test application to test Azure AD B2C configured to act as SAML identity provider. |

articles/active-directory-b2c/json-transformations.md

Lines changed: 36 additions & 1 deletion
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: reference
12-
ms.date: 12/10/2019
12+
ms.date: 04/21/2020
1313
ms.author: mimart
1414
ms.subservice: B2C
1515
---
@@ -219,6 +219,39 @@ In the following example, the claims transformation extracts the `id` element fr
219219
- Output claims:
220220
- **extractedClaim**: 6353399
221221

222+
## GetSingleItemFromJson
223+
224+
Gets the first element from a JSON data.
225+
226+
| Item | TransformationClaimType | Data Type | Notes |
227+
| ---- | ----------------------- | --------- | ----- |
228+
| InputClaim | inputJson | string | The ClaimTypes that are used by the claims transformation to get the item from the JSON data. |
229+
| OutputClaim | key | string | The first element key in the JSON. |
230+
| OutputClaim | value | string | The first element value in the JSON. |
231+
232+
In the following example, the claims transformation extracts the first element (given name) from the JSON data.
233+
234+
```XML
235+
<ClaimsTransformation Id="GetGivenNameFromResponse" TransformationMethod="GetSingleItemFromJson">
236+
<InputClaims>
237+
<InputClaim ClaimTypeReferenceId="json" TransformationClaimType="inputJson" />
238+
</InputClaims>
239+
<OutputClaims>
240+
<OutputClaim ClaimTypeReferenceId="givenNameKey" TransformationClaimType="key" />
241+
<OutputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="value" />
242+
</OutputClaims>
243+
</ClaimsTransformation>
244+
```
245+
246+
### Example
247+
248+
- Input claims:
249+
- **inputJson**: {"givenName": "Emilty", "lastName": "Smith"}
250+
- Output claims:
251+
- **key**: givenName
252+
- **value**: Emilty
253+
254+
222255
## GetSingleValueFromJsonArray
223256

224257
Gets the first element from a JSON data array.
@@ -290,3 +323,5 @@ Output claim:
290323
}
291324
}
292325
```
326+
327+

articles/active-directory-b2c/string-transformations.md

Lines changed: 41 additions & 6 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: reference
12-
ms.date: 03/16/2020
12+
ms.date: 04/21/2020
1313
ms.author: mimart
1414
ms.subservice: B2C
1515
---
@@ -365,7 +365,7 @@ Copies localized strings into claims.
365365

366366
| Item | TransformationClaimType | Data Type | Notes |
367367
| ---- | ----------------------- | --------- | ----- |
368-
| OutputClaim | The name of the localized string | string | List of claim types that is produced after this claims transformation has been invoked. |
368+
| OutputClaim | The name of the localized string | string | List of claim types that are produced after this claims transformation has been invoked. |
369369

370370
To use the GetLocalizedStringsTransformation claims transformation:
371371

@@ -611,13 +611,17 @@ Checks that a string claim `claimToMatch` and `matchTo` input parameter are equa
611611
| inputClaim | claimToMatch | string | The claim type, which is to be compared. |
612612
| InputParameter | matchTo | string | The regular expression to match. |
613613
| InputParameter | outputClaimIfMatched | string | The value to be set if strings are equal. |
614+
| InputParameter | extractGroups | boolean | [Optional] Specifies whether the Regex match should extract groups values. Possible values: `true`, or `false` (default). |
614615
| OutputClaim | outputClaim | string | If regular expression is match, this output claim contains the value of `outputClaimIfMatched` input parameter. Or null, if no match. |
615616
| OutputClaim | regexCompareResultClaim | boolean | The regular expression match result output claim type, which is to be set as `true` or `false` based on the result of matching. |
617+
| OutputClaim| The name of the claim| string | If the extractGroups input parameter set to true, list of claim types that are produced after this claims transformation has been invoked. The name of the claimType must match the Regex group name. |
616618

617-
For example, checks whether the provided phone number is valid, based on phone number regular expression pattern.
619+
### Example 1
620+
621+
Checks whether the provided phone number is valid, based on phone number regular expression pattern.
618622

619623
```XML
620-
<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="setClaimsIfRegexMatch">
624+
<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="SetClaimsIfRegexMatch">
621625
<InputClaims>
622626
<InputClaim ClaimTypeReferenceId="phone" TransformationClaimType="claimToMatch" />
623627
</InputClaims>
@@ -632,8 +636,6 @@ For example, checks whether the provided phone number is valid, based on phone n
632636
</ClaimsTransformation>
633637
```
634638

635-
### Example
636-
637639
- Input claims:
638640
- **claimToMatch**: "64854114520"
639641
- Input parameters:
@@ -643,6 +645,39 @@ For example, checks whether the provided phone number is valid, based on phone n
643645
- **outputClaim**: "isPhone"
644646
- **regexCompareResultClaim**: true
645647

648+
### Example 2
649+
650+
Checks whether the provided email address is valid, and return the email alias.
651+
652+
```XML
653+
<ClaimsTransformation Id="GetAliasFromEmail" TransformationMethod="SetClaimsIfRegexMatch">
654+
<InputClaims>
655+
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="claimToMatch" />
656+
</InputClaims>
657+
<InputParameters>
658+
<InputParameter Id="matchTo" DataType="string" Value="(?&lt;mailAlias&gt;.*)@(.*)$" />
659+
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="isEmail" />
660+
<InputParameter Id="extractGroups" DataType="boolean" Value="true" />
661+
</InputParameters>
662+
<OutputClaims>
663+
<OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
664+
<OutputClaim ClaimTypeReferenceId="isEmailString" TransformationClaimType="regexCompareResultClaim" />
665+
<OutputClaim ClaimTypeReferenceId="mailAlias" />
666+
</OutputClaims>
667+
</ClaimsTransformation>
668+
```
669+
670+
- Input claims:
671+
- **claimToMatch**: "[email protected]"
672+
- Input parameters:
673+
- **matchTo**: `(?&lt;mailAlias&gt;.*)@(.*)$`
674+
- **outputClaimIfMatched**: "isEmail"
675+
- **extractGroups**: true
676+
- Output claims:
677+
- **outputClaim**: "isEmail"
678+
- **regexCompareResultClaim**: true
679+
- **mailAlias**: emily
680+
646681
## SetClaimsIfStringsAreEqual
647682

648683
Checks that a string claim and `matchTo` input parameter are equal, and sets the output claims with the value present in `stringMatchMsg` and `stringMatchMsgCode` input parameters, along with compare result output claim, which is to be set as `true` or `false` based on the result of comparison.

articles/active-directory-b2c/stringcollection-transformations.md

Lines changed: 35 additions & 1 deletion
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: reference
12-
ms.date: 02/27/2020
12+
ms.date: 04/21/2020
1313
ms.author: mimart
1414
ms.subservice: B2C
1515
---
@@ -155,4 +155,38 @@ Following example checks whether the `roles` stringCollection claim type contain
155155
- Output claims:
156156
- **outputClaim**: "true"
157157

158+
## StringCollectionContainsClaim
158159

160+
Checks if a StringCollection claim type contains a claim value.
161+
162+
| Item | TransformationClaimType | Data Type | Notes |
163+
| ---- | ----------------------- | --------- | ----- |
164+
| InputClaim | collection | stringCollection | The claim type which is to be searched. |
165+
| InputClaim | item|string| The claim type that contains the value to search.|
166+
|InputParameter|ignoreCase|string|Specifies whether this comparison should ignore the case of the strings being compared.|
167+
| OutputClaim | outputClaim | boolean | The ClaimType that is produced after this ClaimsTransformation has been invoked. A boolean indicator if the collection contains such a string |
168+
169+
Following example checks whether the `roles` stringCollection claim type contains the value of the `role` claim type.
170+
171+
```XML
172+
<ClaimsTransformation Id="HasRequiredRole" TransformationMethod="StringCollectionContainsClaim">
173+
<InputClaims>
174+
<InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="collection" />
175+
<InputClaim ClaimTypeReferenceId="role" TransformationClaimType="item" />
176+
</InputClaims>
177+
<InputParameters>
178+
<InputParameter Id="ignoreCase" DataType="string" Value="true" />
179+
</InputParameters>
180+
<OutputClaims>
181+
<OutputClaim ClaimTypeReferenceId="hasAccess" TransformationClaimType="outputClaim" />
182+
</OutputClaims>
183+
</ClaimsTransformation>
184+
```
185+
186+
- Input claims:
187+
- **collection**: ["reader", "author", "admin"]
188+
- **item**: "Admin"
189+
- Input parameters:
190+
- **ignoreCase**: "true"
191+
- Output claims:
192+
- **outputClaim**: "true"

articles/active-directory-domain-services/secure-remote-vm-access.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ The RD environment deployment contains a number of steps. The existing RD deploy
5757

5858
1. Sign in to VMs created for the RD environment with an account that's part of the *Azure AD DC Administrators* group, such as *contosoadmin*.
5959
1. To create and configure RDS, use the existing [Remote Desktop environment deployment guide][deploy-remote-desktop]. Distribute the RD server components across your Azure VMs as desired.
60+
* Specific to Azure AD DS - when you configure RD licensing, set it to **Per Device** mode, not **Per User** as noted in the deployment guide.
6061
1. If you want to provide access using a web browser, [set up the Remote Desktop web client for your users][rd-web-client].
6162

6263
With RD deployed into the Azure AD DS managed domain, you can manage and use the service as you would with an on-premises AD DS domain.

articles/active-directory/app-provisioning/customize-application-attributes.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Along with this property, attribute-mappings also support the following attribut
6969
- **Target attribute** – The user attribute in the target system (example: ServiceNow).
7070
- **Default value if null (optional)** - The value that will be passed to the target system if the source attribute is null. This value will only be provisioned when a user is created. The "default value when null" will not be provisioned when updating an existing user. If, for example, you want to provision all existing users in the target system with a particular Job Title (when it is null in the source system), you can use the following [expression](../app-provisioning/functions-for-customizing-application-data.md): Switch(IsPresent([jobTitle]), "DefaultValue", "True", [jobTitle]). Make sure to replace the "Default Value" with what you would like to provision when null in the source system.
7171
- **Match objects using this attribute** – Whether this mapping should be used to uniquely identify users between the source and target systems. It's typically set on the userPrincipalName or mail attribute in Azure AD, which is typically mapped to a username field in a target application.
72-
- **Matching precedence** – Multiple matching attributes can be set. When there are multiple, they're evaluated in the order defined by this field. As soon as a match is found, no further matching attributes are evaluated.
72+
- **Matching precedence** – Multiple matching attributes can be set. When there are multiple, they're evaluated in the order defined by this field. As soon as a match is found, no further matching attributes are evaluated. While you can set as many matching attributes as you would like, consider whether the attributes you are using as matching attributes are truly unique and need to be matching attributes. Generally customers have 1 or 2 matching attributes in their configuration.
7373
- **Apply this mapping**
7474
- **Always** – Apply this mapping on both user creation and update actions.
7575
- **Only during creation** - Apply this mapping only on user creation actions.
@@ -312,8 +312,10 @@ Selecting this option will effectively force a resynchronization of all users wh
312312
- Updating attribute-mappings has an impact on the performance of a synchronization cycle. An update to the attribute-mapping configuration requires all managed objects to be reevaluated.
313313
- A recommended best practice is to keep the number of consecutive changes to your attribute-mappings at a minimum.
314314
- Adding a photo attribute to be provisioned to an app is not supported today as you cannot specify the format to sync the photo. You can request the feature on [User Voice](https://feedback.azure.com/forums/169401-azure-active-directory)
315-
- The attribute IsSoftDeleted is often part of the default mappings for an application. IsSoftdeleted can be true in one of four scenarios (the user is out of scope due to being unassigned from the application, the user is out of scope due to not meeting a scoping filter, the user has been soft deleted in Azure AD, or the property AccountEnabled is set to false on the user).
316-
- The Azure AD provisioning service does not support provisioning null values
315+
- The attribute IsSoftDeleted is often part of the default mappings for an application. IsSoftdeleted can be true in one of four scenarios (the user is out of scope due to being unassigned from the application, the user is out of scope due to not meeting a scoping filter, the user has been soft deleted in Azure AD, or the property AccountEnabled is set to false on the user). It is not recommended to remove the IsSoftDeleted attribute from your attribute mappings.
316+
- The Azure AD provisioning service does not support provisioning null values.
317+
- They primary key, typically "ID", should not be included as a target attribute in your attribute mappings.
318+
- The role attribute typically needs to be mapped using an expression, rather than a direct mapping. See section above for more details on role mapping.
317319

318320
## Next steps
319321

0 commit comments

Comments
 (0)