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

时间:2015-09-30 15:25:10

标签: javascript security authentication saml opensaml

我一直在研究这个话题,但没有太多运气。

方案: 1.使用标准表单身份验证登录Web应用程序。 2.从Web应用程序登录到SAML依赖方。

问题: 我想过使用iFrame对SAML依赖方进行身份验证。此方法的基本问题是,在完成SAML身份验证流程后,我需要将持久身份验证令牌传输回我的Web应用程序客户端(此令牌用于后续访问我的Web应用程序到SAML依赖方)。

。有人可以评论这是否是正确的方法(明智的安全性)?

。是否有另一种方法可以将基于Web的客户端验证到配置为SAML依赖方的系统?

提前致谢,

斋门

2 个答案:

答案 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”。