OIDC Module - Upgrade guide

This is an upgrade guide from versions 1 → 6. Review the changes and apply those relevant to your deployment.

Version 5 to 6

New features:

New configuration options:

Major impact changes:

Medium impact changes:

Low-impact changes:

Below are also some internal changes that should not have an impact on the OIDC OP implementers. However, if you are using this module as a library or extending from it, you will probably encounter breaking changes, since a lot of code has been refactored:

Version 4 to 5

Major impact changes:

Medium impact changes:

Low-impact changes:

Below are some internal changes that should not have an impact on the OIDC OP implementers. However, if you are using this module as a library or extending from it, you will probably encounter breaking changes, since a lot of code has been refactored:

Version 3 to 4

Version 2 to 3

Version 1 to 2

There are many DB changes that need to be applied. Perform the migration by logging in as an SSP admin to https://server/simplesaml/module.php/oidc/install.php

An SSP admin should now use https://server/simplesaml/module.php/oidc/admin-clients/ to manage clients. The previous /clients/ path is for authorized users.

Review the changes to config-templates/module_oidc.php and apply relevant changes to your configuration. For example, claim types are now supported.

In version 1, in authorization code flow, user claims were always included in ID token, instead of only including them if the access token was not released, as per specification. Since changing this behavior is a potential breaking change for Relying Parties, in version 2 a config option 'alwaysAddClaimsToIdToken' is introduced to enable OpenID Providers to keep the behavior from version 1 by setting it to 'true'. If 'alwaysAddClaimsToIdToken' is set to 'false', user claims will only be added to ID token if access token was not released. If an access token was released, user claims will have to be fetched from the 'userinfo' endpoint. Note that this option has only applied to authorization code flow since implicit flow was not available in version 1. If you are to use the spec compliant behavior, make sure to warn existing Relying Parties about the change.

Similarly, in version 1, in authorization code flow, the refresh token was always released, instead of only releasing it if the client specifically requested it using the 'offline_access' scope. Since changing this behavior is a potential breaking change for Relying Parties, in version 2 a config option 'alwaysIssueRefreshToken' is introduced to enable OpenID Providers to keep the behavior from version 1 by setting it to 'true'. If 'alwaysIssueRefreshToken' is set to 'false', refresh token will be released only if it was requested using 'offline_access' scope. If you are to use the spec compliant behavior, make sure to warn existing Relying Parties about the change. Note that in that case the client must have the 'offline_access' scope registered.

Token endpoint was renamed from '.../access_token.php' to '.../token.php'. This is a potential breaking change for clients that do not fetch OP configuration from the /.well-known/openid-configuration URI dynamically, but instead hardcode endpoints in their configuration. You should probably warn existing Relying Parties about this change.