1.0.0 (15/12/2022)
Highlights
rodauth-oauth is now OpenID certified for the following certification profiles:
-
Basic OP
-
Implicit OP
-
Hybrid OP
-
Config OP
-
Dynamic OP
-
Form Post OP
and passes the conformance tests for RP-Initiated Logout OP.
The OIDC server used to run the test can be found here and deployed here.
Breaking changes
The full description of breaking changes, and suggestions on how to make the migration smoother, can be found in the migration guide.
A short list of the main highlights:
-
Ruby 2.5 or higher is required.
-
oauth_http_macfeature removed. -
oauth_tokenstable (and resource) were removed (onlyoauth_applicationsandoauth_grants, access and refresh tokens are now properties of the latter). -
access and refresh tokens hashed by default when stored in the database.
-
default oauth response mode is
"form_post". -
oauth specific features require explicit enablement of respective features (no more
enable :oauth) -
refresh token policy is “rotation” by default
-
homepage url is no longer a client application required property.
-
OIDC RP-initiated logout extracted into oidc_rp_initiated_logout feature.
Features
The following helpers are exposed in the rodauth object:
-
current_oauth_account- returns the dataset row for therodauthaccount associated to an oauth access token in the “authorization” header. -
current_oauth_application- returns the dataset row for the oauth application associated to an oauth access token in the “authorization” header.
When used in rails via rodauth-rails, both are exposed directly as controller helpers.
oauth_resource_server plugin
This plugin can be used as a convenience when configuring resource servers.
JAR support for request_uri query param
The oauth_jwt_secured_authorization_request plugin now supports a request_uri query param as well.
OIDC features
-
The
oidcplugin supports essential claims, via theclaimsauthorization request query parameter. -
id token built with
"c_hash"and"at_hash"claims when they should.
Improvements
-
:oauth_introspectplugin: OAuth introspection endpoint exposes the token’s"username"claim. -
endpoint client authentication supports “client credentials grant” access tokens.
-
acr_values_supportedexposed in the openid configuration. -
oauth_request_object_signing_alg_allow_noneenables"none"as an accepted request object signing alg whentrue(falseby default). -
OIDC
offline_accesssupported.
Bugfixes
-
fixed
oidccalculation of"auth_time"claim. -
JWT: “sub” is now always a string.
-
response_typeis now an authorization request required parameter (as per the RFC). -
stateis now passed along when redirecting from authorization requests witherror; -
access token can now be read from POST body or GET query params (as per the RFC).
-
id token no longer shipping with claims with
nullvalue; -
id token no longer encoding claims by default (only when
response_type=id_token, as per the RFC). -
support “JWT without kid” when doing jwt decoding for JWT tokens not generated in the provider (such as request objects).
-
Set
issandaudclaims in the Userinfo JWT response. -
Make sure errors are also delivered via form POST, when
response_mode=form_post. -
Authorization request now shows an error page when
response_typeorclient_idare missing, orredirect_uriis missing or invalid; a new"authorize_error"template is invoked in such cases. -
oidc: nonce present in id token when using the “id_token token” response type.
-
error parameter delivered in URL fragment when failing an implicit grant autorization request.