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

时间:2017-10-13 13:03:48

标签: javascript openid-connect keycloak

关于帐户关联的Keycloak documentation,我需要从访问令牌中提取用户会话ID 客户会话ID

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

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

1 个答案:

答案 0 :(得分:3)

将其视为客户端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编码哈希网址友好(即'+'和'/'替换为' - ','_'也删除任何尾随'='字符)