Validation in FAPI mode
Preface
Authlete 2.0+ provides Financial-grade API (FAPI) mode, which enables to issue and validate tokens based on FAPI 1.0 Baseline (Financial-grade API Security Profile 1.0 - Part 1: Baseline) and FAPI 1.0 Advanced (Financial-grade API Security Profile 1.0 - Part 2: Advanced). This document describes how Authlete validates requests in FAPI 1.0 Baseline/Advacned mode.
Authorization Endpoint
1. response_type parameter
|
|
Baseline |
- |
Advanced |
The value must be either “code id_token” or “code id_token token” unless the response_mode value is “query.jwt”, “fragment.jwt”, “form_post.jwt” or “jwt”. |
2. redirect_uri parameter
|
|
Baseline |
The redirect_uri value must be specified. |
Advanced |
same as Baseline |
The redirect_uri value is required when the scope parameters include “openid”, according to OpenID Connect Core, not Financial-grade API.
3. Redirect URI scheme
|
|
Baseline |
The redirect_uri should use the “https” scheme. |
Advanced |
same as Baseline |
You cannot use custom schemes in FAPI 1.0 mode. Thus, you may use the method described in 7.2 Claimed “https” Scheme URI Redirection
at BCP 212
(OAuth 2.0 for Native Apps) when you want to handle the redirect sequences only in native apps.
4. Redirect URI validation
|
|
Baseline |
This URI MUST exactly match one of the Redirection URI values for the Client pre-registered at the OpenID Provider. |
Advanced |
same as Baseline |
The exact match is required when the scope parameters include “openid” according to OpenID Connect Core, not Financial-grade API.
5. state parameter
|
|
Baseline |
The state parameter is required when the scope parameter does not include “openid” scope value. |
Advanced |
same as Baseline |
6. nonce parameter
|
|
Baseline |
The nonce request parameter is required if it is desired to obtain a persistent identifier of the authenticated user. |
Advanced |
same as Baseline |
Authlete considers “if it is desired to obtain a persistent identifier of the authenticated user” as “if an id_token is requested”. Therefore, the nonce parameter is required “when the response_type request parameter includes id_token” or “when the response_type includes code and the scope parameter includes openid.”
7. Request Object
|
|
Baseline |
- |
Advanced |
The signed request object is required, which means that request or request_uri parameter shall be in authorization requests. |
8. Request Object Signature
|
|
Baseline |
- |
Advanced |
The request object must be signed. |
9. Request Parameters outside Request Object
|
|
Baseline |
- |
Advanced |
All parameters outside the requet object must be included inside the request object. |
10. exp claim in Request Object
|
|
Baseline |
- |
Advanced |
The request object must contain an exp claim. |
11. aud claim in Request Object
|
|
Baseline |
- |
Advanced |
The request object must contain an aud claim that is, or that is an array containing, the OP’s Issuer Identifier URL. |
12. Signing Algorithm of Request Object
|
|
Baseline |
- |
Advanced |
PS256 or ES256 |
13. code_challenge parameter
|
|
Baseline |
The code_challenge parameter is required. |
Advanced |
The code_challenge parameter is required when the client type is public. |
14. code_challenge_method parameter
|
|
Baseline |
The code_challenge_method value must be S256. |
Advanced |
The code_challenge_method value must be S256 when the client type is public. |
The code_challenge_method value must be S256 because authorization servers treat the code with plain when the code_challenge_method is not specified.
15. ACR
|
|
Baseline |
- |
Advanced |
acr claim is required as an essential claim. A client must use the claims request parameter, pass JSON as its value, and include {“essential":true} inside the JSON. |
This validation won’t be executed in OPEN_BANKING mode.
16. Signing Algorithm of Response JWT
|
|
Baseline |
- |
Advanced |
The metadata of a client, authorization_signed_response_alg, must be PS256 or ES256. |
Request response will be formated in JSON when JARM is used.
17. Signing Algorithm of ID Token
|
|
Baseline |
- |
Advanced |
The metadata of a client, id_token_signed_response_alg, must be PS256 or ES256. |
Token Endpoint
18. Client Authentication Options
|
|
Baseline |
- tls_client_auth
- self_signed_tls_client_auth
- client_secret_jwt
- private_key_jwt
|
Advanced |
- tls_client_auth
- self_signed_tls_client_auth
- private_key_jwt
|
19. Signing Algorithm of Client Assertion
|
|
Baseline |
- |
Advanced |
PS256 or ES256 |
20. Key Size of Client Assertion
|
|
Baseline |
A key of size 2048 bits or larger is required if RSA algorithms are used for the client authentication. A key of size 160 bits or larger is required if elliptic curve algorithms are used for the client authentication. |
Advanced |
same as Baseline |
21. Signing Algorithm of ID Token
|
|
Baseline |
- |
Advanced |
The metadata of a client, id_token_signed_response_alg, must be PS256 or ES256. |
22. Mechanism for sender-constrained access tokens
|
|
Baseline |
- |
Advanced |
Support MTLS (Certificate Binding) as mechanism for sender-constrained access tokens. |
User Info Endpoint
23. Signing Algorithm of User Info Response
|
|
Baseline |
- |
Advanced |
The algorithm must be either PS256 or ES256 when a user info response is signed. |
Reference