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
Copy file name to clipboardExpand all lines: src/content/docs/identityserver/tokens/fapi-2-0-specification.md
+45-39Lines changed: 45 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,13 +8,11 @@ sidebar:
8
8
variant: tip
9
9
---
10
10
11
-
:::note
12
-
Available **ONLY** in Duende IdentityServer 7.3+
13
-
:::
11
+
<spandata-shb-badgedata-shb-badge-variant="default">Added in 7.3</span>
14
12
15
-
The FAPI 2.0 Security Profile is an API security profile based on the OAuth 2.0 Authorization Framework. Its goal is to protect APIs in high-value scenarios and is a set of OAuth Security best current practice (BCP) recommendations. These high-value scenarios include assets typically deployed in the fields of e-health and e-government, which may provide consumers with sensitive data and mission-critical functionality.
13
+
The [FAPI 2.0 Security Profile](https://openid.net/specs/fapi-security-profile-2_0-final.html) is an API security profile based on the OAuth 2.0 Authorization Framework. Its goal is to protect APIs in high-value scenarios and is a set of OAuth Security best current practice (BCP) recommendations. These high-value scenarios include assets typically deployed in the fields of e-health and e-government, which may provide consumers with sensitive data and mission-critical functionality.
16
14
17
-
Duende Identity Server implements the FAPI 2.0 BCP features so you can build, deploy, and maintain a FAPI 2.0 Security profile as part of your overall security posture. Let's discuss what those features are and how to enable them.
15
+
Duende IdentityServer implements the FAPI 2.0 BCP features so you can build, deploy, and maintain a FAPI 2.0 Security profile as part of your overall security posture. Let's discuss those features and how to enable them.
18
16
19
17
## FAPI 2.0 Required Features
20
18
@@ -27,14 +25,14 @@ When customizing IdentityServer for FAPI 2.0 compliance, follow the rules listed
27
25
1. Distribute discovery metadata (such as the authorization endpoint) via the metadata document.
28
26
2. Reject requests using the resource owner password credentials grant.
29
27
3. Only support confidential clients.
30
-
4. Only issue sender-constrained access tokens;
28
+
4. Only issue sender-constrained access tokens.
31
29
5. Use one of the following methods for sender-constrained access tokens: MTLS and DPoP.
32
-
6. Authenticate clients using one of the methods of MTLS or `private_key_jwt`.
30
+
6. Authenticate clients using one of the methods of mTLS or `private_key_jwt`.
33
31
7. Shall not expose open redirectors.
34
32
8. Only accept the issuer identifier value as a string in the `aud` claim received in client authentication assertions.
35
33
9. Do not use refresh token rotation except in extraordinary circumstances.
36
-
10. If using DPoP, may use the server-provided nonce mechanism.
37
-
11. Issue authorization codes with a maximum lifetime of 60 seconds;
34
+
10. If using DPoP, use the server-provided nonce mechanism.
35
+
11. Issue authorization codes with a maximum lifetime of 60 seconds.
38
36
12. If using DPoP, shall support "Authorization Code Binding to DPoP Key".
39
37
13. To accommodate clock offsets, shall accept JWTs with an `iat` or `nbf` timestamp between 0 and 10 seconds in the future, but reject JWTs with an `iat` or `nbf` timestamp greater than 60 seconds in the future.
40
38
14. Restrict the privileges associated with an access token to the minimum required for the particular application or use case.
@@ -43,35 +41,43 @@ Luckily, many of these rules are enabled by default and do not require any code
The general configuration for IdentityServer includes two notable changes from what you may see in a typical authorization server implementation.
@@ -150,7 +156,7 @@ Let's review the four elements that turn a client into a FAPI 2.0-compliant clie
150
156
3. Enable DPoP security for the client.
151
157
4. Enable Pushed Authorization Requests
152
158
153
-
That's it. You now have a FAPI 2.0-compliant client. Next, let's look at
159
+
That's it. You now have a FAPI 2.0-compliant client.
154
160
155
161
Now that our authorization server's client configuration is FAPI 2.0 compliant, we'll need our clients to comply with the requirements.
156
162
@@ -186,4 +192,4 @@ You are now FAPI 2.0 compliant and ready to secure your high-value assets with D
186
192
187
193
## Private Key JWT vs. MTLS
188
194
189
-
While the FAPI 2.0 allows for choice in securing communication between the authorization server and clients, we recommend that developers implementing FAPI 2.0 start with private key JWTs before choosing MTLS. Both are supported with Duende IdentityServer, but implementing MTLS is relatively challenging to maintain in a production environment. You are responsible for your deployment and production environments, so you are ultimately best suited to decide which option to move forward with.
195
+
While the FAPI 2.0 allows for choice in securing communication between the authorization server and clients, we recommend that developers implementing FAPI 2.0 start with private key JWTs before choosing mTLS. Both are supported with Duende IdentityServer, but [implementing mTLS](/identityserver/tokens/client-authentication.md#mutual-tls-client-certificates) is relatively challenging to maintain in a production environment. You are responsible for your deployment and production environments, so you are ultimately best suited to decide which option to move forward with.
0 commit comments