将SAML响应从Web应用传递到REST API进行身份验证?

时间:2019-02-16 13:36:20

标签: rest authentication saml adfs loopback

我们有一个使用 REST API Web应用。 REST API基于回送,并使用其内置的基于令牌的身份验证。对于Web App,我们使用基于HTTPS的基于表单的身份验证,因此用户必须输入其用户名和密码,然后我们才能使用这些用户名和密码通过POST /users/login端点从REST API获取访问令牌。

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

我们将Web App配置为服务提供商(AD FS中的依赖方),并设法为其提供SSO支持。变化的部分是Web App与REST API之间的身份验证。现在的想法是将Web App和REST API都配置为相同的依赖方,并将新的POST /users/saml-login端点添加到REST API,以便Web App可以向该端点发送SAML响应并获得访问权限基于SAML响应中指定的声明的令牌。其他所有内容都应该像以前一样工作。这是我想象的流程:

  1. Web应用程序生成SAML请求,并将用户重定向到IdP登录页面
  2. 成功登录后,用户将通过SAML响应重定向回到Web应用
  3. Web应用充当代理,并将SAML响应重定向到经过验证的REST API端点(POST /users/saml-login
  4. 如果SAML响应有效,则API会根据声明返回访问令牌
  5. 与以前一样,Web App使用访问令牌与REST API进行进一步通信

这里是一个问题:以这种方式实现基于SAML的SSO是否可以?您是否发现此方法有任何问题或安全方面的考虑?有其他选择吗?

我在网上阅读了很多文章,并在StackOverflow上阅读了有关如何一起使用SAML和REST API的问题:

他们中没有一个真的帮助我确认或拒绝上述想法。

1 个答案:

答案 0 :(得分:1)

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