如何使用Web应用程序作为客户机对SAML依赖方进行身份验证
How to authenticate to a SAML relying party using a Web Application as a client
我研究这个话题已经有一段时间了,没有多少运气。
场景:1. 使用标准表单身份验证登录到Web应用程序。2. 从Web应用程序登录到SAML依赖方。
问题:我考虑使用iFrame对SAML依赖方执行身份验证。这种方法的基本问题是,在完成SAML身份验证流之后,我需要将一个持久的身份验证令牌传输回我的Web应用程序客户机(这个令牌用于我的Web应用程序对SAML依赖方的后续访问)。
。有人能评论一下这是否是正确的方法(安全方面)吗?
。是否有另一种方法可以对配置为SAML依赖方的系统进行基于web的客户端身份验证?
提前感谢,
Saimon
你问的问题是一个基本的联邦问题。就SAML而言,有一个身份提供者(IdP)和一个服务提供者。IdP负责对用户进行身份验证,并向SP web应用程序发出SAML断言。在您的问题中,听起来您的应用程序是希望向SP web应用程序发出SAML断言的IdP(我将您的SAML依赖方解释为SP web应用程序)。请记住,SAML断言专注于一次性使用SP web应用程序的身份验证,其中SAML断言可以包含用于AuthZ的属性。
另一种架构是集成第三方SAML IdP,这样你的应用程序是一个SP,另一个应用程序也是一个SP。两个SP web应用程序都将使用IdP进行AuthN并接收SAML断言。同样,这是关于AuthN和SAML断言中信息的一次性使用。
另一个架构是利用来自IdP服务器的OpenID Connect (OIDC)。主要区别在于令牌可以长期存在,并用于后续的安全API事务。
关于安全性,所有这些协议在为各自的体系结构适当集成时都内置了安全性。
问题是,据我所知:他的应用程序是一个想要访问安全资源的消费者,需要基于SAML的身份验证。
您可以在后台自动进行身份验证,但随后您必须处理双方的CORS(身份提供者和服务提供者)。您的方法更简单,因为它是用户启动的操作,因此不需要CORS。针对您的问题:听起来您的令牌是头的一部分,作为具有特定名称的特殊头。在您的情况下(如果可能的话),更好的方法是:将这个令牌存储在Cookie中。在您的方法中,cookie应该在不同的帧之间共享。然后你的应用程序可以在访问资源时发送cookie。但是要注意:使用JavascriptXMLHTTPREQUEST你需要设置"withCredentials"
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将本地依赖项添加到npm项目中
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- jquery中的复选框依赖项
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 单元测试依赖关系没有被嘲笑
- 依赖<选择>HTML和JavaScript菜单
- FRP 中 EventStreams 的循环依赖关系
- 节点模块依赖关系
- 使用多个依赖项加载只进行一次AJAX调用
- 限制npm依赖模块's require(隔离)的用法
- 公共第一方客户端的适当OAuth2流
- AngularJS依赖注入定时问题
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- 在Meteor中使用具有依赖关系的NPM包
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 依赖于缓慢加载javascript的UI
- 如何使用Web应用程序作为客户机对SAML依赖方进行身份验证