【发布时间】:2019-02-18 05:50:37
【问题描述】:
我们有一个使用 REST API 的 Web 应用程序。 REST API 基于 Loopback 并使用其内置的基于令牌的身份验证。对于 Web 应用,我们通过 HTTPS 使用基于表单的身份验证,因此用户必须输入他的用户名和密码,然后我们使用这些用户名和密码通过POST /users/login 端点从 REST API 获取访问令牌。
我们的一位客户要求我们通过 SAML 2.0 和 AD FS 支持单点登录 (SSO) 身份验证。
我们将 Web 应用程序配置为服务提供者(AD FS 中的依赖方)并设法为其支持 SSO。 changeling 部分是 Web App 和 REST API 之间的身份验证。现在的想法是将 Web App 和 REST API 配置为同一个依赖方,并将新的POST /users/saml-login 端点添加到 REST API,因此 Web App 可以向该端点发送 SAML 响应并获得基于访问令牌在 SAML 响应中指定的声明上。其他一切都应该像以前一样工作。这是我想象的流程:
- Web 应用程序生成 SAML 请求并将用户重定向到 IdP 登录页面
- 成功登录后,用户将通过 SAML 响应重定向回 Web 应用程序
- Web 应用充当代理并将 SAML 响应重定向到对其进行验证的 REST API 端点 (
POST /users/saml-login) - 如果 SAML 响应有效,API 会根据声明返回访问令牌
- Web 应用程序使用访问令牌与 REST API 进行进一步的通信,与以前一样
问题来了:以这种方式实施基于 SAML 的 SSO 是否可行?您是否发现此方法存在任何问题或安全注意事项?有其他选择吗?
我已经阅读了很多关于如何同时使用 SAML 和 REST API 的网络文章和 StackOverflow 上的问题:
- Propagate SAML Assertion Response/Security Context to downstream Services/Apps
- REST API authentication with SAML
- SAML and back-end REST service authentication
- Attacking SSO: Common SAML Vulnerabilities and Ways to Find Them
他们都没有真正帮助我确认或拒绝上述想法。
【问题讨论】:
-
我也有类似的情况。您能否让我们知道它是否对您长期有效?
-
嗨@VishalPatel,是的,它对我有用。我可以看到你一年多前发表了评论。你呢。它也对你有用吗?
标签: rest authentication saml adfs loopback