rest - 将 SAML 响应从 Web 应用程序传递到 REST API 以进行身份​​验证?

标签 rest authentication saml adfs loopback

我们有一个 网络应用 使用 REST API . REST API 基于 Loopback 并使用其内置的基于 token 的身份验证。对于 Web 应用程序,我们使用基于表单的 HTTPS 身份验证,因此用户必须输入他的用户名和密码,然后我们使用这些用户名和密码通过 POST /users/login 从 REST API 获取访问 token 。端点。

我们的一位客户要求我们支持 单点登录 (SSO) 身份验证通过 SAML 2.0 AD FS .

我们将 Web 应用程序配置为服务提供商(AD FS 中的依赖方)并设法为其支持 SSO。变化的部分是 Web App 和 REST API 之间的身份验证。现在的想法是将 Web App 和 REST API 配置为相同的依赖方并添加新的 POST /users/saml-login REST API 的端点,因此 Web 应用程序可以向该端点发送 SAML 响应,并根据 SAML 响应中指定的声明获取访问 token 。其他一切都应该像以前一样工作。这是我想象的流程:

  • Web App 生成 SAML 请求并将用户重定向到 IdP 登录页面
  • 成功登录后,用户将通过 SAML 响应重定向回 Web 应用程序
  • Web 应用程序充当代理并将 SAML 响应重定向到 REST API 端点 ( POST /users/saml-login ),在此对其进行验证
  • 如果 SAML 响应有效,则 API 会根据声明返回访问 token
  • Web 应用程序使用访问 token 与 REST API 进一步通信,与以前相同

  • 这是问题:以这种方式实现基于 SAML 的 SSO 是否可以?您认为这种方法有任何问题或安全考虑吗?有没有其他选择?

    我在网络上阅读了很多文章,并在 StackOverflow 上阅读了有关如何一起使用 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

  • 他们都没有真正帮助我确认或拒绝上述想法。

    最佳答案

    这听起来是一个合理的方法。我想不出任何安全问题。
    您只需在应用程序内部重新发布 SAML 响应以进行处理。只要您随后对 REST API 中的 SAML 响应和断言执行各种安全检查,就不会有任何问题。

    关于rest - 将 SAML 响应从 Web 应用程序传递到 REST API 以进行身份​​验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54723627/

    相关文章:

    rest - 带有 REST API 空回复的 OTRS Webservice curl

    java - Spring MVC @PathVariable 被视为 @RequestParam

    Android检查用户之前登录,否则开始登录 Activity

    github - 通过 GitHub API 访问链接的 SAML 身份

    wcf - WCF RESTful 服务的基于声明的身份验证

    php - Alamofire 和 Codeigniter RESTful 服务器

    java - 客户端监听 JMS 队列在架构上是错误的吗?

    hadoop - Beeline 无法使用 NOSASL 身份验证模式连接到 HiveServe2(旧客户端)

    python 请求登录认证

    java - WS-Federation 主动请求者配置文件 SOAP 请求