我一直在研究这个话题,但没有太多运气。
方案: 1.使用标准表单身份验证登录Web应用程序。 2.从Web应用程序登录到SAML依赖方。
问题: 我想过使用iFrame对SAML依赖方进行身份验证。此方法的基本问题是,在完成SAML身份验证流程后,我需要将持久身份验证令牌传输回我的Web应用程序客户端(此令牌用于后续访问我的Web应用程序到SAML依赖方)。
提前致谢,
斋门
答案 0 :(得分:0)
您提出的问题是一个基本的联邦问题。就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 for AuthN并接收SAML断言。同样,这是关于AuthN和SAML断言中信息的一次使用。
另一种架构是利用IdP服务器的OpenID Connect(OIDC)。主要区别在于令牌可以存在很长时间并用于后续的安全API事务。
在安全性方面,所有这些协议在为各自的架构正确集成时都具有内置的安全性。
答案 1 :(得分:0)
据我所知,问题是:他的应用程序是一个想要访问受保护且需要基于SAML的身份验证的资源的消费者。
您可以在后台自动进行身份验证,但之后您必须处理双方的CORS(身份提供商和服务提供商)。 您的方法更容易,因为它是用户启动的操作,因此CORS不是必需的。 对于您的问题:听起来您的令牌是标题的一部分,作为具有特定名称的特殊标题。在您的情况下更好的方法(如果可能):在Cookie中存储此令牌。在您的方法中,cookie应该在不同的帧之间共享。然后,您的应用程序可以在访问资源时发送cookie。但请注意:使用Javascript& XMLHTTPREQUEST您需要设置“withCredentials”。