Skip to content

Commit af6c365

Browse files
updates
1 parent 006d82f commit af6c365

File tree

2 files changed

+55
-36
lines changed

2 files changed

+55
-36
lines changed
335 KB
Loading

src/content/docs/cloudflare-one/identity/idp-integration/entra-id.mdx

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,24 @@ More narrow permissions may be used, however this is the set of permissions that
108108

109109
To [test](/cloudflare-one/identity/idp-integration/#test-idps-in-zero-trust) that your connection is working, select **Test**.
110110

111+
#### UPN and email
112+
113+
If your organization's UPNs do not match users' email addresses, you must add a custom claim for email. For example, if your organization's email format is `[email protected]` but the UPN is `[email protected]`, you must create an email claim if you are configuring email-based policies.
114+
115+
By default, Cloudflare will look for an `email` claim in the JSON response. If an `email` claim does not exist, it will look for the unique claim name you created to represent email (for example, `email_identifier`). Last, if neither option exists, Cloudflare will then look for the UPN claim sent in the JSON response.
116+
117+
To receive an email claim in a JSON response from Microsoft Entra, you must:
118+
119+
1. In the [Microsoft Entra admin center](https://entra.microsoft.com/), go to **Application** > **App registration** > select the relevant application > **Manage** > **Token configuration**.
120+
2. Add a claim for email.
121+
122+
![Email claim for Entra](~/assets/images/cloudflare-one/identity/azure/entra-email-claim.png)
123+
124+
The example above includes both a UPN claim and an email claim. Because an email claim was created in the Microsoft Entra configuration, Cloudflare will look for the `email` key-value pair in the JSON response.
125+
126+
3. If you gave your email claim another name than `email`, in [Zero Trust](https://one.dash.cloudflare.com), go to **Settings** > **Authentication** > **Azure AD** > **Edit**.
127+
4. Under **Optional configurations** > **Email claim**, enter the name of the claim representing your organization's email addresses.
128+
111129
## Synchronize users and groups
112130

113131
The Microsoft Entra ID integration allows you to synchronize IdP groups and automatically deprovision users using [SCIM](/cloudflare-one/identity/users/scim/).
@@ -120,7 +138,7 @@ The Microsoft Entra ID integration allows you to synchronize IdP groups and auto
120138

121139
<Render
122140
file="access/enable-scim-on-dashboard"
123-
params={{ idp: "Entra ID", and: " and ", supportgroups: "Support groups"}}
141+
params={{ idp: "Entra ID", and: " and ", supportgroups: "Support groups" }}
124142
/>
125143

126144
### 2. Configure SCIM in Entra ID
@@ -139,9 +157,9 @@ SCIM requires a separate enterprise application from the one created during [ini
139157

140158
5. Once the SCIM application is created, [assign users and groups to the application](https://learn.microsoft.com/entra/identity/enterprise-apps/assign-user-or-group-access-portal).
141159

142-
:::note
143-
Groups in this SCIM application should match the groups in your other [Cloudflare Access enterprise application](/cloudflare-one/identity/idp-integration/entra-id/#set-up-entra-id-as-an-identity-provider). Because SCIM group membership updates will overwrite any groups in a user's identity, assigning the same groups to each app ensures consistent policy evaluation.
144-
:::
160+
:::note
161+
Groups in this SCIM application should match the groups in your other [Cloudflare Access enterprise application](/cloudflare-one/identity/idp-integration/entra-id/#set-up-entra-id-as-an-identity-provider). Because SCIM group membership updates will overwrite any groups in a user's identity, assigning the same groups to each app ensures consistent policy evaluation.
162+
:::
145163

146164
6. Go to **Provisioning** and select **Get started**.
147165

@@ -159,7 +177,7 @@ SCIM requires a separate enterprise application from the one created during [ini
159177

160178
To check which users and groups were synchronized, select **View provisioning logs**.
161179

162-
<Render file="access/verify-scim-provisioning"/>
180+
<Render file="access/verify-scim-provisioning" />
163181

164182
### Provisioning attributes
165183

@@ -207,38 +225,39 @@ Access and Gateway policies for an Entra group will also apply to all [nested gr
207225
## Force user interaction during WARP reauthentication
208226

209227
You can require users to re-enter their credentials into Entra ID whenever they [re-authenticate their WARP session](/cloudflare-one/connections/connect-devices/warp/configure-warp/warp-sessions/). To configure this setting:
228+
210229
1. Make a `GET` request to the [Identity Providers endpoint](/api/resources/zero_trust/subresources/identity_providers/) and copy the response for the Entra ID identity provider.
211230
2. [Update the Entra ID identity provider](/api/resources/zero_trust/subresources/identity_providers/methods/update/) using a `PUT` request. In the request body, include all existing configurations and set the `prompt` parameter to either `login` or `select_account`. For example,
212-
```sh {17}
213-
curl --request PUT \
214-
https://api.cloudflare.com/client/v4/accounts/{account_id}/access/identity_providers/{identity_provider_id} \
215-
--header "Authorization: Bearer <API_TOKEN>" \
216-
--header "Content-Type: application/json" \
217-
--data '{
218-
"id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
219-
"type": "azureAD",
220-
"uid": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
221-
"name": "Entra ID",
222-
"version": "31e74e9b4f033e16b604552091a72295",
223-
"config": {
224-
"azure_cloud": "default",
225-
"client_id": "<CLIENT_ID>",
226-
"conditional_access_enabled": false,
227-
"directory_id": "<AZURE_DIRECTORY_ID>",
228-
"redirect_url": "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/callback",
229-
"prompt": "login",
230-
"support_groups": true
231-
},
232-
"scim_config": {
233-
"enabled": true,
234-
"user_deprovision": true,
235-
"seat_deprovision": false,
236-
"group_member_deprovision": false,
237-
"identity_update_behavior": "automatic"
238-
},
239-
"scim_base_url": "https://<TEAM_NAME>.cloudflareaccess.com/populations/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/scim/v2"
240-
}'
241-
```
231+
```sh {17}
232+
curl --request PUT \
233+
https://api.cloudflare.com/client/v4/accounts/{account_id}/access/identity_providers/{identity_provider_id} \
234+
--header "Authorization: Bearer <API_TOKEN>" \
235+
--header "Content-Type: application/json" \
236+
--data '{
237+
"id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
238+
"type": "azureAD",
239+
"uid": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
240+
"name": "Entra ID",
241+
"version": "31e74e9b4f033e16b604552091a72295",
242+
"config": {
243+
"azure_cloud": "default",
244+
"client_id": "<CLIENT_ID>",
245+
"conditional_access_enabled": false,
246+
"directory_id": "<AZURE_DIRECTORY_ID>",
247+
"redirect_url": "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/callback",
248+
"prompt": "login",
249+
"support_groups": true
250+
},
251+
"scim_config": {
252+
"enabled": true,
253+
"user_deprovision": true,
254+
"seat_deprovision": false,
255+
"group_member_deprovision": false,
256+
"identity_update_behavior": "automatic"
257+
},
258+
"scim_base_url": "https://<TEAM_NAME>.cloudflareaccess.com/populations/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/scim/v2"
259+
}'
260+
```
242261

243262
## Example API Configuration
244263

@@ -253,4 +272,4 @@ You can require users to re-enter their credentials into Entra ID whenever they
253272
"type": "azureAD",
254273
"name": "my example idp"
255274
}
256-
```
275+
```

0 commit comments

Comments
 (0)