在微服务中使用 json Web 令牌进行会话管理

2024-03-30

我试图弄清楚如何在微服务架构中使用 json Web 令牌来管理会话。

看看这个设计article http://nordicapis.com/how-to-control-user-identity-within-microservices/我目前的想法是客户端将发送一个首先通过防火墙的请求。该请求将包含防火墙发送到授权服务器的不透明/参考令牌。授权服务器使用包含用户所有会话信息的值令牌进行响应。然后,防火墙将请求与值令牌一起传递给 API,然后值令牌将传播到满足请求所需的所有不同微服务。

我有两个问题:

  1. 应如何处理价值令牌中会话信息的更新?详细来说,当令牌中的会话信息更新时,需要在授权服务器中更新它。每个更改令牌的服务都应该与授权服务器通信吗?
  2. 所有微服务都应该使用这个单一令牌来存储其会话信息吗?或者每个服务都有一个个性化的令牌会更好吗?如果是后者,请说明如何调整设计。

这种设计的一个非常(!)重要的“美中不足”......这需要你提前仔细思考......是:“正是what是指‘会话’信息。”在这个架构中,“每个人都是racing和其他人一起。”如果会话信息是updated,您不知道也基本上无法(!)知道哪些代理知道该更改,哪些代理不知道。更复杂的是,新请求异步到达,并且会以不可预测的方式与其他请求重叠。

因此,授权服务器必须是这样的……仅此而已。它验证了(验证...)不透明令牌,并提供请求内容的可信描述授权的去做。但是,它所蕴含的信息基本上是无法改变的。具体来说,它不能在中保存“会话状态”数据网络服务器这个词的意义。

每个微服务提供商都必须维护自己的“托管板”*(我的术语......“Web 服务器中自己的特定子集将是‘会话池’”),并且它是理想的但不总是feasible其董事会将独立于其他董事会。几乎可以肯定,它必须使用中央数据库(带有事务)来与其他类似情况的服务提供商进行协调。尽管如此,如果事实是这些“手提包”中的任何一个的内容与其他任何一个“手提包”都存在因果关系,那么它们之间现在就存在不同步的问题。

尽管微服务架构具有一定的学术吸引力,但恕我直言,设计必须是小心经过研究以确定它们实际上与这种方法兼容。

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

在微服务中使用 json Web 令牌进行会话管理 的相关文章

随机推荐

  • chrome 中奇怪的颜色过渡行为

    我目前正在开发一个多主题应用程序以及 css 的过渡color 属性未按预期工作 在 Chrome 中 它不是立即将过渡应用于每个元素 而是根据元素的深度以某种方式延迟 我已经测试过该脚本 84 0 4124 1 官方版本 canary 6
  • Go 中有 uint64 文字吗?

    我正在看数字类型 https golang org ref spec Numeric types在围棋中 我想使用 uint64 文字 这在 Go 中可能吗 这是我想如何使用 uint64 文字的示例 for i 2 i lt k i 1
  • 仅替换整个单词,而不替换单词

    我试图仅替换整个单词 但我的脚本替换了该单词的所有区分大小写的实例 这是我的代码
  • 循环遍历 NSDictionary 以创建单独的 NSArray

    我有一个大NSDictionary我需要循环并创建单独的NSArrays 以下是内容 id text sub text text thumb url text title text 2010 2011 type
  • 如何为 iPad 创建表单弹出窗口 (iOS 8.1)

    我想使用 Swift 8 1 和演示文稿类型 Form Sheet 制作非常基本的弹出窗口 它应该是一个漂浮在屏幕中间的窗口 没有故事 我创建了两个视图控制器 一个按钮 并使用参数 Present As Popover 将按钮从一个控制器连
  • 从没有分支的分离提交中获取代码

    我有一个不在分支中的提交 它包含我所有的最新工作 我需要将其添加到主分支 我怎样才能做到这一点 git status显示这个 detached from b225b49 master saved work 如果我会失去它吗git check
  • 实现从 .net winforms 应用程序将文件拖到桌面吗?

    我有一个文件列表 其名称位于列表框中 其内容存储在 SQL 表中 并希望我的应用程序的用户能够选择列表框中的一个或多个文件名并将它们拖到桌面 从而生成桌面上的实际文件 我找不到任何有关如何执行此操作的文档 任何人都可以解释或指出解释吗 稍后
  • Scala 何时需要匿名函数和扩展函数的参数类型?

    Scala编译器什么时候真正需要匿名函数参数的类型信息 例如 给定这个函数 def callOn T R target T f T gt R f target 那么我不能像这样使用它 callOn 4 toString gt error m
  • 如何安装和使用 Apache Velocity?

    我已经安装了Apache服务器2 4和Ant 1 8 3 我已经下载了Velocity 1 7和Velocity工具2 0 我已经阅读了 Apache Velocity 的安装文档大约十遍 并且 Google 了两天 我仍然不知道如何处理这
  • ngOnInit 在 APP_INITIALIZER 完成之前启动

    APP INITIALIZER 运行一系列嵌套的承诺 我尝试过订阅 结果没有任何差异 APP INITIALIZER 在从 API 服务器检索数据之前需要进行身份验证 它还需要从 API 服务器拉取两个表 按顺序 在 api service
  • 手电筒打开时 AVCaptureSession 冻结

    我们的 iOS 应用程序具有条形码扫描功能 客户可以根据需要打开和关闭手电筒 在 iPhone X 上 且仅在 iPhone X 上 当 AvCaptureSession 运行且手电筒启用时 屏幕上的视频捕获会冻结 一旦手电筒再次关闭 视频
  • Django:一种更干燥的方法来防止编辑/删除对象?

    读完Django的权限文档后 我还是一头雾水 我想阻止用户编辑或删除他们不拥有的对象 我是这样写的并且有效 在views py中 def deleteReward request reward id reward get object or
  • C++ 中的浮点变量

    我正在学习C 并在一个简单的程序中遇到这些问题 所以请帮助我 这是代码 include
  • 捕获页面重定向的下载链接 (WGET)

    这是我的问题 我目前正在为我编写一个脚本 该脚本可以自动下载一些我用来 清理 计算机的软件 我已经能够使用如下下载 URL 进行下载 https www driverscloud com plugins DriversCloud Win e
  • C++ 单击红色 X 时防止控制台窗口关闭

    我正在开发一个简单的 C 控制台应用程序 没有类和对象 有没有任何方法或功能可以防止单击红色 X 按钮时控制台关闭 我正在使用 Visual Studio C Express 2010 一个简单的控制台应用程序 仅包含 main cpp 文
  • 保存 matplotlib 动画时遇到问题[重复]

    这个问题在这里已经有答案了 我正在使用 matplotlib 制作动画热图 我的数据在一个文本文件 rs h 中 有 3 列 x y z 我使用散点图制作一个简单的热图 然后使用动画包随着时间的推移更新热图 import pandas as
  • 如何使用 powershell 删除 SSL 绑定

    I use Remove WebBinding Port Port Protocol https删除 Web 绑定 这将从关联站点中删除绑定 但绑定仍然存在 我可以在下面找到一个条目IIS SslBindings但未分配给任何站点 如果我尝
  • Wcf 类公共属性与 get;set 属性

    当我创建一个 wcf 类时 我经常这样做 DataContract Public class Customer DataMember public string Name get set 有人告诉我这样做更好 DataContract Pu
  • 如何在 Java Response 对象中返回 JsonArray

    我正在尝试实现基于 java 的 web 服务服务器 它返回 Json 和基于 java 脚本的 web 服务客户端 这是我的java部分 Path myapp Consumes MediaType APPLICATION JSON Pro
  • 在微服务中使用 json Web 令牌进行会话管理

    我试图弄清楚如何在微服务架构中使用 json Web 令牌来管理会话 看看这个设计article http nordicapis com how to control user identity within microservices 我