You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
:::image type="content" source="media/self-service-sign-up-user-flow/enable-self-service-sign-up.png" alt-text="Screenshot of the enable guest self-service sign up toggle.":::
56
+
56
57
5. Select **Save**.
57
58
## Create the user flow for self-service sign-up
58
59
@@ -63,17 +64,17 @@ Next, you'll create the user flow for self-service sign-up and add it to an appl
63
64
3. In the left menu, select **External Identities**.
64
65
4. Select **User flows**, and then select **New user flow**.
65
66
66
-

67
+
:::image type="content" source="media/self-service-sign-up-user-flow/new-user-flow.png" alt-text="Screenshot of the new user flow button.":::
67
68
68
69
5. Select the user flow type (for example, **Sign up and sign in**), and then select the version (**Recommended** or **Preview**).
69
-
6. On the **Create** page, enter a **Name** for the user flow. Note that the name is automatically prefixed with **B2X_1_**.
70
+
6. On the **Create** page, enter a **Name** for the user flow. The name is automatically prefixed with **B2X_1_**.
70
71
7. In the **Identity providers** list, select one or more identity providers that your external users can use to log into your application. **Azure Active Directory Sign up** is selected by default. (See [Before you begin](#before-you-begin) earlier in this article to learn how to add identity providers.)
71
-
8. Under **User attributes**, choose the attributes you want to collect from the user. For additional attributes, select **Show more**. For example, select **Show more**, and then choose attributes and claims for **Country/Region**, **Display Name**, and **Postal Code**. Select **OK**.
72
+
8. Under **User attributes**, choose the attributes you want to collect from the user. For more attributes, select **Show more**. For example, select **Show more**, and then choose attributes and claims for **Country/Region**, **Display Name**, and **Postal Code**. Select **OK**.
72
73
73
-

74
+
:::image type="content" source="media/self-service-sign-up-user-flow/create-user-flow.png" alt-text="Screenshot of the new user flow creation page. ":::
74
75
75
-
> [!NOTE]
76
-
> You can only collect attributes when a user signs up for the first time. After a user signs up, they will no longer be prompted to collect attribute information, even if you change the user flow.
76
+
> [!NOTE]
77
+
> You can only collect attributes when a user signs up for the first time. After a user signs up, they will no longer be prompted to collect attribute information, even if you change the user flow.
77
78
78
79
8. Select **Create**.
79
80
9. The new user flow appears in the **User flows** list. If necessary, refresh the page.
@@ -86,7 +87,7 @@ You can choose order in which the attributes are displayed on the sign-up page.
3. Select the self-service sign-up user flow from the list.
88
89
4. Under **Customize**, select **Page layouts**.
89
-
5. The attributes you chose to collect are listed. To change the order of display, select an attribute, and then select **Move up**, **Move down**, **Move to the top**, or **Move to the bottom**.
90
+
5. The attributes you chose to collect are listed. To change the order of display, select an attribute, and then select **Move up**, **Move down**, **Move to top**, or **Move to bottom**.
90
91
6. Select **Save**.
91
92
92
93
## Add applications to the self-service sign-up user flow
@@ -101,7 +102,7 @@ Now you'll associate applications with the user flow to enable sign-up for those
101
102
6. In the left menu, under **Use**, select **Applications**.
102
103
7. Select **Add application**.
103
104
104
-

105
+
:::image type="content" source="media/self-service-sign-up-user-flow/assign-app-to-user-flow.png" alt-text="Screenshot of adding an application to the user flow.":::
105
106
106
107
8. Select the application from the list. Or use the search box to find the application, and then select it.
107
108
9. Click **Select**.
@@ -112,4 +113,3 @@ Now you'll associate applications with the user flow to enable sign-up for those
112
113
-[Add Facebook to your list of social identity providers](facebook-federation.md)
113
114
-[Use API connectors to customize and extend your user flows via web APIs](api-connectors-overview.md)
114
115
-[Add custom approval workflow to your user flow](self-service-sign-up-add-approvals.md)
115
-
-[Learn more about initiating an OAuth 2.0 authorization code flow](../develop/v2-oauth2-auth-code-flow.md#request-an-authorization-code)
Copy file name to clipboardExpand all lines: articles/api-management/api-management-howto-mutual-certificates-for-clients.md
+41-18Lines changed: 41 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,33 +5,57 @@ description: Learn how to secure access to APIs by using client certificates. Yo
5
5
services: api-management
6
6
documentationcenter: ''
7
7
author: dlepow
8
-
manager: erikre
9
-
editor: ''
10
8
11
9
ms.service: api-management
12
-
ms.workload: mobile
13
-
ms.tgt_pltfrm: na
14
10
ms.topic: article
15
-
ms.date: 06/01/2021
11
+
ms.date: 01/12/2023
16
12
ms.author: danlep
13
+
ms.custom: engagement-fy23
17
14
---
18
15
19
16
# How to secure APIs using client certificate authentication in API Management
20
17
21
-
API Management provides the capability to secure access to APIs (i.e., client to API Management) using client certificates. You can validate certificates presented by the connecting client and check certificate properties against desired values using policy expressions.
18
+
API Management provides the capability to secure access to APIs (that is, client to API Management) using client certificates and mutual TLS authentication. You can validate certificates presented by the connecting client and check certificate properties against desired values using policy expressions.
22
19
23
-
For information about securing access to the back-end service of an API using client certificates (i.e., API Management to backend), see [How to secure back-end services using client certificate authentication](./api-management-howto-mutual-certificates.md).
20
+
For information about securing access to the backend service of an API using client certificates (that is, API Management to backend), see [How to secure back-end services using client certificate authentication](./api-management-howto-mutual-certificates.md).
24
21
25
22
For a conceptual overview of API authorization, see [Authentication and authorization in API Management](authentication-authorization-overview.md#gateway-data-plane).
26
23
24
+
## Certificate options
27
25
28
-
> [!IMPORTANT]
29
-
> To receive and verify client certificates over HTTP/2 in the Developer, Basic, Standard, or Premium tiers you must turn on the "Negotiate client certificate" setting on the "Custom domains" blade as shown below.
26
+
For certificate validation, API Management can check against certificates managed in your API Management instance. If you choose to use API Management to manage client certificates, you have the following options:
27
+
28
+
* Reference a certificate managed in [Azure Key Vault](../key-vault/general/overview.md)
29
+
* Add a certificate file directly in API Management
30
+
31
+
Using key vault certificates is recommended because it helps improve API Management security:
32
+
33
+
* Certificates stored in key vaults can be reused across services
34
+
* Granular [access policies](../key-vault/general/security-features.md#privileged-access) can be applied to certificates stored in key vaults
35
+
* Certificates updated in the key vault are automatically rotated in API Management. After update in the key vault, a certificate in API Management is updated within 4 hours. You can also manually refresh the certificate using the Azure portal or via the management REST API.
36
+
37
+
## Prerequisites
38
+
39
+
* If you have not created an API Management service instance yet, see [Create an API Management service instance](get-started-create-service-instance.md).
40
+
* You need access to the certificate and the password for management in an Azure key vault or upload to the API Management service. The certificate must be in **PFX** format. Self-signed certificates are allowed.
41
+
42
+
If you use a self-signed certificate, also install trusted root and intermediate [CA certificates](api-management-howto-ca-certificates.md) in your API Management instance.
43
+
44
+
> [!NOTE]
45
+
> CA certificates for certificate validation are not supported in the Consumption tier.
## Enable API Management instance to receive and verify client certificates
50
+
51
+
### Developer, Basic, Standard, or Premium tier
52
+
53
+
To receive and verify client certificates over HTTP/2 in the Developer, Basic, Standard, or Premium tiers, you must enable the **Negotiate client certificate** setting on the **Custom domain** blade as shown below.
> To receive and verify client certificates in the Consumption tier you must turn on the "Request client certificate" setting on the "Custom domains" blade as shown below.
57
+
### Consumption tier
58
+
To receive and verify client certificates in the Consumption tier, you must enable the **Request client certificate** setting on the **Custom domains** blade as shown below.
@@ -41,8 +65,6 @@ Use the [validate-client-certificate](validate-client-certificate-policy.md) pol
41
65
42
66
Configure the policy to validate one or more attributes including certificate issuer, subject, thumbprint, whether the certificate is validated against online revocation list, and others.
43
67
44
-
For more information, see [API Management access restriction policies](api-management-access-restriction-policies.md).
45
-
46
68
## Certificate validation with context variables
47
69
48
70
You can also create policy expressions with the [`context` variable](api-management-policy-expressions.md#ContextVariables) to check client certificates. Examples in the following sections show expressions using the `context.Request.Certificate` property and other `context` properties.
@@ -66,7 +88,7 @@ Below policies can be configured to check the issuer and subject of a client cer
66
88
```
67
89
68
90
> [!NOTE]
69
-
> To disable checking certificate revocation list use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
91
+
> To disable checking certificate revocation list, use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
70
92
> If client certificate is self-signed, root (or intermediate) CA certificate(s) must be [uploaded](api-management-howto-ca-certificates.md) to API Management for `context.Request.Certificate.Verify()` and `context.Request.Certificate.VerifyNoRevocation()` to work.
71
93
72
94
### Checking the thumbprint
@@ -84,7 +106,7 @@ Below policies can be configured to check the thumbprint of a client certificate
84
106
```
85
107
86
108
> [!NOTE]
87
-
> To disable checking certificate revocation list use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
109
+
> To disable checking certificate revocation list, use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
88
110
> If client certificate is self-signed, root (or intermediate) CA certificate(s) must be [uploaded](api-management-howto-ca-certificates.md) to API Management for `context.Request.Certificate.Verify()` and `context.Request.Certificate.VerifyNoRevocation()` to work.
89
111
90
112
### Checking a thumbprint against certificates uploaded to API Management
@@ -103,7 +125,7 @@ The following example shows how to check the thumbprint of a client certificate
103
125
```
104
126
105
127
> [!NOTE]
106
-
> To disable checking certificate revocation list use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
128
+
> To disable checking certificate revocation list, use `context.Request.Certificate.VerifyNoRevocation()` instead of `context.Request.Certificate.Verify()`.
107
129
> If client certificate is self-signed, root (or intermediate) CA certificate(s) must be [uploaded](api-management-howto-ca-certificates.md) to API Management for `context.Request.Certificate.Verify()` and `context.Request.Certificate.VerifyNoRevocation()` to work.
108
130
109
131
> [!TIP]
@@ -112,5 +134,6 @@ The following example shows how to check the thumbprint of a client certificate
112
134
113
135
## Next steps
114
136
115
-
-[How to secure back-end services using client certificate authentication](./api-management-howto-mutual-certificates.md)
116
-
-[How to upload certificates](./api-management-howto-mutual-certificates.md)
137
+
-[How to secure backend services using client certificate authentication](./api-management-howto-mutual-certificates.md)
138
+
-[How to add a custom CA certificate in Azure API Management](./api-management-howto-ca-certificates.md)
139
+
- Learn about [policies in API Management](api-management-howto-policies.md)
0 commit comments