【问题标题】:Get client session id from Keycloak access token从 Keycloak 访问令牌中获取客户端会话 ID
【发布时间】:2018-03-25 15:10:46
【问题描述】:

参考 Keycloak 的 documentation 进行帐户链接,我需要从访问令牌中获取 user session idclient session id

但是,通过查看他们的javascript adapter source code,我只能在令牌上找到他们称之为session_state 的东西,这显然与sessionId 相同。

我认为这是他们所指的用户会话ID?如果是这样,我在哪里可以找到这个所谓的 client session 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友好(即 '+' 和 '/' 替换为 '-' 和 '_' 还删除任何尾随 '=' 字符)

标签: javascript openid-connect keycloak


【解决方案1】:

原来它是客户 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 友好(即 '+' 和 '/' 替换为 '-' 和 '_' 还删除任何尾随 '=' 字符)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2014-07-24
    相关资源
    最近更新 更多