Add DpopToken class
What does this MR do and why?
See the epic (Allow users to require demonstrated proof of po... (&14383)) for context, pre-work, and other related issues.
This MR is part 1 of:
- Add DpopToken class (!173071 - merged)
- New DpopTokenUser class (!173662 - merged)
- Parse and validate DPoP Tokens (!166206 - merged)
This MR is to provide logic that can:
- Validate that DPoP token (a signed JWT) is well formed according to the spec
- E.g. each part of the token has the correct number of parts, the signing algorithm is supported, the timestamps are recent enough, that a valid key ID is present, etc etc
- Validate that a DPoP token was correctly signed with one of a user's valid and current signing keys according to the spec. Specifically:
- the
kidreferences a valid, current signing key for the provided user - the
athclaim is a signature that corresponds to the private key referenced inkid
- the
How to set up and validate locally
Currently, this MR only adds the DPoP token class, which will be used by the REST/GraphQL API. To see the planned usage, please see Add DPoP checks in GraphQL and API requests (!169013 - merged).
Edited by Ash McKenzie