微服务中的服务器到服务器通信

2024-03-23

我正在研究微服务架构,但我在这方面面临一些挑战。

首先让我向您简要介绍一下架构。

  1. 用户登录并获取签名令牌,该令牌将用于调用所有 REST API。

  2. 将会有很多 API 服务器,其中 API 使用 Spring 安全性进行保护,并根据用户角色进行授权。

  3. 服务必须相互交互才能获取/更新信息。

  4. 每个服务都有权通过身份验证服务器验证令牌问题。

问题:-

  1. 如果用户登录并使用相同的令牌并将其传递给经过验证的每个服务,则一切正常。因此,在传递令牌时,服务不需要相互信任。

  2. 现在的问题是,有些服务需要在不登录的情况下从服务器本身调用。比方说服务器到服务器的调用。服务如何验证和授权来自其他服务的调用。

我读到了有关 Spring 微服务的内容,但 Zuul 也不是这里的救世主,因为每个 API 服务器都嵌入了 Spring Security,而不仅仅是 API 网关。

一种解决方案是每个服务都有自己的具有某些角色的默认用户,用于加入 -> 获取令牌 -> 使用令牌调用其他服务器 api。

您能否给我一些服务器到服务器调用的指针,其中每个服务器都使用 spring security 进行身份验证和授权。

Thanks.


在 OAuth2 中,有一个专用于服务器到服务器授权的流程(客户端凭据授予流程)。调用服务是第二个(资源服务器)的常规客户端,因此它必须获取令牌并使用它。

简而言之,客户端告诉授权服务器他是谁(使用其客户端id/app id),授权服务器给它一个令牌,该令牌可用于查询资源服务器。

我有法语资源here http://www.bubblecode.net/fr/2016/01/22/comprendre-oauth2/#Lrsquoautorisation_serveur_serveur_Client_Credentials_Grant,序列图是英文的,应该会有帮助。您可以轻松找到有关此流程的更多信息。

有关 Spring Security 的具体内容,请参阅spring-security-oauth2 文档 http://projects.spring.io/spring-security-oauth/docs/oauth2.html.

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

微服务中的服务器到服务器通信 的相关文章

  • Hibernate 挂起或引发延迟初始化,没有会话或会话已关闭

    我正在增强旧的 Spring Hibernate 应用程序 但我陷入困境 我有一种方法可以读取 3000 多行长的文件 每行都有一条记录 必须与数据库中的某些内容进行比较 然后必须将寄存器添加到数据库 多对多表 表和关系是 Branch h
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 创建一个 JSON 对象以在 Spring Boot 测试中发布

    我想编写基本测试来使用 JSON 负载在 users URL 上执行 POST 请求来创建用户 我找不到如何将新对象转换为 JSON 到目前为止有这么多 这显然是错误的 但解释了目的 Test public void createUser
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • C# 和 Node.js/crypto 的常见加密/解密代码示例

    我尝试在 IIS 中使用应用程序请求路由 ARR 将一组路径传递到 Node js 网站 我的问题是能够在任一侧获取 设置身份验证票证 我真的需要一个简单的加密 解密对示例 该示例适用于 C 和 Node js 几乎开箱即用 并且两者的结果
  • 在存储过程中嵌入 html 代码

    我们这里似乎有一些开发人员认为创建输出 HTML 或 Javascript 代码的存储过程是合法的事情 在我看来 这是对关注点分离模型的最终滥用 人们经常看到人们在做这样的事情吗 尤科 有几个问题 无法为应用程序 换肤 转移到全新的演示文稿
  • 为什么这个执行无效指针初始化的程序在 C 中编译得很好?

    我写了一个简单的C程序 我原以为它会编译失败 但不幸的是它在C中编译并运行良好 但在C 中编译失败 考虑下面的程序 include
  • 运行 jest 时设置 env 变量

    我在我的上定义了这个变量main ts const mockMode process env MOCK MODE 我只是创建一个测试并将此变量设置为 true 但在主要方面没有得到 true but false describe onBoo
  • WCF通用字典和理解WCF

    好吧 我在解决某个特定问题时遇到了很大的困难 通过服务传输对象 从概念上讲 这是有道理的 我认为 据我所知 除非明确定义 否则无法序列化泛型 所以我想提供我的例子 我根本无法去上班 意思是 我确信还有其他人也遇到过一些困难 当您提供帮助时是
  • 如何在未提升的情况下启动流程

    我的应用程序运行为requestedExecutionLevel set to highestAvailable 如何在未提升的情况下运行进程 我尝试了以下方法 但没有成功 Process Start new ProcessStartInf
  • 正确修复 Java 10 抱怨 jaxb-impl 2.3.0 进行非法反射访问的问题?

    我们正在考虑将一些遗留代码升级到 Java 10 由于 JAXB 默认情况下不可见 编辑 正确的长期解决方案是not使用各种 JVM 标志来规避该症状 但正确修复它 我已将此代码段添加到我的 pom xml 中
  • Mongodb 中将字段乘以值

    我一直在寻找一种方法来创建更新语句 该语句将采用现有的数字字段并使用表达式对其进行修改 例如 如果我有一个名为 Price 的字段 是否可以进行更新 将 Price 设置为现有值的 50 所以 给定 Price 19 99 我想做db co
  • indexOf 查找字符串中某个单词的所有出现位置

    我正在尝试使用 indexOf 查找句子中出现的所有字符 the 例如 如果句子是 那天我去了那里 则应返回 3 我能够做到这一点 直到找到第一个索引 但我不确定如何编写循环 我最初有一个 for 循环来搜索整个字符串 但它返回完整的字符串
  • 是否有工具可以可视化实时 Spring 应用程序上下文? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何工具可以获取完全构建 连线的 Spring 应用程序上下文并导出它的可视化 我说的是一个实时上
  • 如何将 C++ lambda 传递给需要函数指针和上下文的 C 回调?

    我正在尝试在使用标准函数指针 上下文范例的 C API 中注册回调 该 API 如下所示 void register callback void callback void void context 我真正想做的是能够注册一个 C lamb
  • SQL Server Filestream - 删除“速度”

    我第一次使用文件流数据类型 SQL Server 2008 当我进行一些快速插入 删除时遇到了问题 基本上 即使我手动调用垃圾收集器 文件实际从文件系统中删除的速度也比插入 删除速度慢得多 据我所知 CHECKPOINT 应该调用垃圾收集器
  • KAFKA 重启问题:在不删除 /tmp/kafka-logs 的情况下无法重启 kafka

    每当我尝试重新启动 kafka 时 都会出现以下错误 一旦我删除 tmp kafka logs 它就会得到解决 但它也会删除我的主题 有办法解决吗 ERROR Error while deleting the clean shutdown
  • Vim 自动生成 ctag

    现在我有以下内容 vimrc au BufWritePost c cpp h ctags R 这有几个问题 它很慢 为自上次标记生成以来未更改的文件重新生成标记 我必须按下输入按钮again写入文件后 因为不可避免的 按 Enter 或键入
  • Java 8 流:java.lang.IllegalStateException:结束大小 84758 小于固定大小 84764

    我在用Java 8 streams用于将映射值转换为数组的 API 我收到以下异常 Unhandled exception ScheduledExecutorService java lang IllegalStateException E
  • 检查 NSDate 是本周还是下周

    有没有办法检查 NSDate 是本周还是下周 我知道今天是 NSDate date 然后我该怎么办 使用 NSDateComponents 如下所示 NSCalendar gregorian NSCalendar alloc initWit
  • 将 .Net Core Web-API 迁移到 AWS Web Api 网关

    我有一个使用 Net Core 开发的 Web API 它有几个端点 GET POST 要求是将其移至 AWS API Gateway 该 Web API 是使用分层架构构建的 它有一个与 Db 层通信的业务层 该层拥有一些实体框架存储库
  • 如何使用 jax-rs 进行分段/表单文件上传?

    特别是 RESTeasy 如果 对于单个文件 有一个像这样的方法签名那就太好了 public void upload FormParam name FormParam file file InputStream 可行吗 还是我在做梦 似乎没
  • 将数据帧转换为向量(按行)

    我有一个包含像这样的数字条目的数据框 test lt data frame x c 26 21 20 y c 34 29 28 我怎样才能得到下面的向量 gt 26 34 21 29 20 28 我能够使用以下方法获得它 但我想应该有一种更
  • 微服务中的服务器到服务器通信

    我正在研究微服务架构 但我在这方面面临一些挑战 首先让我向您简要介绍一下架构 用户登录并获取签名令牌 该令牌将用于调用所有 REST API 将会有很多 API 服务器 其中 API 使用 Spring 安全性进行保护 并根据用户角色进行授