JWT bearer token authentication.
+
+
This module lets developpers add a new jwt authentication method on
+Odoo controller routes.
+
To use it, you must:
+
+- Create an auth.jwt.validator record to configure how the JWT token
+will be validated.
+- Add an auth="jwt_{validator-name}" or
+auth="public_or_jwt_{validator-name}" attribute to the routes you
+want to protect where {validator-name} corresponds to the name
+attribute of the JWT validator record.
+
+
The auth_jwt_demo module provides examples.
+
The JWT validator can be configured with the following properties:
+
+- name: the validator name, to match the
+auth="jwt_{validator-name}" route property.
+- audience: a comma-separated list of allowed audiences, used to
+validate the aud claim.
+- issuer: used to validate the iss claim.
+- Signature type (secret or public key), algorithm, secret and JWK URI
+are used to validate the token signature.
+
+
In addition, the exp claim is validated to reject expired tokens.
+
If the Authorization HTTP header is missing, malformed, or contains
+an invalid token, the request is rejected with a 401 (Unauthorized)
+code, unless the cookie mode is enabled (see below).
+
If the token is valid, the request executes with the configured user id.
+By default the user id selection strategy is static (i.e. the same
+for all requests) and the selected user is configured on the JWT
+validator. Additional strategies can be provided by overriding the
+_get_uid() method and extending the user_id_strategy selection
+field.
+
The selected user is not stored in the session. It is only available
+in request.uid (and thus it is the one used in request.env). To
+avoid any confusion and mismatches between the bearer token and the
+session, this module rejects requests made with an authenticated user
+session.
+
Additionally, if a partner_id_strategy is configured, a partner is
+searched and if found, its id is stored in the
+request.jwt_partner_id attribute. If partner_id_required is set,
+a 401 (Unauthorized) is returned if no partner was found. Otherwise
+request.jwt_partner_id is left falsy. Additional strategies can be
+provided by overriding the _get_partner_id() method and extending
+the partner_id_strategy selection field.
+
The decoded JWT payload is stored in request.jwt_payload.
+
The public_auth_jwt method delegates authentication to the standard
+Odoo public method when the Authorization header is not set. If it
+is set, the regular JWT authentication is performed as described above.
+This method is useful for public endpoints that need to work for
+anonymous users, but can be enhanced when an authenticated user is know.
+A typical use case is a “add to cart” endpoint that can work for
+anonymous users, but can be enhanced by binding the cart to a known
+customer when the authenticated user is known.
+
You can enable a cookie mode on JWT validators. In this case, the JWT
+payload obtained from the Authorization header is returned as a
+Http-Only cookie. This mode is sometimes simpler for front-end
+applications which do not then need to store and protect the JWT token
+across requests and can simply rely on the cookie management mechanisms
+of browsers. When both the Authorization header and a cookie are
+provided, the cookie is ignored in order to let clients authenticate
+with a different user by providing a new JWT token.
+