我想使用 NodeJS、Mongo 和 JWT 构建身份验证/授权服务。该服务将是一个微服务,它不仅在允许请求之前处理来 self 的 API 网关的请求,而且还处理来自可能想要检查身份验证和角色的其他服务的请求。我假设所有其他服务都将使用此 Auth 服务来验证 JWT 以及角色等。
任何人都可以为我指出可以帮助我了解如何使用 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/