据我所知,IDP和SP之间的通信在标准中有明确定义。我想知道在独立SP和实际应用程序之间进行自定义通信的方法是什么。
我认为标准方式存在,而不是重新发明轮子我自己。但即便spring-saml security
也只谈及自定义机制"没有说出它是什么。
有人能向我指出正确的方向吗?我已经搜索过,但我很惊讶它没有写在任何地方的博客,教程等等。甚至在Shibboleth / Gluu文档中,这部分也不知何故。
任何帮助都将不胜感激。
答案 0 :(得分:1)
问题基本上归结为“如何在受信任的网络中部署的两个应用程序可以安全地相互通信,以便交换有关用户的安全信息”。这是SAML针对通过不受信任的网络进行通信的应用程序所解决的相同问题,并且由于认证点(SP)和应用程序都在同一实体的控制之下而变得更容易=例如,它是更容易使用symetric加密。 SP原则上可以使用前端通道(=通过Web浏览器)或后端通道(=通过网络直接相互之间)与应用程序通信。
有不同的方式来执行通信(使用一个,另一个或两个通道),大多数可以使用一些可用的安全产品来实现。以下是一些想法:
SP和应用程序共享同一个域(=用户的Web浏览器在共享cookie的URL上访问它们)
SP可用作应用程序的HTTP代理
SP和应用程序可以使用标准身份验证机制来传递身份验证数据
每个选项可能具有不同的攻击媒介和可能的漏洞。
我的观点是,将SAML功能直接添加到应用程序中,使用支持SAML的HTTP代理,或处理SP与应用程序(例如OpenAM)之间的最后一英里身份验证的标准产品是最好的方法。实现自定义安全机制似乎很容易,但是存在很多错误,导致整个解决方案容易受到攻击。