以下是不同的情况:
我的微服务A接收通过API网关并携带有效访问令牌的最终用户发起的请求(JWT,其作用域/声明对应于最终用户:用户名、id、电子邮件、权限等)。这个案子没问题。微服务拥有处理请求的所有信息。
第一个问题:如果微服务A需要调用微服务B会发生什么?
例如,微服务B中被调用的方法需要用户id才能工作。用户id值可以设置为查询字符串。如果使用用户访问令牌调用该方法,则微服务B可以验证查询字符串中的用户id值是否等于JWT令牌中的用户id值。如果使用服务访问令牌调用该方法,则微服务B无法验证查询字符串值,需要信任微服务A。
对于这个cas,我从OAuth2中听说了“令牌交换”草案。这个想法很有趣。它允许微服务A将用户访问令牌转换为另一个权限较小但为微服务A伪造的访问令牌。
第二个问题:如果微服务A向RabbitMQ推送消息,而微服务B接收到此消息,会发生什么?
你怎么看?还有其他更好的解决办法吗?
提前谢了。
挺直截了当的。总有两个用例我们将称为最终用户和App2App。总是要两样都搞定。
考虑一个简化的体系结构:
Internet
User ----------------> Service A +-------> Service B
HTTP request |
+-------> Service C
假设用户通过令牌进行了身份验证。jwt
或其他任何东西都不重要。
Internet
User ----------------> Service A +-------> Service B --------> SQL Database
HTTP request |
+-------> Service C --------> Kafka Queue
|
|
Service X <--------------+
Service Y <--------------+
Service Z <--------------+
传递JWT用户令牌不适用于不能在最终用户基础上工作的中间件。尤其是数据库和队列。
数据库不处理基于最终用户的访问(队列也有同样的问题)。它通常需要专用的用户名/密码或SSL证书进行访问,这两个证书在数据库实例之外都没有任何意义。对每个表的访问是完全的读/写或只读,不可能有精细权限(有行级权限的概念,但让我们忽略它)。
因此,服务B和服务C需要分别获得对SQL数据库和Kafka队列具有写权限的功能帐户。
我有一个移动(本机)和Web应用程序(SPA),它与后端微服务(在核心2.0中开发)对话,以进行身份验证/授权和其他与域相关的功能,该功能已使用Opendi的配置。这两个应用程序都获得了访问令牌。我遇到的问题是,所有微服务都应该接受无记名访问令牌和登录用户的身份验证/授权(中央身份验证服务),在身份验证微服务中生成的访问令牌(开放身份验证2.*)。那么,我在微服务中缺少哪些更改,其中REST AP
我们正在尝试找出IPC身份验证和授权的最佳实践。我会解释的。我们有一个基于微服务的体系结构SaaS和一个专门的认证服务。该服务负责执行身份验证和管理身份验证令牌(JWT)。 现在的问题是如何验证和授权由其他服务发起的请求(没有特定用户的上下文)? 我们是否应该为每个服务生成一个专用用户,并像对待系统中的任何其他用户一样对待它(具有适当的权限)? 我们是否应该在服务之间部署“硬编码”/动态令牌? 还
在微服务中构建身份验证有几种方法。然而,使用JWT令牌和OAuth协议以及OpenID连接标识层是非常流行的。 在本教程解释如何实现这一目标时,有一个提示: 另一方面,我看到Ping标识也使用按引用传递的方法。你能帮我理解背后的道理吗?
我要找的是一些别人如何解决这个问题的建议/经验。如果需要,我很乐意提供更多的信息。 为了让您更容易地给出建议,这里有两个选择的简短描述:1)使用JWT处理身份验证和授权?为什么?2)保持JWT的轻量级,并在每个微服务中向授权服务器发出请求?为什么?
问题内容: 是否可以在Android应用程序中使用JAAS? 在android API 中,该包的大多数类都在说 旧版安全代码;不使用。 但是,Android上以用户为中心的JAAS可以替代吗?或者,如果我手动部署,可能会起作用吗? 问题答案: JAAS并不真正适用于Android。JAAS为基于Java的应用程序提供了以用户为中心的安全性(身份是通常正在运行应用程序的“用户”,例如LDAP用户I