从 Keycloak 访问令牌获取客户端会话 ID

Get client session id from Keycloak access token

参考 Keycloak 的 documentation 帐户链接,我需要从中获取 用户会话 ID客户端会话 ID访问令牌。

但是,通过查看他们的 javascript adapter source code.

,我只在令牌上找到了他们称为 session_state 的东西,这显然与 sessionId 相同

我估计这是他们指的用户会话ID?如果是这样,我在哪里可以找到这个所谓的 客户端会话 ID

原来是客户端id。所以这样的事情应该有效:

从访问令牌中提取用户会话 ID 和客户端会话 ID("aud" 是客户端 ID):

const { session_state, aud } = JSON.parse(decodeURIComponent(escape(atob(accessToken.split(‌​'.') [1])))) 

创建 base64 哈希:

Base64.stringify(sha256(nonce + session_state + aud + 'facebookOrWhatever')) 

您还需要使生成的 base64 编码哈希 url 友好(即“+”和“/”替换为“-”,“_”也删除任何尾随的“=”字符)