2007年12月4日星期二

JavaSecurity_007:SAML 介绍 (摘录+整理)

SAML:Secure Assertion Markup Language 安全性断言标记语言。
SAML 是一种基于XML开发的用来在互联网上交换安全信息的框架。它可以实现不同的安全服务系统之间的互操作性,它提供了一种机制使得可以在不同的安全服务系统之间交换认证和授权信息。但它本身并不定义新的认证与授权的机制,它只是定义了用于安全服务之间传输安全信息的交换机制。
目前,SAML主要被用来解决SSO(单点登陆)和Web服务安全问题。
所谓安全性断言,即判定用户身份的语句。断言不容怀疑,无需证明。在SAML中,发布断言的站点叫“源站点”,接收断言并信任该断言的站点叫“ 目标站点”。

由于“目标站点”无条件地信任“源站点”发出的断言,因此必须要保障站点之间的通信安全。SAML使用了SSL和X.509,不仅加密了站点之间的通信,还保证了站点之间的身份验证。

应用场景实例说明
在本示例场景中,用户使用用户名和口令登录源站点。然后,用户希望无需再次验证即可访问目标站点。
第4步中的SAML请求,将使用HTTP SOAP消息格式从目标站点到源站点发送。
发送的消息类似于:

返回的消息类似于:
其中断言部分类似于:
案例发展:为了进一步提高安全性,公司决定使用指纹验证,如果在每个站点都安装同样的指纹验证设备,公司显然要多投资。同时,应用程序提供商不得不权衡提供该支持的成本和不提供该支持可能丢失客户的风险。而通过SAML,只需改变源站点的验证方式,目标站点不做任何改动,目标站点甚至不知道源站点的验证方式改变了,因为断言信息没有发生任何变化。

没有评论: