2

我们正在构建一个公共 API,使用此 API 的客户端需要进行身份验证,我们建议OAuth2 API为此目的公开一个。

但是,我们还需要联合身份验证,因此我们看到客户端OAuth 2与我们的 API 交谈,而我们的 APIOAuth1/2SAML2后台与身份提供者交谈。

完整的流程是:

  1. 客户端将 OAuth2 与我们的 API 对话。
  2. 在此流程开始时,我们的 API 将客户端重定向到“选择您的联合提供商”HTML 页面。
  3. 在选择提供者时,我们的 API 与提供者进行 OAauth1/2 对话,将任何重定向传递回客户端,因此用户可以提供登录详细信息。
  4. 我们的 API 将访问代码交换为访问令牌和刷新令牌(API 保持这些私有,并且即使客户端离线也可以使用它们)。
  5. 我们的 API 生成访问代码并将其传递给客户端。
  6. 客户端将访问代码交换为访问令牌。

提供者提供的访问令牌/刷新令牌由 API 在后台使用,例如保持 Google 日历最新,而不是传递给客户端。

我还没有找到任何使用 API 完成此操作的示例。那么,为 API 服务提供联合身份验证的既定模型是什么?

4

1 回答 1

0

查看 Ping Identity 在其OAuth Essentials 页面上提供的一些信息。具体来说,有一份题为“基于标准的移动应用程序 IdM 架构白皮书”(免费 w/注册)的白皮书讨论了如何使用 SAML + OAuth 来保护需要联合的本地移动应用程序. [注意:我为 Ping 工作]。它列出了解决此用例以及其他 OAuth 相关案例所需的信息流和令牌交换。

HTH-伊恩

于 2012-12-06T20:33:30.050 回答