View Source Changelog
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 according to OAuth / OpenID connect specifications, changes may break in order to comply with those.
[boruta - 3.0.0-beta.3] - 2024-11-21
Changed
Boruta.Oauth.IdToken.generate/2returns a tupleBoruta.Oauth.ResourceOwners.get_by/1is invoked with token scope as additional parameter- resource owners extra_claims appear in id_token with a definition format
Security
- oid4vp deeplinks (and QR codes) use codes time to live to avoid sharing to other holders
Fixed
- adjustements to verifiable credential issuance and presentation
[boruta - 3.0.0-beta.2] - 2024-10-17
Added
- OpenID for Verifiable Credentials Presentation implementation
- resolve EBSI dids
[boruta - 3.0.0-beta.1] - 2024-09-01
Added
- OpenID for Verifiable Credentials Issuance implementation
- Self-Issued OpenID Provider v2 implementation
- Pushed Authorization Request implementation
- Demonstration Proof-of-Possesion implementation
- Direct post flow implementation
- Preauthorized code flow implementation
- support for vc+sd-jwt, jwt_vc_json credentials formats
[boruta - 2.3.4] - 2024-06-10
Fixed
- revoke previous issued tokens in case of code replay (authorization code grant)
[boruta - 2.3.3] - 2024-03-20
Removed
- removed analytics gathering repl on
boruta.gen.migrationtask
Security
- revoke previous issued tokens in case of code replay
[boruta - 2.3.2] - 2023-12-23
- Note that you must run the
boruta.gen.migrationtask to keep your database schema up to date while upgrading to this version.
Added
- clients have a
metadataattribute where one can store json objects - according to OpenID Connect core 1.0, clients have a
logo_uriattribute boruta.gen.migrationtriggers a form to get statistics about boruta usage
[boruta - 2.3.1] - 2023-04-24
- Note that you must run the
boruta.gen.migrationtask to keep your database schema up to date while upgrading to this version.
Fixed
- public key is optional for oauth clients
[boruta - 2.3.0] - 2023-04-09
- Note that you must run the
boruta.gen.migrationtask to keep your database schema up to date while upgrading to this version.
Added
- configuration and support for client authentication methods (
client_secret_post,client_secret_basic,client_secret_jwt,private_key_jwt) RFC 7521, RFC 7523 - dynamic client registration support OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 1
- handle userinfo signed responses
- client key pair regeneration admin function
Admin.regenerate_client_key_pair/1,3
[boruta - 2.2.2] - 2022-10-25
- Note that you must run the
boruta.gen.migrationtask to keep your database schema up to date while upgrading to this version.
Added
- allow lower case bearer authorization header
- prompt=none management for authorization code grant requests
- store the previous code associated with the delivered access token in authorization code grants
- prompt=none management for authorization code grant requests
[boruta - 2.2.1] - 2022-10-16
Security
- remove symmetric keys from openid jwks
[boruta - 2.2.0] - 2022-09-13
- Note that you must run the
boruta.gen.migrationtask to keep your database schema up to date while upgrading to this version. - Upgrade to this version need you to invalidate the cache by running
Boruta.Config.cache_backend().delete_all()
Added
- confidential client management as stated in OAuth 2.0 RFC, documented here. It defaults to false (already existing clients will not be confidential)
- token as the created
Boruta.Oauth.Tokenattribute inBoruta.Oauth.TokenResponse
Changed
- client credentials does not check client secret by default anymore, the client has to be set as confidential to do so
Security
- enable refresh token rotation, revoke previous refresh token on successful refresh token requests
- fix redirect_uri injection in implicit, hybrid and code grants
[boruta - 2.1.5] - 2022-06-15
Added
- id tokens include
kidheader with the corresponding client id Boruta.Oauth.ResourceOwnerextra_claimsattribute that defines claims to be included in id tokens
Security
- do not not issue an access token in authorization code and hybrid grants if code was issued to an other client
Fixed
- id token
at_hashandc_hashbinary sizes for SHA256 and SHA384 signature hash algorithms
[boruta - 2.1.4] - 2022-06-07
Note that you must run the boruta.gen.migration task to keep your database schema up to date while upgrading to this version.
Added
- handle
response_modein hybrid requests - client id_token validation for ecto adapter
- per client id token signature algorithm configuration (introduce a database schema change)
Changed
- prefer
invalid_granttoinvalid_codeandinvalid_refresh_token - error messages have been improved
[boruta - 2.1.3] - 2022-05-17
Added
- handle
response_modein hybrid requests errors
Fixed
- respond to authorize requests with
token_typeonly when an access token is returned - generated migrations can be rollbacked
- clients pkey constraint do not crash on admin create
[boruta - 2.1.2] - 2022-05-02
Fixed
- hybrid requests shall return all errors as fragment
[boruta - 2.1.1] - 2022-04-30
Fixed
- dialyzer warning on
Boruta.Oauth.Errorstruct type
[boruta - 2.1.0] - 2022-04-29
Added
- OpenID Connect jwks endpoint domain and application layer generation
- OpenID Connect userinfo endpoint domain and application layer generation
Fixed
- OpenID Connect prompt=none login_required errors in domain
[boruta - 2.0.1] - 2022-04-12
Added
- expose
Boruta.Oauth.Client.grant_types/0 - expose
Boruta.Oauth.IdToken.signature_alg/0andBoruta.Oauth.IdToken.hash_alg/0
Changed
Admin.delete_inactive_tokens/0,1does not return deleted tokens
Fixed
- generated openid authorize controller prompt=none error params type
[boruta - 2.0.0] - 2022-01-26
Added
Boruta.Ecto.Admin.get_scopes_by_names/1Boruta.Ecto.Admin.regenerate_client_secret/1,2Boruta.Ecto.Admin.delete_inactive_tokens/0,1Boruta.Ecto.Client.grant_types/0- ability to insert/update clients with given id/secret
- inserting/updating a client inserts non existing authorized_scopes
oauth_moduleinjection inboruta.gen.controllersgenerated controllers default toBoruta.Oauth
Changed
- store previous token while refreshing access tokens (need to run
boruta.gen.migrationmix task to be up to date) Boruta.Ecto.Admin.list_active_tokens/0,1returns query result instead of anEcto.QueryBoruta.Oauth.ResourceOwners.claims/2callback takes aBoruta.Oauth.ResourceOwnerstruct instead ofsubas parameter
[boruta - 2.0.0-rc.1] - 2021-11-17
Fixed
- better Ecto errors management
- remove padding from pkce code challenge checks
- reduce resource_owners adapter calls
Added
- domain wildcard for client redirect_uris
Removed
- Ecto
ClientsAdapter.get_by(id: id, secret: secret)is removed in preference ofClientsAdapter.get_client(id)andOauth.Client.check_secret(client, secret). - Ecto
ClientsAdapter.get_by(id: id, redirect_uri: redirect_uri)is removed in preference ofClientsAdapter.get_client(id)andOauth.Client.check_redirect_uri(client, redirect_uri).
[boruta - 2.0.0-rc.0] 2021-10-12
Added
- OpenID Connect core 1.0 integration
- hybrid flow
- authorization code and implicit grants with OpenID Connect compatibility
public_revokeper client configuration allowing to revoke tokens without providing client secret.introspectandrevokesupported grant types per client configuration.
Changed
Boruta.Oauth.AuthorizeResponseandBoruta.Oauth.TokenResponsedo not provide token value invaluefield but prefer giving value by token typecode,access_tokenorid_token.
becomes%AuthorizeResponse{ type: "code", value: value, expires_in: 60 }%AuthorizeResponse{ type: :code, code: value, expires_in: 60 }- add nonce column to tokens
- default column values migrations
- migration management
boruta.gen.migrationsdoes incremental changes
Security
- codes are revoked after first usage
Fixed
boruta.gen.controllersgenerated paths in umbrella apps
[boruta - 1.2.1] - 2021-10-10
Security
- remove redirect_uris regex pattern check
[boruta - 1.2.0] - 2021-09-15
Added
public_refresh_tokenper client configuration allowing to refresh tokens without providing client secret.refresh_token_ttlper client configuration setting refresh tokens duration (along withrefresh_tokne_max_ttl:boruta mix configuration).issuer:boruta mix configuration.
Fixed
boruta.gen.controllersgenerated paths in umbrella apps.- Refreshed tokens has associated access_token scope as default.
- Requests with no client secret won't raise an error.
Changed
invalid_clientdo not return neither format, nor redirect_uri inBoruta.Oauth.Error.
[boruta - 1.1.0] - 2021-08-16
Added
AuthorizeApplication,IntrospectApplication,RevokeApplication, andTokenApplicationbehaviours allowing to implement separately different OAuth use cases.list_active_tokensEcto admin functionBoruta.AccessTokensAdapter,Boruta.CodesAdapter,Boruta.ClientsAdapter, andBoruta.ScopesAdapterencapsulating adapters that are set in configuration.Boruta.Oauth.AuthorizeResponse.redirect_to_url/1functionBoruta.Oauth.Error.redirect_to_url/1functionboruta.gen.controllersmix taskBoruta.Ectoschemas documentation
Security
- do not issue access_tokens from other clients refresh tokens
Fixed
- Internal server errors when no client_id provided to token and refresh_token grants
[boruta - 1.0.3] - 2021-07-29
Security
- Refresh token revocation
[boruta - 1.0.2] - 2021-06-29
Added
- Different OAuth flows integration guides
[boruta - 1.0.1] - 2021-03-10
Fixed
- Migration fix generated by
mix boruta.gen.migrationtask
Added
- Documentation