Это Jira Issue Keycloak относительно этого топи c. Go и проголосуйте за него!
После ознакомления с реализацией spe c и Keycloaks я должен сказать, что НЕ совместим с spe c. Например, это разница в требуемом формате токена выхода из системы, который должен быть отправлен от OP к RP:
2.4. Токен выхода из системы
OP отправляют JWT, аналогичный идентификатору идентификатора, на RP, называемый токеном выхода, для запроса на выход из системы. Идентификационные токены определены в разделе 2 [OpenID.Core].
В токене выхода используются следующие утверждения:
iss
REQUIRED. Issuer Identifier, as specified in Section 2 of [OpenID.Core].
sub
OPTIONAL. Subject Identifier, as specified in Section 2 of [OpenID.Core].
aud
REQUIRED. Audience(s), as specified in Section 2 of [OpenID.Core].
iat
REQUIRED. Issued at time, as specified in Section 2 of [OpenID.Core].
jti
REQUIRED. Unique identifier for the token, as specified in Section 9 of [OpenID.Core].
events
REQUIRED. Claim whose value is a JSON object containing the member name http://schemas.openid.net/event/backchannel-logout. This declares that the JWT is a Logout Token. The corresponding member value MUST be a JSON object and SHOULD be the empty JSON object {}.
sid
OPTIONAL. Session ID - String identifier for a Session. This represents a Session of a User Agent or device for a logged-in End-User at an RP. Different sid values are used to identify distinct sessions at an OP. The sid value need only be unique in the context of a particular issuer. Its contents are opaque to the RP. Its syntax is the same as an OAuth 2.0 Client Identifier.
Токен выхода из системы ДОЛЖЕН содержать подпрограмму или sid Претензия и МОЖЕТ содержать оба. Если sid Claim отсутствует, подразумевается, что все сеансы на RP для конечного пользователя, идентифицированные с помощью Iss и Sub-Claims, будут отключены.
И это то, что Keycloak отправляет в своем текущая версия (8.0.1):
{
"id": "3536c4c4-fa51-4691-bc09-d229df83f774-1579360301277",
"expiration": 1579360331,
"resource": "resource-server-1",
"action": "LOGOUT",
"adapterSessionIds": [
"6569208C4937FD9C6E138C9DD9CF7C6F"
],
"notBefore": 0,
"keycloakSessionIds": [
"ca8060fd-48e9-4d26-b2d6-d6edb095f4b7"
]
}