Windows Azure AppFabric 入门教学系列 (四):SWT 和OAuth WRAP介绍

本文是Windows Azure AppFabric入门教学的第四篇文章。我们知道AppFabric中的Access Control Service在验证授权过程中会使用到SWT 和OAuth WRAP,所以为了更好的了解ACS其内部原理,我们会在本教程中简单地介绍SWT 和OAuth WRAP协议。

Simple Web Token (SWT)

SWT简介:

Simple Web Token (SWT)定义了传输简单声明的格式,其兼容性和格式能够轻易的被放入例如HTTP等协议的头部。一个简单的声明可以由一组名值对组成。

因为 SWT会传输重要的验证和访问信息,我们需要防止其被篡改。因此引入了唯一的强制的名值对- HMACSHA256。这一般为SWT最后一对名值对,其值为其他名值对的SHA 256 HMAC 值。

SWT 示例:

一SWT 发布者想要发布一个SWT,并带有如下信息

Issuer = issuer.example.com

ExpiresOn = 1/1/2010, Midnight

com.example.group = gold

over18 = true

其 HMAC 密钥为 (base 64编码表示,该密钥客户端和服务器端各有一份) :

N4QeKa3c062VBjnVK6fb+rnwURkcwGXh7EoNK34n0uM=

在本示例中, Issuer 和 ExpiresOn 是SWT规范的保留字。 com.example.group属性是 example.com域名拥有者所指定的句法和语义上的协定。 over18是一个在发布者和用户之间,私下定义的属性

在对SWT进行编码前,我们需要将 ExpiresOn 转换成从UTC时间1970年1月1日午夜至失效时间2010年1月1日午夜的秒数。结果是 1262304000。

编码

1.将名值对编码。结果如下:

Issuer=issuer.example.com&ExpiresOn=1262304000&com.example.group=gold&over18=true

2. 使用密钥来计算先前值的HMAC值。

3. 用Base64编码来表示上一步的 HMAC。结果为: AT55+2jLQeuigpg0xm/vn7tjpSGXBUfFe0UXb0/9opE=

4. 将上步结果以URL编码,并附在声明的最后。最终结果如下:

Issuer=issuer.example.com&ExpiresOn=1262304000&com.example.group=gold&over18=true&HMACSHA256= AT55%2B2jLQeuigpg0xm%2Fvn7tjpSGXBUfFe0UXb0%2F9opE%3D

解码

1. 用 &HMACSHA256= 来分开SWT,我们得到一个noHMACSWT 字符串: Issuer=issuer.example.com&ExpiresOn=1262304000&com.example.group=gold& =over18=true&

以及一个 submittedHMAC 字符串: AT55%2B2jLQeuigpg0xm%2Fvn7tjpSGXBUfFe0UXb0%2F9opE%3D

2. 用URL解码 submittedHMAC 字符串,得到: AT55+2jLQeuigpg0xm/vn7tjpSGXBUfFe0UXb0/9opE=

3. 使用计算noHMACSWT字符串和HMAC密钥来计算 localHMAC, 以base64编码表示,结果如下:

AT55+2jLQeuigpg0xm/vn7tjpSGXBUfFe0UXb0/9opE=

4. 比较 submittedHMAC 和 localHMAC ,我们看到它们是一致的,因此验证通过。之后URL解码noHMACSWT字符串来获得 SWT 值。

时间: 2024-09-29 20:18:27

Windows Azure AppFabric 入门教学系列 (四):SWT 和OAuth WRAP介绍的相关文章

Windows Azure AppFabric 入门教学系列 (五):初探Access Control Service

本文是Windows Azure AppFabric入门教学的第五篇文章.本文会对AppFabric中的Access Control Service(ACS)做初步的讲解.为了使后续的学习顺利进行请确保已浏览本教程的第一篇文章,并以按照该文完成了AppFabric项目和命名空间的创建.我们知道,AppFabirc由Service Bus 和 Access Control Service组成,在前一篇教程中我们已介绍过Service Bus,所以本文将简略的介绍如何使用ACS服务来确保安全性. 同

Windows Azure AppFabric 入门教学系列 (三):LABS环境

本文是Windows Azure AppFabric入门教学的第三篇文章.我们会介绍一下LABS环境. 微软AppFabric团队与2010年3月11日推出了AppFabric LABS环境.AppFabric团队会用其展示一些早期特性,并从社区获得反馈.用户无需为该环境的使用付费. AppFabric LABS 使得用户能够测试并使用实验性的AppFabric技术.对于那些激动人心的功能和特性,我们希望从用户那里尽快的获得反馈.LABS环境并没有SLA协议的支持,但您可以获得AppFabric

Windows Azure AppFabric 入门教学系列 (二):一个简单的Service Bus例子

本文是Windows Azure AppFabric入门教学的第二篇文章,可以说是正式的开始学习AppFabric了.为了使后续的学习顺利进行请确保已浏览本教程的第一篇文章,并以按照该文完成了AppFabric项目和命名空间的创建.我们知道,AppFabirc由Service Bus 和 Access Control Service组成.本篇教学以一个简单的Echo程序来向大家简单的介绍一下Service Bus,让大家能有一个初步了解. 该程序演示了Client向Service发送消息,ser

Windows Azure AppFabric 入门教学系列 (六):Message Buffer之初体验

本文是Windows Azure AppFabric入门教学的第六篇文章.本文会介绍一下Service Bus中一个非常有用的特性-MessageBuffer.该特性类似于Queue Storage,作为一种小型的,临时的信息缓冲区,能够应用于多种场景.本例中,我们会简单的模拟一下订单系统:下单,查看订单,处理订单. 前置条件 为了使后续的教程能够顺利进行,请确保如下软件或组件已被安装: ·       Microsoft .NET Framework 3.5 SP1 ·       Micro

Windows Azure入门教学系列 (四):使用Blob Storage

本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来进行对文件的操作.有关REST API的详细信息,请参见Blob 服务 API. 为了方便.NET开发人员,我们在SDK中提供了Microsoft.WindowsAzure.StorageClient类来帮助发送REST请求. 在开始本教学之前,请确保你从Windows Azure 平台下载下载并安装了最新的Windows Azure开发工具.本教学使

Windows Azure入门教学系列 (七):使用REST API访问Storage Service

本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure SDK所提供的StorageClient来使用Blob Storage, Queue Storage以及Table Storage的基本方法.我们在前几篇教学中也提及最终StorageClient也是通过发送REST请求来与服务器端通信的. 在这篇教学中,我们会以Blob Storage为例,说明如何

Windows Azure入门教学系列 (一): 创建第一个WebRole程序

原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言).在开始学习之前,请确保你的机器上已经安装了: Windows Azure Tools for Microsoft Visual Studio 1.1 (February 2010) Windows Azure Software Development Kit (November 2009) 步骤

Windows Azure SendGrid入门指南

今天的文章来自SendGrid的软件工程师Gabe Moothart.SendGrid 提供了一种基于云计算的电子http://www.aliyun.com/zixun/aggregation/12489.html">邮件服务,减轻企业的成本和维护自定义电子邮件系统的复杂性. 作为Windows Azure客户,您知道您可以轻松地访问一个高度可扩展的集成到任何 Windows Azure 环境上的应用程序的电子邮件提交解决方案? Windows Azure SendGrid 入门是很容易的

Windows Azure AppFabric云中间件解析

在云上运行应用是云计算的一个重要服务,但这只是其中一个方面.Windows Azure平台还能提供更多基于云的服务,这种服务能被传统的自有应用或云计算平台上的应用调用.这正是Windows Azure platform AppFabric服务的目标.在创建分布式应用时,通过Windows Azure platform AppFabric服务可以解决普遍存在的基础架构方面的问题.图1.11展示了其核心的组件:服务总线和访问控制服务. ▲图1. Windows Azure AppFabric的主要功