金色坐标

关注互联网和IT科技的个人博客

« 主题搜索引擎(垂直搜索引擎)的实现原理和方法统一认证SOAP接口示例—SAML响应格式 »

SAML协议简介和统一认证SOAP接口示例

一、SAML简介

SAML是一种基于XML开发的用来在互联网上交换安全信息的框架。SAML1.0规范是由OASIS(Organization for the Advancement of Structured Information Standards)在S2ML 和 AuthML规范的基础上提出的,并得到众多的大公司的支持。


SAML可以实现不同的安全服务系统之间的互操作性,它提供了一种机制使得可以在不同的安全服务系统之间交换认证和授权信息。但它本身并不定义新的认证与授权的机制,它只是定义了用于安全服务之间传输安全信息的交换机制。


二、SOAP API示例

此SOAP API示例来源于统一认证系统的一个对外服务接口,此接口提供的服务功能是:某一纳入统一认证管理的应用系统,向统一认证发出查询请求,用于验证来访用户身份或者权限的有效性。


应用系统方通过Web Services实现向统一认证系统的查询。为了考虑安全性,包括应用系统在统一认证系统中的注册ID及其密码。如果SAML请求使用了数字签名可以不设置密码。


应用系统向统一认证接口发送的SOAP RPC格式为:

<getAuthInfo xmlns="http://library.hj.com/samlserver">
  <request>Value_request</request>
  <clientId>Value_clientId</clientId>
  <pwd>Value_pwd</pwd>
</getAuthInfo>


可见,一共为三个参数,Value_request是一个表示SAML请求的XML文档,Value_clientId是应用系统注册的标识ID,Value_pwd是该应用系统注册时设定的和统一认证系统通信的密码。


三、SAML请求格式

下面列出一个SAML请求的实例:

<Request xmlns="urn:oasis:names:tc:SAML:1.0:protocol"
xmlns:saml= "urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2003-10-28T09:20:58Z" MajorVersion="1" MinorVersion="0" RequestID="560c2de3-5dea-48c1-9004-6bfaa1daafae">

<AssertionArtifact>5Wc6EEWcegYEK8Gx3AtDA3gPSDOCqBJrj7kaOKsI</AssertionArtifact>
<ds:Signature xmlns:ds="
http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
</ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="
http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="
http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>Zwq65AuFt9OuAD/+FeKswAjUgFs=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>n7BLXCt2YEMOmiTqMSQMksrFd+raQZ1jxmW7WIlqgkK05bcigilsvueoRMr64KdTiCsVaYmXI5BLKIN4+T2ZQw==
</ds:SignatureValue>
</ds:Signature>
</Request>


下面分析SAML请求的格式。可以将上述的例子简化为:

<Request>
  <AssertionArtifact>  </AssertionArtifact>
  <ds:Signature>   </ds:Signature>
</Request>

可见,上述例子中,<Request>节点主要包含一个< AssertionArtifact >节点,来表示请求目的是对此Artifact的查询。Artifact是一个用户在统一认证系统登录后获取的登录标识Token,此Token是用户访问各应用系统的钥匙。


<ds:Signature>节点是对整个SAML请求部分进行数字签名的,可以看到签名中包括规范化、摘要、签名的算法。<ds:Signature>节点中不包括应用系统方的数字证书,因为该证书应用系统注册时已经上载到统一认证系统。




原创文章,如转载请注明:转载自金色坐标 [ http://www.kingxy.com/ ]

本文链接地址:http://www.kingxy.com/archives/43.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过电子邮件订阅
  • 本站支持WAP访问

Search

Google

最新评论及回复

最近发表

金色坐标博客——京ICP备09009094号

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
KingXY Blog - This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.