从 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 友好(即“+”和“/”替换为“-”,“_”也删除任何尾随的“=”字符)
参考 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 友好(即“+”和“/”替换为“-”,“_”也删除任何尾随的“=”字符)