【问题标题】:Authenticate service for both applications and API microservices为应用程序和 API 微服务验证服务
【发布时间】:2017-07-03 10:34:00
【问题描述】:

我有一个node 服务器,带有用于 SaaS 应用程序的 express。 node/express 应用程序服务于公司登陆页面、注册或用户、身份验证、用户和密码更改。这都是用node/express 构建的。使用passport 完成身份验证。

当用户登录时,他会被重定向到使用Reactreact-routeRedux 构建的仪表板应用程序(SaaS 应用程序本身)。 Redux 需要调用node/express API,目前在同一个node/express 服务中。

这些 API 也将被使用 React Native 开发的移动应用程序使用。

我们希望将服务分成不同的节点模块,一个用于 SaaS 应用程序,另一个用于处理公司页面、注册等。向微服务架构迈进。

我们的疑问是如何处理用户身份验证。我们需要一个单一的身份验证机制,允许用户使用React SaaS 应用程序,并且还可以为移动应用程序提供服务。

如果用户从 Web 登录,他可以通过 API 使用 SaaS 应用程序。如果他是从手机登录的,他可以使用手机上的 API。

这是我们第一种拆分服务器的方法,想找出解决认证问题的推荐方法。当然,如果我们可以将身份验证服务拆分为另一个微服务,那将非常有趣。

提前感谢您的帮助。

【问题讨论】:

  • 你考虑过使用 JWT 吗?
  • 还不知道。请指教。

标签: node.js reactjs authentication react-native microservices


【解决方案1】:

看看以做这种事情为生的身份验证提供商。 auth0Stormpath 是两个例子,但还有更多。

使用他们的 API 设置应用并将其插入 express。完成此过程后,您将更好地了解您可能需要哪些功能以及您需要在 API 中实现哪些功能才能使用它们。

在审查结束时,要么使用其中一项服务,要么通过Passport.js 实现所需功能的精简版本。

【讨论】:

  • 看到 Auth0 解决了所有的身份验证问题,但我不知道如何在多个系统中进行一次身份验证。我是否应该存储一个 JWT 并在调用可用应用程序时传递它 - 比如 SaaS 应用程序?
【解决方案2】:

我解决这个特殊问题的一种方法是使用Auth0 和 JWT。

用户使用Auth0 Lock 登录,然后我的网络应用程序将JWT 存储在本地存储中。这将在每个 ajax 请求的标头中传递给服务器。服务器负责验证每个请求的 JWT。为了在 React Native 应用程序中推出此功能,可以对 react-native-lock 使用相同的方法。

关于 Passport,它看起来有 JWT libs,这可能意味着您不需要依赖 Auth0 之类的东西。

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2012-04-09
    • 2020-04-23
    • 2014-11-27
    • 2018-01-06
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多