将Web应用程序的SAML响应传递给REST API进行身份验证?

问题描述 投票:0回答:1

我们有一个使用REST API的Web App。 REST API基于Loopback并使用它内置的基于令牌的身份验证。对于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 App生成SAML请求并将用户重定向到IdP登录页面
  2. 成功登录后,用户将使用SAML响应重定向回Web应用程序
  3. Web App充当代理,并将SAML响应重定向到REST API端点(POST /users/saml-login),并在其中进行验证
  4. 如果SAML响应有效,则API会根据声明返回访问令牌
  5. Web App使用访问令牌与REST API进行进一步的通信

这是一个问题:以这种方式实现基于SAML的SSO是否可以?您是否看到此方法存在任何问题或安全注意事项?还有其他选择吗?

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

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

rest authentication saml adfs loopback
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.