SAML是OASIS制定的一种安全性断言标记语言,它用于在复杂的环境下交换用户的身份识别信息。在SAML诞生之前,如果想在Websphere、Weblogic和SunONE等之间实现SSO,我们必须分别实现一个适配层,来达成一种相互理解的协议,在该协议上,产品能够共享各自的用户认证/授权信息。SAML诞生之后,我们免去了这种烦恼。可以预计,将来大部分产品都可以实现基于SAML的联邦服务。
事实上,SAML已经在很多商业/开源产品中得到实现,包括:
IBM Tivoli Access Manager
Weblogic
Oblix NetPoint
SunONE Identity Server
Baltimore, SelectAccess
Entegrity Solutions AssureAccess
Internet2 OpenSAML
Yale CAS 3
Netegrity SiteMinder
Sigaba Secure Messaging Solutions
RSA Security ClearTrust
VeriSign Trust Integration Toolkit
Entrust GetAccess 7
SAML背后是强大的商业联盟和开源联盟,尽管Microsoft迟迟未能在SAML2.0观点上达成一致,但它也正努力跟进SAML标准化过程,由此可见SAML协议已经是势在必行。
1 SAML的基本概念
理解SAML的概念很重要,个人认为SAML协议的原理跟CAS/Kerberos很类似,理解上不存在困难,但SAML引入了一些新的概念名词,因此要先把握清楚这些概念。
断言,这个在SAML的”A”,是整个SAML协议中出现的最多的字眼,我们可以将断言看作是一种判断,并且我们相信这种判断,因此,做出断言的一方必须被信赖。校验来自断言方的断言必须通过一些手段,比如数字签名,以确保断言的确实来自断言方。
SAML目标是让多个应用间实现联邦身份(IdentityFederation),提起联邦,大家可以想象一下欧盟,欧盟国家之间的公民都具有一个联邦身份,比如Peter是法国公民,John是比利时公民,这两个公民的身份都能够互相被共享,恰好,张三是一个中国公民,但他能像Peter和Jhhn那样随意进入欧盟国家,显然不能,因为它不具有欧盟联邦身份。