对于您的特定组织案例,您有一个非常广泛的架构实施问题。
我建议您遵循以下用户管理模型
使用 NodeJS + Koa + Passport 组合进行身份验证、注册和用户管理的简单 API。
您可以将 API 部署到 Heroku 并使用 Postman 测试 API。
您可以使用 NodeJS 全局错误处理程序中间件,而不必实现任何冗余的本地错误处理程序。
作为最佳实践,在允许访问 API 之前,使用节点 JWT 中间件检查从客户端接收到的 http 请求中的 JWT 令牌是否有效,如果令牌无效,则会将“401 Unauthorized”响应发送到客户。此 JWT API 授权可以在您的微服务之前在您的网关级别本身完成。
最后,Koa + Passport 用户服务包含了用户认证的核心业务逻辑,并在 node api 中使用 Koa-Redis 进行会话管理,它封装了与 mongoose 用户模型的所有交互,并公开了一组简单的方法由用户控制器。
Moroever Koa + Passport 支持使用 OpenID 和 OAuth 进行单点登录,这可以回答您与 SSO 相关的其他问题。
您也可以在这里发现 KOA 最适合微服务,因为您已经选择了它。使用相同的基础设施覆盖身份验证 + 用户管理将被证明是非常通用和可扩展的。
https://mherman.org/blog/user-authentication-with-passport-and-koa/
为了连接到外部 SSO 提供程序,您可以使用 nodejs oauth2 客户端 api,如下所示,它允许您连接节点后端以连接到外部 SSO 服务器。
https://www.npmjs.com/package/client-oauth2
对于使用 Google/Gmail 的 SSO,最好使用 google 提供的基于 SAML 的 SSO。
安全断言标记语言 (SAML) 是一个基于 XML 的框架,用于在两个实体之间进行身份验证和授权:服务提供者和身份提供者。服务提供者同意信任身份提供者对用户进行身份验证。作为回报,身份提供者会生成一个身份验证断言,表明用户已通过身份验证。
SAML 是一种标准的单点登录 (SSO) 格式。身份验证信息通过数字签名的 XML 文档进行交换。这是一个复杂的单点登录 (SSO) 实施,可实现无缝身份验证,主要是在企业和企业之间。
以下链接详细介绍了如何将 SAML/SSO 服务从您的应用程序设置到 google。
https://support.google.com/a/answer/6087519?hl=en