【TechTarget中国原创】简介
SAML(安全断言标记语言)是一种用来在安全域之间交换身份认证和授权数据的基于XML的标准。SAML是OASIS安全服务技术委员会的一个产品。最重要的一个问题是SAML是为了解决Web浏览器单点登陆的问题而产生的。但是,SAML1.1就这个目的而言是有局限的,事实上,SAML1.1通过使用SAML作为WS-Security令牌,更有效地解决的问题是SOAP Web服务的身份认证和授权。有用的技术会找到相应的办法,以一些自然的方式适应广泛的技术前景。例如,Kerberos曾是苦命的DCE(分布式计算环境)不可分割的一部分,虽然DCE已经明显地沉寂了很久,但Kerberos还是成为了微软的核心安全组件。
SAML 2明确包含了用于解决Web浏览器进行多网站验证问题的新特性。现在,关于SAML,是否保持1.版本还是转到2.0版本,很多组织都正处于“左右为难的处境”。
新近一个项目的准备阶段将涉及保证门户应用安全和使用SAML来实现SSO的相关Web应用,在与客户接洽前我通常做得是——向我的个人专家列表发邮件,并对SAML进行调查。对我来说迎面而来的问题是关于这个主题缺乏实质性文档。
调查,结论和建议
一些同行推荐了一篇由Vikrant Sawant 发表在http://www.oracle.com/technology/pub/articles/dev2arch/2006/12/sso-with-saml.html上
的名为《用WebLogic Server 9.2中的SAML来配置单点登陆》的文章。虽然这篇文章有点过时,但它对这个有几分神秘色彩的技术领域仍然具有开创性的贡献。我第一次读它是在一年半前,当时我正参与一个在SOA环境内,使用SAML实现SSO的项目。
虽然本文是一个SAML入门有效例子,但基于下面这些原因,它没有为现实的实施提供指导:
- 一个用作IdP(身份提供者)的Oracle WebLogic实例,而不是更倾向于企业级访问的管理应用。
- 既用作IdP又用作服务提供商(SP)的本地LDAP实例,而不是“虚拟用户”。
- 由此产生的SAML断言不包括“组”的属性,它需要提供RBAC(基于角色的访问控制)。
- 问题检测需要的不仅仅是对源服务器和目标服务器的日志分析,而且要支持应用服务器的调试和SAML信息的过滤。
- 可信任伙伴密钥和证书的配置不只是需要配置一个私钥。
- 要在一个独立环境下配置安全模型,而不是在可感知的集群,和生产型的环境下。
本文的目的是提供一个如何在企业范围的平台上构架和实现SAML安全的概览。