当前位置: 首页 > 知识库问答 >
问题:

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

薛欣荣
2023-03-14

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

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

我们将Web应用程序配置为服务提供商(AD FS中的依赖方),并设法为其支持SSO。变化的部分是Web应用程序和REST API之间的身份验证。现在的想法是将Web应用程序和REST APIhtml" target="_blank">配置为同一个依赖方,并向REST API添加新的登录endpoint,以便Web应用程序可以向该endpoint发送saml响应,并根据saml响应中指定的声明获取访问令牌。其他一切都应该像以前一样工作。以下是我想象的流程:

  1. Web App生成SAML请求并将用户重定向到IdP登录页
  2. 成功登录后,用户将被重定向回具有SAML响应的Web应用
  3. Web App充当代理并将SAML响应重定向到REST APIendpoint(POST/users/SAML login),在那里进行验证
  4. 如果SAML响应有效,API将根据声明返回访问令牌
  5. 与之前一样,Web应用程序使用访问令牌与REST API进行进一步通信

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

我在网上读了很多文章,这里有关于StackOverflow如何使用SAML的问题

  • 将SAML断言响应/安全上下文传播到下游服务/应用程序
  • 使用SAML进行REST API身份验证
  • SAML和后端REST服务身份验证
  • 攻击SSO:常见SAML漏洞及其查找方法

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


共有1个答案

扈德容
2023-03-14

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

 类似资料:
  • 我有一个普通的ASP。NET Web应用程序,我使用应用程序服务将其部署到Azure中。在部署它之后,我启用了应用程序服务身份验证并配置了Azure Active Directory。这使我能够发布我的Web应用程序,并具有身份验证,因此只有属于Active Directory的人员才能登录。 另一方面,我部署了一个ASP。NET Web API作为云服务。Web应用程序应该加载一些信息,调用We

  • 我已经设置了一个广告2016安装。现在打算使用它对web应用程序(java)进行身份验证。我有一段用于测试身份验证的代码,并有一些观察。 现在我在以下场景中测试了用户/密码组合- //第一个组合,user1存在于AD中并且密码正确(测试经过身份验证的绑定)。字符串userid=“user1@domain.com”,password=“user1password”;预期:身份验证成功。实际:身份验证

  • 我需要在我们的Web应用程序中使用LDAP/AD服务器实现SSO身份验证和验证用户。Web应用程序是使用Spring(Java)/Hibernate制作的,应用程序服务器是UAT中的Jboss和生产中的Webphere。 我正在寻找一些好的简单的解决方案,可以帮助我实现它,从几个朋友那里听说华夫饼是一个很好的解决方案,但是在网上搜索并尝试了几天之后,我不确定我是否朝着正确的方向前进。我在这方面很幼

  • 我有一个Java桌面应用程序。我发现了很多关于web应用SSO身份验证的在线资源。我需要一个旧的学校桌面应用程序同样的东西。基本上,我需要该应用程序打开浏览器窗口,让用户根据ADF进行身份验证,然后取回令牌。 如何使用ADFS/SAML添加SSO身份验证?

  • 我正在尝试访问一个我在Azure上托管并用Azure AD保护的API应用程序。 对于API应用程序,我已经设置了App Service Authentication=Azure Active Directory“Express”管理模式。 在“Classic”门户中,我在AD下创建了几个应用程序。一个用于API应用程序,另一个用于Web应用程序。对于Web应用程序,我在API应用程序的“对其他应