!!! Overview
[{$pagename}] is a [JSON Web Token] is sent from [OpenID Connect Provider] to [Relying Party] request that they [logout].
[{$pagename}] is defined in [OpenID Connect Back-Channel Logout]
[{$pagename}] is similar to an [id_token]
The following [Claims] are used within the [{$pagename}]:
* [iss] [REQUIRED]
* [sub] [OPTIONAL]
* [aud] [REQUIRED]
* [iat] [REQUIRED]
* [jti] [REQUIRED]
* [events|Events Claim] [REQUIRED]. [Claim] whose value [MUST] be a [JSON Object] containing the member name http://schemas.openid.net/event/backchannel-logout. This declares that the [JWT] is a [{$pagename}]. The corresponding member value [MUST] be a [JSON Object] and [SHOULD] be the empty JSON object {}.
* [sid] [OPTIONAL]
A Logout Token [MUST] contain either a [sub] or a [sid] [Claim], and [MAY] contain both. If a [sid] [Claim] is not present, the intent is that all sessions at the RP for the [End-User] identified by the [iss] and [sub] [Claims] be logged out.
The following [Claim] [MUST NOT] be used within the Logout Token:
* [nonce] [PROHIBITED] - A [nonce] Claim [MUST NOT] be present. Its use is prohibited to make a Logout Token syntactically invalid if used in a forged [Authentication Response] in place of an [id_token].
[Logout] Tokens [MAY] contain other [Claims]. Any [Claims] used that are not understood [MUST] be ignored.
A [{$pagename}] [MUST] be signed ([JWS]) and [MAY] also be [encrypted] ([JWE]). The same keys are used to sign and encrypt [{$pagename}] as are used for [id_token].
NOTE: The [{$pagename}] is compatible with [Security Event Token] ([SET]) [I‑D.ietf‑secevent‑token] draft -00.
A non-normative [example] [JWT] Claims Set for a [{$pagename}] follows:
%%prettify
{{{
{
"iss": "https://server.example.com",
"sub": "248289761001",
"aud": "s6BhdRkqt3",
"iat": 1471566154,
"jti": "bWJq",
"sid": "08a5019c-17e1-4977-8f42-65a12843ea02",
"events": {
"http://schemas.openid.net/event/backchannel-logout": {}
}
}
}}} /%
!! [Relying Party] [{$pagename}] [Validation]
Upon receiving a logout request at the back-channel logout [URI], the [Relying Party] [MUST] validate the [{$pagename}] as follows:
* If the [{$pagename}] is encrypted, decrypt it using the keys and algorithms that the Client specified during Registration that the OP was to use to encrypt [id_token].
* If [id_token] encryption was negotiated with the OP at Registration time and the Logout Token is not encrypted, the [Relying Party] [SHOULD] reject it.
* Validate the [{$pagename}] signature in the same way that an [id_token] signature is validated, with the following refinements.
* Validate the [iss], [aud], and [iat] [Claims] in the same way they are validated in [id_tokens].
* Verify that the [{$pagename}] contains a [sub] Claim, a [sid] Claim, or both.
* Verify that the [{$pagename}] contains an [events Claim] whose value is [JSON Object] containing the member name http://schemas.openid.net/event/backchannel-logout.
* Verify that the [{$pagename}] does not contain a [nonce] [Claim].
* Optionally verify that another [{$pagename}] with the same [jti] value has __NOT__ been recently received.
If any of the validation steps fails, reject the [{$pagename}] and return an [HTTP 400] __Bad Request__ [error]. Otherwise, proceed to perform the logout actions.
!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]