Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Web应用程序作为客户端向SAML依赖方进行身份验证_Javascript_Security_Authentication_Saml_Opensaml - Fatal编程技术网

Javascript 如何使用Web应用程序作为客户端向SAML依赖方进行身份验证

Javascript 如何使用Web应用程序作为客户端向SAML依赖方进行身份验证,javascript,security,authentication,saml,opensaml,Javascript,Security,Authentication,Saml,Opensaml,我研究这个话题已经有一段时间了,运气不太好 情景: 1.使用标准表单身份验证登录到Web应用程序。 2.从Web应用程序登录到SAML依赖方 问题: 我考虑使用iFrame对SAML依赖方执行身份验证。这种方法的基本问题是,在完成SAML身份验证流之后,我需要将持久性身份验证令牌传输回我的Web应用程序客户端(该令牌用于我的Web应用程序对SAML依赖方的后续访问) . 是否有人可以评论这是否是正确的方法(安全方面)? . 对于配置为SAML依赖方的系统,是否有另一种验证基于web的客户端的方法

我研究这个话题已经有一段时间了,运气不太好

情景: 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断言。同样,这是关于SAML断言中信息的AuthN和一次性使用

另一种架构是利用来自IdP服务器的OpenID Connect(OIDC)。主要区别在于令牌可以长期存在并用于后续的安全API事务


关于安全性,所有这些协议在为各自的体系结构正确集成时都内置了安全性。

据我所知,问题是:他的应用程序是一个消费者,希望访问一个安全的ressource,需要基于SAML的身份验证

您可以在后台自动进行身份验证,但随后必须处理双方(身份提供商和服务提供商)的COR。 您的方法更简单,因为它是用户启动的操作,因此不需要CORS。
解决您的问题:听起来您的令牌是标题的一部分,是具有特定名称的特殊标题。在您的情况下更好的方法(如果可能的话):将此令牌存储在Cookie中。在您的方法中,cookie应该在不同的帧之间共享。然后,应用程序可以在访问资源时发送cookie。但是请注意:使用Javascript和XMLHTTPREQUEST,您需要设置“withCredentials”。

如果我理解您的问题,您正在描述IDP启动的SSO:。我之所以这样假设,是因为您编写了“使用标准表单身份验证登录到Web应用程序”——因此听起来应用程序就像是IDP。然而,你的问题让我困惑:你可能想检查一下“依赖方”的定义