node.js - 寻找 JWT Auth 微服务示例

标签 node.js authorization jwt microservices

我想使用 NodeJS、Mongo 和 JWT 构建身份验证/授权服务。该服务将是一个微服务,它不仅在允许请求之前处理来 self 的 API 网关的请求,而且还处理来自可能想要检查身份验证和角色的其他服务的请求。我假设所有其他服务都将使用此 Auth 服务来验证 JWT 以及角色等。

希望这张图能更好地解释我正在寻找的东西。 enter image description here

任何人都可以为我指出可以帮助我了解如何使用 NodeJS 执行此操作的资源吗?

最佳答案

如果您只有一个客户端应用程序,那么您可以执行以下步骤

  • 制作一个用于生成 jwt token 的身份验证微服务。

  • jwt 在其有效负载中包含所有基本用户信息,即 Role、UserId 等。

  • jwt token 将在每个授权请求的授权 header 中发送。

  • 在处理任何请求之前,您可以使用中间件验证和解码 jwt token 。现在您可以轻松地在 req 对象中设置用户的信息,并且可以轻松地在您的 Controller 中访问用户角色及其 ID。

  • 如果 token 无效,那么您可以在中间件中抛出错误,它会提供未经授权的 json 响应。

  • 您可以调用身份验证 api 来验证和解码您的 token ,或者您可以在中间件的每个微服务中编写 3 到 4 行代码。

这里有一些jwt示例实现的链接,您应该按照上面的步骤自定义这些示例代码。

5-steps-to-authenticating-node-js

authenticate a nodejs api with json web tokens

如果您有多个客户端应用程序

  • 您应该使用提供单点登录解决方案的 openid connect 标准来验证具有相同用户名和密码的多个应用程序。

  • here是一个 openid connect Playground ,用于了解授权流程。

关于node.js - 寻找 JWT Auth 微服务示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47007159/

相关文章:

node.js - 用 Mongoose 填充后如何聚合

node.js - 删除node.js中的文件不起作用

javascript - 无论如何有一个for循环等到一个间隔被清除

mysql - 如何在与sequ​​elize Node 的关系上使用having子句

spring-security - 独立 Spring OAuth2 JWT 授权服务器 + CORS

.net - 保护 NamedPipes WCF 服务的最简单方法?

oop - 面向对象的登录功能

api - 使用 Python 的 Spotify API 授权代码流

java - 使用 JWT (java-jwt) 验证签名

java - Auth0 JWT java 库随机抛出错误