将 SAML 响应从 Web 应用程序传递到 REST API 以进行身份验证?
Pass SAML response from a Web App to the REST API for authentication?
我们有一个使用 REST API 的 Web 应用程序。 REST API 基于 Loopback 并使用其内置的基于令牌的身份验证。对于 Web 应用程序,我们通过 HTTPS 使用基于表单的身份验证,因此用户必须输入他的用户名和密码,然后我们使用这些用户名和密码通过 POST /users/login
端点从 REST API 获取访问令牌。
我们的一位客户要求我们通过 SAML 2.0 和 支持 单点登录 (SSO) 身份验证AD FS.
我们将 Web 应用程序配置为服务提供商(AD FS 中的依赖方)并设法为其支持 SSO。 changeling 部分是 Web App 和 REST API 之间的身份验证。现在的想法是将 Web 应用程序和 REST API 配置为相同的依赖方,并将新的 POST /users/saml-login
端点添加到 REST API,以便 Web 应用程序可以发送 SAML 响应到该终点并根据 SAML 响应中指定的声明获取访问令牌。其他一切都应该像以前一样工作。这是我想象的流程:
- Web 应用程序生成 SAML 请求并将用户重定向到 IdP 登录页面
- 成功登录后,用户将被重定向回带有 SAML 响应的 Web 应用程序
- Web 应用充当代理并将 SAML 响应重定向到验证它的 REST API 端点 (
POST /users/saml-login
)
- 如果 SAML 响应有效,API returns 一个基于声明的访问令牌
- Web 应用程序使用访问令牌与 REST 进行进一步通信API 与以前相同
问题来了:这样实现基于SAML的SSO可以吗?您是否发现这种方法有任何问题或安全注意事项?还有其他选择吗?
我在网上阅读了很多文章,在 Whosebug 上阅读了很多关于如何一起使用 SAML 和 REST API 的问题:
- 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
None 确实帮助我确认或否定了上述想法。
这听起来是个合理的方法。我想不出任何安全问题。
您只需在应用程序内部重新发布 SAML 响应以供处理。只要您随后在 REST API 中对 SAML 响应和断言执行各种安全检查,就不会有任何问题。
我们有一个使用 REST API 的 Web 应用程序。 REST API 基于 Loopback 并使用其内置的基于令牌的身份验证。对于 Web 应用程序,我们通过 HTTPS 使用基于表单的身份验证,因此用户必须输入他的用户名和密码,然后我们使用这些用户名和密码通过 POST /users/login
端点从 REST API 获取访问令牌。
我们的一位客户要求我们通过 SAML 2.0 和 支持 单点登录 (SSO) 身份验证AD FS.
我们将 Web 应用程序配置为服务提供商(AD FS 中的依赖方)并设法为其支持 SSO。 changeling 部分是 Web App 和 REST API 之间的身份验证。现在的想法是将 Web 应用程序和 REST API 配置为相同的依赖方,并将新的 POST /users/saml-login
端点添加到 REST API,以便 Web 应用程序可以发送 SAML 响应到该终点并根据 SAML 响应中指定的声明获取访问令牌。其他一切都应该像以前一样工作。这是我想象的流程:
- Web 应用程序生成 SAML 请求并将用户重定向到 IdP 登录页面
- 成功登录后,用户将被重定向回带有 SAML 响应的 Web 应用程序
- Web 应用充当代理并将 SAML 响应重定向到验证它的 REST API 端点 (
POST /users/saml-login
) - 如果 SAML 响应有效,API returns 一个基于声明的访问令牌
- Web 应用程序使用访问令牌与 REST 进行进一步通信API 与以前相同
问题来了:这样实现基于SAML的SSO可以吗?您是否发现这种方法有任何问题或安全注意事项?还有其他选择吗?
我在网上阅读了很多文章,在 Whosebug 上阅读了很多关于如何一起使用 SAML 和 REST API 的问题:
- 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
None 确实帮助我确认或否定了上述想法。
这听起来是个合理的方法。我想不出任何安全问题。 您只需在应用程序内部重新发布 SAML 响应以供处理。只要您随后在 REST API 中对 SAML 响应和断言执行各种安全检查,就不会有任何问题。