The Yii2 Oauth2 Server supports Single Logout (a.k.a. Single Sign-out) via the OpenID Connect RP-Initiated Logout protocol. This specification defines a mechanism for a "Relying Party" (e.g. a Client) to request that the server logs out the End-User.
For security RP-Initiated Logout is disabled by default. To enable it you can set Oauth2Module::$openIdConnectRpInitiatedLogoutEndpoint
to true
. E.g.:
return [
// ...
'modules' => [
'oauth2' => [
'class' => rhertogh\Yii2Oauth2Server\Oauth2Module::class,
// ...
'enableOpenIdConnect' => true,
'openIdConnectRpInitiatedLogoutEndpoint' => true,
],
// ...
],
// ...
];
Each Client also needs to be authorized to initiate the end-user logout. This is done via the oidc_rp_initiated_logout
property.
This must be one of the Oauth2ClientInterface::OIDC_RP_INITIATED_LOGOUT_OPTIONS
:
Constant | Value | Description |
---|---|---|
OIDC_RP_INITIATED_LOGOUT_DISABLED | 0 | Client is not allowed to initiate logout. |
OIDC_RP_INITIATED_LOGOUT_ENABLED | 1 | Client may initiate logout, end-user will be prompted to confirm the logout. |
OIDC_RP_INITIATED_LOGOUT_ENABLED_WITHOUT_CONFIRMATION | 2 | Client can logout the user directly (no prompt), this is useful if the Client is under your direct control. |
The default endpoint is /oauth2/oidc/end-session
. When enabled, this url will also be visible via the OpenID Connect Discovery endpoint
as the end_session_endpoint
element.
By default, the Yii2-Oauth2-Server will redirect the user to the application's home URL.
The Client may request a custom redirect URI via the post_logout_redirect_uri
parameter.
For security, these URIs have to be specified per Client via the post_logout_redirect_uris
property.
The same requirements and options as for the login redirect URIs apply, please see Yii2-Oauth2-Server Redirect URIs Configuration for more information.