keycloak - 从 Keycloak 登录:如何从 KEYCLOAK_IDENTITY/KC_RESTART cookie 获取承载令牌
问题描述
我有一个在 ReactJS 上运行的 UI 应用程序。对于登录,我们将其重定向到 keycloak 登录页面。
- 在keycloak登录页面提供用户名和密码后,
- 我看到 KEYCLOAK_IDENTITY/KC_RESTART 已设置。
- 我也在 JWI.IO 网站上验证了 KEYCLOAK_IDENTITY cookie。它显示了以下详细信息
{“cid”:“abc-client”,“pty”:“openid-connect”,“ruri”:“https://10.10.10.10:3001/”,“act”:“AUTHENTICATE”,“notes”: { “范围”:“openid”,“iss”:“https://10.10.10.10:8445/auth/realms/abcrealm”,“response_type”:“代码”,“redirect_uri”:“https://10.10. 10.10:3001/”,“状态”:“879b6182-dca0-495c-8644-5b2ac032b5e4”,“nonce”:“1e263181-2313-45ea-962a-175fd58c6d75”,“response_mode”:“片段”} }
- 现在我的问题是:如何从这个“KEYCLOAK_IDENTITY”cookie 中获取不记名令牌。我需要不记名令牌来对 REST API 进行所有下一次授权检查,因为每个用户都有不同的角色,并且只有在他们的个人资料具有特定角色时才能执行操作。
换句话说,我只想检查/验证提供的 KEYCLOAK_IDENTITY 令牌在配置文件中是否具有有效角色。
解决方案
使用 keycloak-js 验证登录。使用 keycloak config json 初始化 keycloak。确保您提供公共客户端的配置(不需要秘密)。初始化后,keycloak 对象将同时具有 token 和 tokenParsed。它还具有许多其他有用的功能。检查他们的文档。
import Keycloak from 'keycloak-js';
const keycloak = Keycloak('/keycloak.json');
keycloak.init({
onLoad: 'login-required',
}).then((authenticated) => {
if (authenticated) {
const token = keycloak.token;
const tokenParsed = keycloak.tokenParsed;
}
}
推荐阅读
- php - 有没有办法让我的 Favicon 以 chrome 显示?
- python - 如何遍历文件夹,但只检索最新版本的文件?
- python - 如何从从该矩阵生成的列表中获取矩阵中元素的索引?
- machine-learning - 使用提早停止时对助推轮数施加限制?
- python - 如何在 Windows 上使用 Selenium 和 Python 启动 Brave 浏览器
- php - 在 PHP 中从 JSON 获取单个项目
- django - Django ModelChoiceField 编辑时未填写
- spring - Spring Batch 处理问题出现在 RowMapper?
- python - 获取 AttributeError:“str”对象没有属性“strftime”,可能是什么问题?
- node.js - 如何将缓冲区图像上传到 cloudinary?