API 服务器访问第三方移动应用程序以及用户身份

API server access to third party mobile applications along with User identification

我必须使用 Auth0 为 NodeJS 微服务设计一个 IAM 解决方案。 Objective是为了让第三方移动应用用户访问这个微服务。

我了解 OAuth 和 OpenID 连接解决方​​案,一个简单的解决方案是第三方应用程序作为客户端使用客户端凭据工作流访问 APIs。

我必须设计的解决方案是允许用户使用连接到我们的 Auth0 服务器的企业 IdP 进行登录和身份验证。这样我们就可以实现用户级别的授权和访问控制。

同时,客户应用程序需要与 Auth0 服务保持无关。 我的意思是,客户不应该被要求在他们的应用程序中添加任何逻辑来容纳我们的 Auth0 域,就像我们在第一方 React 应用程序中那样。用户一旦登录到客户应用程序,也应该通过使用 SSO 功能访问我们的 API。我已经阅读了一些关于使用我们的 Auth0 服务器充当 SAML SP 配置客户 IdP 的文档。我仍然不明白这是怎么回事,Auth0 会在这种情况下创建 OAuth 访问令牌。

我意识到这需要一个应用程序来连接客户的移动应用程序和我们的 API 服务。尽管如此,我还是无法理解各个组件之间的数据流和通信。

另外,我不确定这是普遍情况还是要求?如果是,是否有任何技术术语?这看起来不像是标准的 B2B 场景。

have to design an IAM solution .. , I am not able to understand data flow and communication between various components ..

在回答之前,答案会指出所问的具体问题,不一定能满足您的所有需求。 SO 并不是真正用于编写教程或搜索文档。实现一个 IdP(实际上是一个安全模块),需要做功课并了解细节。

也许使用现成/开箱即用的解决方案可能会很有趣。使用 KeyCloak 等开源 IAM,WSO2IS 可以快速启动。或者AWS Cognito、IBM AppId、Azure AD等云服务也是可行的解决方案

a client using client credentials workflow .. access toked received by our API should be for user logged in

client credentials 授权仅用于验证应用程序。就是这样。

要对用户进行身份验证,需要其他授权类型。对于用户身份验证,最常见的选项是 authorization code or the implicit 授权。 implicit grant 有其弱点,正在被 code grant 与 PKCE 取代(只需搜索它)。

End requirement is users of 3rd-party application not required to login again while 3rd-party application fetches data from our API .. Configuring their IdP (most probably Active directory) and our Auth0 servers for the same is all I need to understand

我看到最常用的两个选项:

1.联合 SSO 身份验证

这是最常用的选项。外部(第 3 方)IdP 配置为“受信任”的联合 IdP。当您有一个服务提供商允许使用其他 IdP 登录时,您经常会看到这种情况,通常是社交网络(FB,Google,...)

登录流程如下:

  1. 客户端通过提供商(您的)的 IdP(我们称之为 IdP1)进行授权。
  2. IdP1 现在充当 IdP2(合作伙伴的 IdP)的服务提供商并请求授权(将用户重定向到 IdP2)。
  3. 用户已通过 IdP2 进行身份验证和授权。如果用户已经通过身份验证,IdP2 不需要再次询问用户的凭据,这就是 SSO 在这个级别上的工作方式
  4. IdP2 returns 到 IdP1(作为服务提供商)。
  5. IdP1 读取用户信息(使用 id_token,userinfo 服务 - 假设一直使用 OAuth2/OIDC 协议,还有其他协议)并构建自己的用户级令牌。它可能会也可能不会创建本地用户(称为 用户配置)。
  6. IdP1 returns 到客户端,客户端可以请求用户级令牌。

然后客户端可以使用 API 提供商信任的令牌调用 API 服务。

2。 OAuth 授权授权断言框架

此选项建立在Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants之上,它是OAuth2协议的可选扩展。我称此为 代币兑换服务

基本上,令牌服务可以验证受信任(合作伙伴)IdP 的访问或 ID 令牌,并根据提供的用户信息发布自己的令牌。


如您所见,有很多信息,要构建安全的解决方案,您需要确保所有步骤都得到妥善保护(签名、过期、发行人、有效性、受众、主题域……都经过验证) .免责声明 - 作为我的工作,我们实施 IAM/IDM 解决方案,如果走捷径,很多事情都会出错。因此,您可能真的会考虑使用开箱即用且经过验证的解决方案。