当前位置: 首页 > 知识库问答 >
问题:

微服务体系结构中的授权/认证

邰昀
2023-03-14
    null
    null

myApp应用程序不能直接访问用户数据库,所有通信都只能通过用户认证微服务处理。

在过去的一周里,我广泛阅读了关于REST API中的授权/身份验证的内容,但仍然不知道如何为User->myApp和MyApp->User-Authentication微服务构建一个可靠的授权/身份验证系统。

这是我现在想出来的。

    null
  1. Now, user signs in sending username/password to myApp
  2. myApp sends username/password to User-Authentication Microservice which verifies username/password
  3. If username and password are correct, User-Authentication Microservice generates API Key (random string) and saves it to Users Database, associating this API Key with the user record:
    username | password | email | address | APIKEY
    ---------+----------+-------+---------+-----------
    steve    | n8Y5e... | ...   | ...     | D4ED43...   
    
    sessionID: 9w72tv3MHZD...
    
    session_data: {
      "cookie": {
        "originalMaxAge": ...,
        "expires": ...,
        "httpOnly":true,
        "path": ...
      },
    
      "user": {
        "authenticated": true,
        "username":"steve",
        "apiKey": D4ED43C0...,        
        "created": ...
      }
    }
    
    expire: ...
    
      null
      null

    问题是:我做错了吗?我该改什么?我以前从未为API构建过身份验证,因此我将非常感谢任何建议。我想了解“大局”。

共有1个答案

李和昶
2023-03-14

您应该使用基于令牌的身份验证。你的流程应该是这样的:

1-用户在您的身份验证微服务中注册。

2-用户向认证微服务发送用户名和密码,并接收承载令牌。

 类似资料:
  • 我正在开发应用程序使用微服务架构。需要实施安全保障。 所以我计划使用3个服务来实现这一点。 API网关 用户服务 订单服务 步骤1:客户端向API网关发送用户名和密码以获取令牌。API Gateway应该调用Users Service来验证CRED,如果CRED是有效的,API Gateway创建一个令牌并将其发送给客户端。 步骤2:客户端尝试使用令牌访问订单服务(API网关在步骤1中发送了令牌)

  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 我最近读了不少关于微服务的文章,尤其是关于AuthN和Authz的文章。在很大程度上,这一切都很有意义,我可以看到这一切应该如何工作。 (注意--现在我只实现了客户端凭据授予和资源所有者密码凭据授予,因为我只是想看看它是如何工作的,而且用curl调用它们更容易。但我不知道这有什么不同)

  • 总而言之,我们有: 产品类别: 产品ID、产品名称 订单类别: 订单ID、产品ID、用户ID、订单日期 这些方法中的任何一种可以被认为是最佳实践吗?还是有不同的解决方案?

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。 但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列) 那么如何解决呢。 感谢提前