SAAS 应用的身份集成及访问
平台开发组
| 修订日期 | 版本号 | 变更记录 | 修订描述 | 修订人 |
|---|---|---|---|---|
| 2008-04-12 | 1.0 | 文件初稿建立 | 付伟 |
1 引言
1.1 编写目的
本文档详细的阐述了基于SAAS 模式的应用系统在接入平台过程中的用户认证系统改造及用户访问单点登录过程。目的是为了指导以后各阶段的开发,测试等工作,并作为SAAS 模式的应用系统和服务交互支撑平台进行整合的参考规范。
本文档适用于:
- 完成项目开发的编码人员。
- 完成项目的测试人员。
- SAAS 应用服务提供者。
- 平台相关模块开发人员。
1.2 背景
1.3 术语定义
SAAS:SaaS是Software-as-a-service(软件即服务)的简称,是一种按用户的需求定制的软件服务模式。
安全票据:用来识别用户身份的一种技术手段。
SAML:Security Assertion Markup Language 安全身份断言语言。
CA:Certificate Authority 证书认证机构
HTTPS:Secure Hypertext Transfer Protocol 安全超文本传输协议
LDAP:Lightweight Directory Access Protocol
SP: 本文档中指SAAS服务提供者
IDP:身份提供者,在本文档中指平台身份管理服务
1.4 参考资料
http://www.efirsta.com/
http://www.oasis-open.org/specs/index.php#samlv1.1
2 功能说明
2.1 功能概述
为使平台上的注册用户可方便的访问经注册的SAAS应用,允许用户在平台上认证一次后就可对SAAS应用进行直接访问,服务交互支撑平台采用安全票据技术对用户的身份信息进行识别与访问控制,平台与SAAS 系统间采用基于SAML 协议的认证过程,平台作为身份提供者(idp) ,SAAS系统作为身份接收者。平台使用经过验证的用户邮件地址作为用户的唯一命名标识符(也可采用身份证号等信息),作为各系统间识别用户的标识。
本部分定义了平台用户访问SAAS 应用的单点登录过程、安全票据交互的数据报文格式及SAAS应用接收票据、验证票据、使用票据的过程,并详细阐述了交互过程中的数据保密、签发不可否认及防止票据伪造的技术手段等内容。
用户直接访问SAAS服务的认证过程:
1. 用户访问SAAS 应用
2. SAAS 应用将请求重定向到平台身份认证服务
3. 平台验证用户身份,并记录用户登录状态,同时签发用户安全票据
4. 用户携带安全票据访问SAAS应用
5. SAAS 应用验证用户票据合法性
6. 用户访问SAAS应用功能
流程如下图所示:

用户从平台访问SAAS服务的过程:
1. 用户登录服务交互支撑平台。
2. 用户通过平台的链接地址,访问SAAS服务。
3. 平台验证用户身份信息,并签发SAAS访问安全票据。
4. 用户携带安全票据访问SAAS应用。
5. SAAS 应用验证用户票据合法性
6. 用户访问SAAS应用功能
流程如下图所示:

2.2 技术路线
充分结合并利用国富安pki ,数字证书,签名,加密等基础技术,定义一套开放,兼容,安全的身份信息集成格式规范。同时也充分考虑了与SAAS应用间集成的可行性与功能的可扩充性。
2.3 数据报文
2.3.1 命名标识符
平台默认使用用户的邮件地址信息作为用户的命名标识符,SAAS系统与平台间使用命名标识符识别用户身份。从可扩展性考虑,也可采用身份证号等信息作为标识符。
2.3.2 用户访问点位置
平台在签发票据中必须包含用户ip地址信息,记录用户的访问点位置,防止票据被中途截获的安全威胁。
2.3.3 用户属性信息
从扩展性考虑,平台同时支持将姓名、联系方式等信息作为用户属性统一编码传输。
2.3.4 票据的加密传输
利用rsa ,3des 等算法对交互的数据进行加密。对于安全性较高的系统需要采用底层的安全隧道ssl,tls等传输层安全保证手段。
2.3.5 签发者数字签名
票据签发者必须证明票据的签发具有唯一性,其它第三方不可以冒名进行票据签发。需要对交互的数据进行数字签名。平台对用户票据的管理建立在pki 证书的基础上,平台在向SAAS系统发送票据前,对票据信息进行了数字签名,SAAS应用必须验证签名正确后才授权用户进行系统访问。
2.3.6 票据的生存期
票据支持时间窗管理,平台签发的票据在指定的时间点内有效,超出时间窗限制的票据被作废处理。可避免非法的票据截获重放攻击。票据只能使用一次,SAAS应用实现需要缓存票据的唯一编号,发现重复的标识拒绝服务请求。
2.3.7 票据报文格式信息
票据格式如下所示:
<Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" AssertionID="_4c1b9f80fd1a074d49d22777b8d05a58" IssueInstant="2008-04-28T03:48:50.000Z" Issuer="www.efirsta.com" MajorVersion="1" MinorVersion="1">
<Conditions NotBefore="2008-04-28T03:48:49.937Z" NotOnOrAfter="2008-04-28T03:53:49.937Z"/>
<AuthenticationStatement AuthenticationInstant="2008-04-28T03:48:49.906Z" AuthenticationMethod="gfa:security:cert">
<Subject>
<NameIdentifier>abc@efirsta.com</NameIdentifier>
<SubjectConfirmation>
<ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</ConfirmationMethod>
</SubjectConfirmation>
</Subject>
<SubjectLocality DNSAddress="gfapki.com.cn" IPAddress="102.168.2.3"/>
</AuthenticationStatement>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_4c1b9f80fd1a074d49d22777b8d05a58">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="code ds kind rw saml samlp typens #default xsd xsi"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>kKw+b8lnP+OLIaZc39YOakr9/Gg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
g4kwfHagPLn04WjgDo8TDyXjVN/Z385xcOtb18sAcumP76lAK4YASAcT0CjQDjnacL+WiX2ZBY6nza0lvFul4Q==
</ds:SignatureValue>
</ds:Signature>
</Assertion>
3 SAAS 应用的集成要求
对于SAAS应用开发而言,身份认证模块需要和平台进行集成,相对于原有认证方式,和平台集成后的SAAS应用,对平台用户的身份认证将委托给平台认证服务处理,同时采用基于pki证书的信任规则,SAAS应用信任平台,经过平台数字签名的用户访问请求都认为是合法请求。
对于应用中需要的额外用户属性信息,建议在用户首次访问SAAS应用时进行补录操作。

3.1 SAAS应用的集成步骤
Saas 应用作为身份接收者需要识别平台签发的用户票据信息,并根据pki 证书的信任链规则进行票据的合法性校验,只有通过验证的票据才可被授权访问系统。
3.1.1 票据接收
用户通过平台身份认证以后,平台自动为当前访问用户签发SAAS系统访问票据,作为用户身份的标识。平台采用表单提交的方式(Post)与SAAS应用间交换用户票据信息,票据经过application/x-www-form-urlencoded 编码。在传输票据过程中,为保证数据的安全性,建议SAAS服务票据接收模块配置数字证书,采用https 加密协议访问。
3.1.2 票据验证
SAAS应用系统需要对票据的如下信息进行验证。
1. 验证票据签名信息
使用平台的数字证书,验证签名信息的正确性。
2. 验证票据接收者
主要是检查票据是发送给谁的.票据中会包含服务认证地址信息。如果不是发送给自己的票据,拒绝用户访问。
3. 验证用户访问点(ip地址)
验证用户的ip地址和票据中记录的地址是否一致。
4. 验证票据生存期
检查票据的生存周期是否有效,对于过期的票据系统拒绝访问。
3.1.3 获取用户身份标识
从票据中获取用户命名标识符信息,使用命名标识符识别用户。
3.1.4 用户系统访问
对于通过票据验证的用户进行授权访问。
3.2 SAAS应用信息注册
在对SAAS应用按照步骤进行修改以后,需要在平台(http://www.efirsta.com)上注册SAAS服务信息(包括服务名称,身份认证地址等),关于SAAS服务注册的信息与操作步骤,请访问平台门户网站获取帮助。