Skip to content

Commit ec69790

Browse files
authored
Merge pull request #189246 from MicrosoftDocs/main
Merge main to live, 4 AM
2 parents 95fa63a + 5909335 commit ec69790

File tree

56 files changed

+1690
-1295
lines changed

Some content is hidden

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

56 files changed

+1690
-1295
lines changed

articles/active-directory/app-provisioning/functions-for-customizing-application-data.md

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -908,85 +908,85 @@ Replaces values within a string in a case-sensitive manner. The function behaves
908908
#### Replace characters using a regular expression
909909
**Example 1:** Using **oldValue** and **replacementValue** to replace the entire source string with another string.
910910

911-
Lets say your HR system has an attribute `BusinessTitle`. As part of recent job title changes, your company wants to update anyone with the business title Product Developer to Software Engineer.
911+
Let's say your HR system has an attribute `BusinessTitle`. As part of recent job title changes, your company wants to update anyone with the business title "Product Developer" to "Software Engineer".
912912
Then in this case, you can use the following expression in your attribute mapping.
913913

914914
`Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )`
915915

916916
* **source**: `[BusinessTitle]`
917-
* **oldValue**: Product Developer
918-
* **replacementValue**: Software Engineer
917+
* **oldValue**: "Product Developer"
918+
* **replacementValue**: "Software Engineer"
919919
* **Expression output**: Software Engineer
920920

921921
**Example 2:** Using **oldValue** and **template** to insert the source string into another *templatized* string.
922922

923923
The parameter **oldValue** is a misnomer in this scenario. It is actually the value that will get replaced.
924-
Lets say you want to always generate login id in the format `<username>@contoso.com`. There is a source attribute called **UserID** and you want that value to be used for the `<username>` portion of the login id.
924+
Let's say you want to always generate login id in the format `<username>@contoso.com`. There is a source attribute called **UserID** and you want that value to be used for the `<username>` portion of the login id.
925925
Then in this case, you can use the following expression in your attribute mapping.
926926

927927
`Replace([UserID],"<username>", , , , , "<username>@contoso.com")`
928928

929-
* **source:** `[UserID]` = jsmith
930-
* **oldValue:** `<username>`
931-
* **template:** `<username>@contoso.com`
932-
* **Expression output:** [email protected]
929+
* **source:** `[UserID]` = "jsmith"
930+
* **oldValue:** "`<username>`"
931+
* **template:** "`<username>@contoso.com`"
932+
* **Expression output:** "[email protected]"
933933

934934
**Example 3:** Using **regexPattern** and **replacementValue** to extract a portion of the source string and replace it with an empty string or a custom value built using regex patterns or regex group names.
935935

936-
Lets say you have a source attribute `telephoneNumber` that has components `country code` and `phone number` separated by a space character. E.g. `+91 9998887777`
936+
Let's say you have a source attribute `telephoneNumber` that has components `country code` and `phone number` separated by a space character. E.g. `+91 9998887777`
937937
Then in this case, you can use the following expression in your attribute mapping to extract the 10 digit phone number.
938938

939939
`Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )`
940940

941-
* **source:** `[telephoneNumber]` = +91 9998887777
942-
* **regexPattern:** `\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`
943-
* **replacementValue:** `${phoneNumber}`
941+
* **source:** `[telephoneNumber]` = "+91 9998887777"
942+
* **regexPattern:** "`\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`"
943+
* **replacementValue:** "`${phoneNumber}`"
944944
* **Expression output:** 9998887777
945945

946946
You can also use this pattern to remove characters and collapse a string.
947947
For example, the expression below removes parenthesis, dashes and space characters in the mobile number string and returns only digits.
948948

949949
`Replace([mobile], , "[()\\s-]+", , "", , )`
950950

951-
* **source:** `[mobile] = +1 (999) 888-7777`
952-
* **regexPattern:** `[()\\s-]+`
953-
* **replacementValue:** “” (empty string)
951+
* **source:** `[mobile] = "+1 (999) 888-7777"`
952+
* **regexPattern:** "`[()\\s-]+`"
953+
* **replacementValue:** "" (empty string)
954954
* **Expression output:** 19998887777
955955

956956
**Example 4:** Using **regexPattern**, **regexGroupName** and **replacementValue** to extract a portion of the source string and replace it with another literal value or empty string.
957957

958-
Lets say your source system has an attribute AddressLineData with two components street number and street name. As part of a recent move, lets say the street number of the address changed and you want to update only the street number portion of the address line.
959-
Then in this case, you can use the following expression in your attribute mapping to extract the 10 digit phone number.
958+
Let's say your source system has an attribute AddressLineData with two components street number and street name. As part of a recent move, let's say the street number of the address changed and you want to update only the street number portion of the address line.
959+
Then in this case, you can use the following expression in your attribute mapping to extract the street number.
960960

961961
`Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )`
962962

963-
* **source:** `[AddressLineData]` = 545 Tremont Street
964-
* **regexPattern:** `(?<streetNumber>^\\d*)`
965-
* **regexGroupName:** streetNumber
966-
* **replacementValue:** 888
963+
* **source:** `[AddressLineData]` = "545 Tremont Street"
964+
* **regexPattern:** "`(?<streetNumber>^\\d*)`"
965+
* **regexGroupName:** "streetNumber"
966+
* **replacementValue:** "888"
967967
* **Expression output:** 888 Tremont Street
968968

969969
Here is another example where the domain suffix from a UPN is replaced with an empty string to generate login id without domain suffix.
970970

971971
`Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )`
972972

973-
* **source:** `[userPrincipalName]` = [email protected]
974-
* **regexPattern:** `(?<Suffix>@(.)*)`
975-
* **regexGroupName:** Suffix
976-
* **replacementValue:** “” (empty string)
973+
* **source:** `[userPrincipalName]` = "[email protected]"
974+
* **regexPattern:** "`(?<Suffix>@(.)*)`"
975+
* **regexGroupName:** "Suffix"
976+
* **replacementValue:** "" (empty string)
977977
* **Expression output:** jsmith
978978

979-
**Example 5:** Using **regexPattern**, **regexGroupName** and **replacementAttributeName** to handle scenarios when the source attribute is empty or doesnt have a value.
979+
**Example 5:** Using **regexPattern**, **regexGroupName** and **replacementAttributeName** to handle scenarios when the source attribute is empty or doesn't have a value.
980980

981-
Lets say your source system has an attribute telephoneNumber. If telephoneNumber is empty, you want to extract the 10 digits of the mobile number attribute.
981+
Let's say your source system has an attribute telephoneNumber. If telephoneNumber is empty, you want to extract the 10 digits of the mobile number attribute.
982982
Then in this case, you can use the following expression in your attribute mapping.
983983

984984
`Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )`
985985

986-
* **source:** `[telephoneNumber]` = “” (empty string)
987-
* **regexPattern:** `\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`
988-
* **regexGroupName:** phoneNumber
989-
* **replacementAttributeName:** `[mobile]` = +91 8887779999
986+
* **source:** `[telephoneNumber]` = "" (empty string)
987+
* **regexPattern:** "`\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`"
988+
* **regexGroupName:** "phoneNumber"
989+
* **replacementAttributeName:** `[mobile]` = "+91 8887779999"
990990
* **Expression output:** 8887779999
991991

992992
**Example 6:** You need to find characters that match a regular expression value and remove them.
@@ -1106,6 +1106,10 @@ Switch(source, defaultValue, key1, value1, key2, value2, …)
11061106
**Description:**
11071107
When **source** value matches a **key**, returns **value** for that **key**. If **source** value doesn't match any keys, returns **defaultValue**. **Key** and **value** parameters must always come in pairs. The function always expects an even number of parameters. The function should not be used for referential attributes such as manager.
11081108

1109+
> [!NOTE]
1110+
> Switch function performs a case-sensitive string comparison of the **source** and **key** values. If you'd like to perform a case-insensitive comparison, normalize the **source** string before comparison using a nested ToLower function and ensure that all **key** strings use lowercase.
1111+
> Example: `Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")`. In this example, the **source** attribute `statusFlag` may have values ("True" / "true" / "TRUE"). However, the Switch function will always convert it to lowercase string "true" before comparison with **key** parameters.
1112+
11091113
**Parameters:**
11101114

11111115
| Name | Required/ Repeating | Type | Notes |

articles/active-directory/manage-apps/f5-big-ip-headers-easy-button.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,12 @@ To learn about all of the benefits, see the article on [F5 BIG-IP and Azure AD i
3131

3232
This scenario looks at the classic legacy application using HTTP authorization headers to control access to protected content.
3333

34-
Being legacy, the application lacks any form of modern protocols to support a direct integration with Azure AD. Modernizing the app is also costly, requires careful planning, and introduces risk of potential downtime.
34+
Being legacy, the application lacks modern protocols to support a direct integration with Azure AD. The application can be modernized, but it is costly, requires careful planning, and introduces risk of potential downtime. Instead, an F5 BIG-IP Application Delivery Controller (ADC) is used to bridge the gap between the legacy application and the modern ID control plane, through protocol transitioning.
3535

36-
One option would be to consider [Azure AD Application Proxy](../app-proxy/application-proxy.md), to gate remote access to the application.
36+
Having a BIG-IP in front of the application enables us to overlay the service with Azure AD pre-authentication and headers-based SSO, significantly improving the overall security posture of the application.
3737

38-
Another approach is to use an F5 BIG-IP Application Delivery Controller (ADC), as it too provides the protocol transitioning required to bridge legacy applications to the modern ID control plane.
39-
40-
Having a BIG-IP in front of the application enables us to overlay the service with Azure AD pre-authentication and header-based SSO, significantly improving the overall security posture of the application for both remote and local access.
38+
> [!NOTE]
39+
> Organizations can also gain remote access to this type of application with [Azure AD Application Proxy](../app-proxy/application-proxy.md)
4140
4241
## Scenario architecture
4342

@@ -144,7 +143,7 @@ You can now access the Easy Button functionality that provides quick configurati
144143

145144
![Screenshot for Configure Easy Button- Install the template](./media/f5-big-ip-easy-button-ldap/easy-button-template.png)
146145

147-
5. Review the list of configuration steps and select Next
146+
5. Review the list of configuration steps and select **Next**
148147

149148
![Screenshot for Configure Easy Button - List configuration steps](./media/f5-big-ip-easy-button-ldap/config-steps.png)
150149

@@ -164,7 +163,7 @@ Consider the **Azure Service Account Details** be the BIG-IP client application
164163

165164
2. Enable **Single Sign-On (SSO) & HTTP Headers**
166165

167-
3. Enter the **Tenant Id**, **Client ID**, and **Client Secret** you noted down during tenant registration
166+
3. Enter the **Tenant Id**, **Client ID**, and **Client Secret** you noted when registering the Easy Button client in your tenant.
168167

169168
4. Confirm the BIG-IP can successfully connect to your tenant, and then select **Next**
170169

@@ -380,4 +379,4 @@ If you don’t see a BIG-IP error page, then the issue is probably more related
380379

381380
2. The **View Variables** link in this location may also help root cause SSO issues, particularly if the BIG-IP APM fails to obtain the right attributes
382381

383-
For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). There’s also a great BIG-IP reference table to help diagnose LDAP-related issues in this F5 knowledge article on [LDAP Query](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-authentication-single-sign-on-11-5-0/5.html).
382+
For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). There’s also a great BIG-IP reference table to help diagnose LDAP-related issues in this F5 knowledge article on [LDAP Query](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-authentication-single-sign-on-11-5-0/5.html).

articles/active-directory/manage-apps/f5-big-ip-kerberos-easy-button.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ To learn about all of the benefits, see the article on [F5 BIG-IP and Azure AD i
3131

3232
For this scenario, we have an application using **Kerberos authentication**, also known as **Integrated Windows Authentication (IWA)**, to gate access to protected content.
3333

34-
Being legacy, the application lacks modern protocols to support a direct integration with Azure AD. Modernizing the app would be ideal, but is costly, requires careful planning, and introduces risk of potential downtime.
34+
Being legacy, the application lacks modern protocols to support a direct integration with Azure AD. The application can be modernized, but it is costly, requires careful planning, and introduces risk of potential downtime. Instead, an F5 BIG-IP Application Delivery Controller (ADC) is used to bridge the gap between the legacy application and the modern ID control plane, through protocol transitioning.
3535

36-
One option would be to consider using [Azure AD Application Proxy](../app-proxy/application-proxy.md), as it provides the protocol transitioning required to bridge the legacy application to the modern identity control plane. Or for our scenario, we'll achieve this using F5's BIG-IP Application Delivery Controller (ADC).
36+
Having a BIG-IP in front of the application enables us to overlay the service with Azure AD pre-authentication and headers-based SSO, significantly improving the overall security posture of the application.
3737

38-
Having a BIG-IP in front of the application enables us to overlay the service with Azure AD pre-authentication and header-based SSO, significantly improving the overall security posture of the application for remote and local access.
38+
> [!NOTE]
39+
> Organizations can also gain remote access to this type of application with [Azure AD Application Proxy](../app-proxy/application-proxy.md)
3940
4041
## Scenario architecture
4142

@@ -176,11 +177,11 @@ Consider the **Azure Service Account Details** be the BIG-IP client application
176177

177178
2. Enable **Single Sign-On (SSO) & HTTP Headers**
178179

179-
3. Enter the **Tenant Id, Client ID,** and **Client Secret** you noted down during tenant registration
180+
3. Enter the **Tenant Id, Client ID,** and **Client Secret** you noted when registering the Easy Button client in your tenant.
180181

181182
![Screenshot for Configuration General and Service Account properties](./media/f5-big-ip-kerberos-easy-button/azure-configuration-properties.png)
182183

183-
Before you select **Next**, confirm that BIG-IP can successfully connect to your tenant.
184+
Before you select **Next**, confirm the BIG-IP can successfully connect to your tenant.
184185

185186
### Service Provider
186187

@@ -479,4 +480,4 @@ If you don’t see a BIG-IP error page, then the issue is probably more related
479480

480481
2. Select the link for your active session. The **View Variables** link in this location may also help determine root cause KCD issues, particularly if the BIG-IP APM fails to obtain the right user and domain identifiers.
481482

482-
See [BIG-IP APM variable assign examples]( https://devcentral.f5.com/s/articles/apm-variable-assign-examples-1107) and [F5 BIG-IP session variables reference]( https://techdocs.f5.com/en-us/bigip-15-0-0/big-ip-access-policy-manager-visual-policy-editor/session-variables.html) for more info.
483+
See [BIG-IP APM variable assign examples]( https://devcentral.f5.com/s/articles/apm-variable-assign-examples-1107) and [F5 BIG-IP session variables reference]( https://techdocs.f5.com/en-us/bigip-15-0-0/big-ip-access-policy-manager-visual-policy-editor/session-variables.html) for more info.

articles/active-directory/manage-apps/f5-big-ip-ldap-header-easybutton.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ Consider the **Azure Service Account Details** be the BIG-IP client application
182182

183183
2. Enable **Single Sign-On (SSO) & HTTP Headers**
184184

185-
3. Enter the **Tenant Id**, **Client ID**, and **Client Secret** you noted down during tenant registration
185+
3. Enter the **Tenant Id**, **Client ID**, and **Client Secret** you noted when registering the Easy Button client in your tenant.
186186

187187
5. Confirm the BIG-IP can successfully connect to your tenant, and then select **Next**
188188

@@ -432,4 +432,4 @@ If you don’t see a BIG-IP error page, then the issue is probably more related
432432

433433
```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=partners,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)" ```
434434

435-
For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). There’s also a great BIG-IP reference table to help diagnose LDAP-related issues in this F5 knowledge article on [LDAP Query](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-authentication-single-sign-on-11-5-0/5.html).
435+
For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). There’s also a great BIG-IP reference table to help diagnose LDAP-related issues in this F5 knowledge article on [LDAP Query](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-authentication-single-sign-on-11-5-0/5.html).

articles/active-directory/manage-apps/f5-big-ip-oracle-enterprise-business-suite-easy-button.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ Some of these are global settings so can be re-used for publishing more applicat
160160

161161
2. Enable **Single Sign-On (SSO) & HTTP Headers**
162162

163-
3. Enter the **Tenant Id, Client ID**, and **Client Secret** you noted down from your registered application
163+
3. Enter the **Tenant Id, Client ID**, and **Client Secret** you noted when registering the Easy Button client in your tenant.
164164

165-
4. Before you select **Next**, confirm that BIG-IP can successfully connect to your tenant.
165+
4. Before you select **Next**, confirm the BIG-IP can successfully connect to your tenant.
166166

167167
![ Screenshot for Configuration General and Service Account properties](./media/f5-big-ip-oracle/configuration-general-and-service-account-properties.png)
168168

articles/active-directory/manage-apps/f5-big-ip-oracle-jde-easy-button.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ Some of these are global settings so can be re-used for publishing more applicat
156156

157157
3. Enter the **Tenant Id, Client ID**, and **Client Secret** you noted down from your registered application
158158

159-
4. Before you select **Next**, confirm that BIG-IP can successfully connect to your tenant.
159+
4. Before you select **Next**, confirm the BIG-IP can successfully connect to your tenant.
160160

161161
![Screenshot for Configuration General and Service Account properties](./media/f5-big-ip-easy-button-oracle-jde/configuration-general-and-service-account-properties.png)
162162

0 commit comments

Comments
 (0)