All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- tonic support is back
- CI refactoring
- MSRV is bumped to 75
- minor dependencies updates (commit: d87b7ef90912759b0ad608bfcb7b021bb9c14e14)
- update to axum 0.7
- tower-http 0.5, header 0.4, http 1.0
- jsonwebtoken 9.2
- tonic support removed temporarily (waiting for tonic migration to axum 0.7)
- added support for custom http client in jwks discovery (fixes #41)
algs
added to configurable validation options- missing alg in JWK no longer defaults to RS256 but to all algs of the same alg familly
- jsonwebtoken updated (8.3.0 -> 9.1.0)
- make RegisteredClaims serializable (fixes #38)
- internal refactoring (no public breaking changes)
- claim checker allowing closures (#32)
- jwks from file or text (#37)
- support for multiple authorizers
- JwtAuthorizer::layer() deprecated in favor of JwtAuthorizer::build() and IntoLayer::into_layer()
- better optional claims extraction (commit: 940acb17a1de82788bc72c3657da87609ce741e9)
- error 401 rather than INTERNAL_SERVER_ERROR, when no claims exist (no authorizer layer)
- do not log error
- (RegisteredClaims) audience claim, should be a string o an array of strings
- (NumericDate) optional feature enables
time
dep as an alternative tochrono
- tonic services support
- choices of TLS support (corresponding to underlying reqwest crate features)
RegisteredClaims
added (representing RFC7519 registered claims), used as default forJwtAuthorizer
- Other sources for jwt token are configurable (#10)
- Cookie
- AuthorizationHeader (default)
- Raw PEM file content as an input for JwtAuthorizer (#15)
- Remove 'static lifetime requirement (#8)
No public API changes, no new features.
- KeyStore, KeySource refactor for better performance and security
- Allow non root OIDC issuer (issue #1)
- validation configuration (exp, nbf, aud, iss, disable_validation)
- more integration tests added
JwtAuthorizer.from_ec()
,JwtAuthorizer.from_ed()
imported PEM as DER resulting in failed validations
- Refresh configuration - simplification, minimal_refresh_interval removed (replaced by refresh_interval in KeyNotFound refresh strategy)
- integration tests, unit tests
- JwtAuthorizer::from_oidc(issuer_uri) - building from oidc discovery page
- JwtAuthorizer::layer() becomes async
- demo-server refactoring
- JwtAuthorizer creation simplified:
- JwtAuthorizer::from_* creates an instance, new() is not necessary anymore
- with_check() renamed to check()
- jwks store refresh configuration
- claims extractor (JwtClaims) without authorizer should not panic, should send a 500 error
- claims checker (stabilisation, tests, documentation)
- added missing WWW-Authenticate header to errors
- fix: when jwks store endpoint is unavailable response should be an error 500 (not 403)
- fix: panicking when a bearer token is missing in protected request (be6bf9fb)
- building the authorizer layer from rsa, ec, ed PEM files and from secret phrase (9bd99b2a)
Initial release