我们正在构建一个公共 API,使用此 API 的客户端需要进行身份验证,我们建议OAuth2 API
为此目的公开一个。
但是,我们还需要联合身份验证,因此我们看到客户端OAuth 2
与我们的 API 交谈,而我们的 APIOAuth1/2
在SAML2
后台与身份提供者交谈。
完整的流程是:
- 客户端将 OAuth2 与我们的 API 对话。
- 在此流程开始时,我们的 API 将客户端重定向到“选择您的联合提供商”HTML 页面。
- 在选择提供者时,我们的 API 与提供者进行 OAauth1/2 对话,将任何重定向传递回客户端,因此用户可以提供登录详细信息。
- 我们的 API 将访问代码交换为访问令牌和刷新令牌(API 保持这些私有,并且即使客户端离线也可以使用它们)。
- 我们的 API 生成访问代码并将其传递给客户端。
- 客户端将访问代码交换为访问令牌。
提供者提供的访问令牌/刷新令牌由 API 在后台使用,例如保持 Google 日历最新,而不是传递给客户端。
我还没有找到任何使用 API 完成此操作的示例。那么,为 API 服务提供联合身份验证的既定模型是什么?