协议映射器在 Keycloak 中如何工作?

2024-02-18

我正在尝试一个示例来将用户属性添加到声明中。我正在按照这个例子here https://www.baeldung.com/keycloak-custom-user-attributes。我正在尝试访问过滤器中的声明,但没有成功。

我想了解协议映射器在幕后如何工作,即来自该协议的那些声明如何以及以何种顺序添加到令牌中。


在 Keycloak 中,协议映射器的功能是除了 Keyloack 默认添加的声明之外,还向 JWT 添加其他声明。

不同的协议映射器将有不同的选项,但对于大多数选项,您可以选择将这些映射器将生成的声明添加到:

  • ID令牌;
  • 访问令牌;
  • 用户信息;

我想了解协议映射器背后的工作原理 场景。

粗略地说,将会发生以下情况:JWT 基本上是基于特定的编码 JSON 对象standard https://www.rfc-editor.org/rfc/rfc7519, Keycloak 创建该对象已登记的索赔 https://www.rfc-editor.org/rfc/rfc7519#section-4.1 (e.g., Issuer, Subject等等),然后它将应用自定义声明(i.e.,协议映射器)到那个暂时的对象按您为给定协议映射器定义的优先级顺序排列。

最终结果(i.e.,令牌)将是一个带有默认声明的 JWT,并且带有通过协议映射器添加的声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

协议映射器在 Keycloak 中如何工作? 的相关文章

随机推荐

  • 在 Javascript for 循环声明中声明 var

    我确定我已经阅读过有关此问题的讨论 但找不到 简而言之 在循环声明内声明 for 循环的增量是否有缺点 这有什么区别 function foo for var i 0 i lt 7 i code 和这个 function foo var i
  • 如何模拟图像上传到Google App Engine Blobstore

    我正在使用 create upload url 将图像上传到 GAE blobstore uploadURL blobstore create upload url upload 为了对gae代码进行单元测试 您可以模拟图像上传吗 或者我应
  • Ehcache 与静态地图缓存实现

    我有几个表 其中的条目很少 并且它们永远不会动态更改 所以我想将整个表缓存在内存中以减少数据库的负载 我可以通过静态地图并将地图填充到静态块中轻松实现这一点 我想知道 Ehcache hibernate 是否可以以更有效的方式实现同 样的功
  • 在 data.table 中多次使用 :=

    我经常发现自己使用以下方法进行一长串链式计算 在同一个数据表上 例如 像这样的东西 test data table 1 10 1 10 1 10 1 10 test V1 V1 2 test V2 V1 V2 test V3 V2 V3 t
  • 使用 jQuery / AJAX 解码 JSON

    我正在尝试使用 jQuery 解码 JSON 这是我得到的结果 例如一个班级 这里有一个学生 Students Name John Grade 17 TotalClass 17 TotalCount 1 这就是我所做的 j ajax typ
  • 哪些 Web 框架和语言的开发时间最短?

    我正在尝试将一些网络开发想法付诸实践 不幸的是 我将是唯一的开发人员 因此我专注于获得一个良好的可调试 可测试的设置 以便我可以快速开发应用程序 您会推荐哪些语言 开发风格和框架来实现快速开发 上次我检查 RoR 是下一件大事 但那是很久以
  • 无法单独构建 Flutter Web 和 Flutter Mobile 应用

    我正在构建一个 flutter 项目 并且在将 Web 和移动代码集成到单个项目中时遇到问题 我想在我的移动代码中使用 Moor 和 Moor FFI 但即使我的 web main dart 和移动代码 main dev dart 的入口点
  • 使用 Flask-Session 扩展在 Flask 会话中未设置密钥

    现在我正在使用 Flask 第三方库Flask 会话 https flask session readthedocs io en latest 我没有运气让会议正常进行 当我连接到我的网站时 出现以下错误 运行时错误 会话不可用 因为没有密
  • 是否可以使用迭代器将向量分成 10 个组?

    I have let my vec 0 25 collect
  • g++版本兼容性

    这是一个特定的海湾合作委员会相关问题 我有一个用 g 4 1 2 编译的库 我想提供给用户 用户可以在他们的代码中使用我们的 API 并链接我们的库来创建最终的可执行文件 我的问题与 g 版本兼容性有关 我们的一些用户使用 g 4 4 3
  • 如何在同一域中托管我的 API 和 Web 应用程序?

    我有一个Rails API 和一个Web 应用程序 使用express 彼此完全分开且独立 我想知道的是 我必须单独部署它们吗 如果我这样做 我怎样才能使我的 api 处于mysite com api和网络应用程序mysite com 我见
  • 如何在 Haskell 的 TChan 上的生产者/消费者情况下限制生产者?

    我们有一些东西在 TChan 上倾销值 然后由消费者处理这些值 但消费者无法跟上 因此当生产者在通道上倾倒大量内容时 我们会使用大量内存 但消费者却无法跟上 如果通道队列达到一定大小或某种程度 是否有一种直接的方法让生产者阻塞 以便我们可以
  • Xcode 调试器将 Swift 字典报告为空(po reports {})

    当我等到 Xcode 6 1 1 在该行之后遇到断点时 let metrics leading 15 0 size 44 0 然后输入po metrics调试器报告 延迟几秒后 这似乎是错误的 po metrics count报告2 哪个是
  • Map[..] 上的 Scala map() 比 mapValues() 慢得多

    在我编写的 Scala 程序中 我有一个scala collection Map将字符串映射到一些计算值 详细来说是Map String Double immutable Map String Double Double 我知道这很丑 应该
  • 如何修复此错误:“ImportError:DLL 加载失败:找不到指定的模块。”使用 PyQt5

    我目前使用 Python 3 6 8 和 PyQt5 我的程序运行良好 但在 Windows 更新后 一切都停止运行 这是错误 Traceback most recent call last File main py line 10 in
  • 从 Zingchart 中的 CSV 数据获取系列和值

    While creating mixed chart in Zingchart we can pass the type attribute values with values array But I m not sure when re
  • Ruby 中的时间范围?

    我想知道某个时间是否属于schedule或其他 就我而言 用于计算time is in 夜间时间表 or 正常时间表 我已经找到了这个解决方案 NIGHT 21 00 06 00 def night date date str date s
  • 如何在 Visual Studio Code 中将 python 作为主模块运行

    如何在 Visual Studio Code 中运行 python主模块 从命令行我会使用 m开关 比如 python m program py 我需要这个才能使相对导入工作 有什么我可以添加到的launch json file 如果这是不
  • git svn fetch '运行上下文时出错:软件导致连接中止...'

    几个月前 我 GIT 克隆了一个大型 SVN 存储库 6GB 大约 10 个分支 3 年的每日日志 克隆花了很多小时才完成 多次停止 不得不继续git svn fetch 与此同时 由于其他项目变得更加优先 SVN 到 Git 的迁移被搁置
  • 协议映射器在 Keycloak 中如何工作?

    我正在尝试一个示例来将用户属性添加到声明中 我正在按照这个例子here https www baeldung com keycloak custom user attributes 我正在尝试访问过滤器中的声明 但没有成功 我想了解协议映射