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

Pet*_*ter 1 javascript openid-connect keycloak

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

然而,我只发现他们在令牌上调用的东西显然与查看他们的javascript 适配器源代码session_state相同。sessionId

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

Pet*_*ter 5

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

\n\n

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

\n\n
const { session_state, aud } = JSON.parse(decodeURIComponent(escape(atob(accessToken.split(\xe2\x80\x8c\xe2\x80\x8b\'.\') [1])))) \n
Run Code Online (Sandbox Code Playgroud)\n\n

创建base64哈希:

\n\n
Base64.stringify(sha256(nonce + session_state + aud + \'facebookOrWhatever\')) \n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n