ASP.NET Web API具有Windows Azure AD和MS OWIN 组件的安全ASP.NET Web API

随着 Web API 角色的重要性日益增加,在可能暴露敏感数据和操作的高价值方案中确保能够信心十足地 使用 Web API 的需求也愈加迫切。

我们可以清楚地看到,整个行业都在寻找一种解决方案,以便为依赖 OAuth 2.0 标准的 REST API 提供 保护。但在实践中,关于应该在项目层面上做些什么,并没有提供详细的指导。此外,Microsoft .NET Framework 中用于保护通信的现有类和工具设计用于特定应用程序类型(基于回发的 Web UX 应用程序)。 它们不适用于 Web API 及其支持的多客户端方案。因此,保护 Web API 的工作在相当程度上已成为一种手 工活动。这些保护工作不见得不安全,但各解决方案之间的差异很大,需要过多的自定义代码。

随着 Visual Studio 2013 的发布,您可以将这些烦恼全都抛诸脑后。此版本引入了来自 Microsoft Open Web Interface for .NET (OWIN) 组件的创新 ASP.NET 工具和安全中间件,它们可为您的 Web API 提 供直接的保护。通过新型 ASP.NET 工具和模板,您可以对 Web API 项目进行配置,使之将身份验证直接外 包给 Windows Azure Active Directory (AD),从而发出本地项目和 Windows Azure AD 相应条目中的必要 代码。

在本文中,我将向大家介绍如何利用 Visual Studio 2013 的这些新功能创建受 Windows Azure AD 保护 的简单 Web API。我还将向大家展示如何创建一个测试用客户端,从而演示实际使用中的 API。我还将简单 探讨一下后台情况,如果您想要更深入探究此方案的更高级方面,可将其作为起点。

请提供凭据

归根结底,身份验证的功能是在调用方向服务器发送消息时,要求调用方提供可验证其身份或检索其属性 的某种凭据。服务器随后使用这些信息进行授权:确定是否应授予访问权限,以及在哪些方面授予访问权限 。

资源通常将大部分身份验证功能转移给外部服务提供商,通常称为颁发机构或身份提供者。这些提供者负 责繁重的任务,例如让用户登录、分配凭据、处理生命周期流程(如密码恢复)、提供用于用户身份验证的 UI、验证多个协议上的凭据、多身份验证因素管理、欺诈检测等。

将这些功能放到一边,剩下的唯一身份验证任务是确认身份验证是否在所选颁发机构成功通过。此项工作 通常涉及对安全令牌的检查,安全令牌是身份验证成功后颁发机构向调用方发放的数据片段。

安全令牌通常根据特定的格式创建,由将明确识别颁发机构的密钥进行数字签名,并且包含一些将此令牌 唯一绑定到目标资源的数据。资源在收到请求时,会寻找随附的令牌。如果发现一个符合所需验证属性的令 牌,调用方即通过身份验证。

在这一详细级别上,此模式通用性很高,以致于其能够描述许多不同的身份验证方法。我将通过为具体实 体分配高级角色将其应用于此方案。

资源 资源将是我需要保护的 ASP.NET Web API 2 项目。您可以在更细的粒度上应用 身份验证要求。例如,您可以定义操作的子集来进行保护,并让其他操作接受匿名调用方。

颁发机构 我将对 Web API 进行配置,使之将身份验证需求转移到 Windows Azure AD ,后者是面向每个 Windows Azure 订户的平台即服务 (PaaS) 产品。Windows Azure AD 专门用于支持基于 云的应用程序工作负载。此服务保存有关用户(属性和凭据)和组织结构的信息。您可以将其数据与 Windows Server Active Directory 进行同步(如果您选择这样做),或者将数据全部放在云中,无需内部 部署基础结构。

几乎每种在线 Microsoft 服务(Office 365、Intune 和 Windows Azure)都利用 Windows Azure AD 来 满足其身份验证和目录需求。由于有了开放式标准以及对常见协议的支持,您可以从几乎任何应用程序(Web UX、Web API、本机客户端、服务器至服务器等)和平台连接到 Windows Azure AD。我将演示如何在 Windows Azure AD 中注册应用程序,以及利用其 OAuth 2.0 端点。

令牌格式与验证 OAuth 2.0 规范未对任何具体令牌格式作强制要求,但针对 REST 方 案的 JSON Web 令牌 (JWT) 格式 (bit.ly/14EhlE8) 已成为一种事实标准。Windows Azure AD 和 Microsoft OWIN 组件均支持 OAuth 2.0 流中的 JWT 格式。我之所以提到这一点,主要是为了提供一些背景 信息。JWT 获取和验证机制均由中间件负责,令牌格式对应用程序代码是透明的。

客户端 当资源依靠颁发机构来处理身份验证时,它实际上与客户端实现了分离。用户 (以及客户端应用程序)如何获得令牌则成为用户与颁发机构之间的事情。这对代码的可维护性非常有益, 但如果您想看看 API 的实际效果,仍需要设置一个客户端。您将了解如何在 Windows Azure AD 中注册支持 Web API 的本机客户端,以及如何使用 Windows Azure AD Authentication Library (ADAL) 使 .NET 富客 户端应用程序能够通过 Windows Azure AD 对用户进行身份验证,以及获得令牌,以保护对 Web API 的调用 。

图 1 显示我将构建的解决方案的各个元素。如果您此时看不懂其中的一些标签,不要 担心:当我演示该解决方案的开发过程时,将一一做介绍。

图 1 端到端解决方案的体系结构

创建 Web API 项目

要创建 Web API 项目,需要用到 Visual Studio 2013 中新的 ASP.NET 工具和模板。打开 Visual Studio,新建一个 ASP.NET Web 应用程序项目。在新建项目对话框中,选择 Web API 模板。单击“更 改身份验证”按钮。

将显示可为 Web API 选择的现成的身份验证方式,如图 2 所示。选择组织帐户,您 可以借此将 Windows Azure AD 作为颁发机构。(有关所有选项的更多信息,请参见 bit.ly/1bhWngl。)此 处的目标是收集从身份管理角度而言非常重要的 Web API 特性信息,并决定配置哪个 Windows Azure AD 实 例(通常称为“租户”)来处理身份验证。

图 2 组织帐户身份验证对话框

时间: 2024-11-01 21:52:16

ASP.NET Web API具有Windows Azure AD和MS OWIN 组件的安全ASP.NET Web API的相关文章

将ASP.NET Web应用程序布署至Windows Azure Web Sites

以下内容示范如何使用 Visual Studio 2012 将一个 http://www.aliyun.com/zixun/aggregation/14156.html">ASP.NET 撰写之Web 应用程序快速部署到 Windows Azure Web Sites. 首先您必须已经开启了 Windows Azure 三个月免费试用的测试账号,并且已经启用了技术预览功能 Windows Azure Web Sites,倘若您尚未开启 Windows Azure 账号,可准备一张信用卡并至

Windows Azure Web Sites布署classic ASP

在 2012 年 Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure Spring 920.html">Release 中进入技术预览阶段的 Windows Azure Web Sites 支持多种网页开发语言与框架,包含 Microsoft ASP.NET,PHP 与 classic ASP ,为了考虑众多既有 Web 应用程序能够轻易搬移至云端,自1998 年即问世的 classic ASP

Windows Azure Marketplaces上的Bing Search API可用啦!

Windows Azure Marketplace上的Bing Search API 现在可用啦!通过此服务,你可以嵌入web.图像.新闻和视频搜索结果,以及相关的搜索和拼写建议来创建独特的应用程序和服务. 你也可以将数据集里的信息通过标准化的数据服务整合到应用程序中,并通过使用Service Explorer工具.Microsoft Excel里的PowerPivot和越来越多的其他工具分析在线数据. 在过去的几年中,Bing Search API支持越来越多的独特应用程序和服务.现在,通过将

使用Windows Azure的Web Sites和WebMatrix创建PHP和MySQL站点

新引进的Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure Web Sites和最新版本的Microsoft WebMatrix提供了一个创建和承载PHP+ MySQL Web Sites的好方法.您可以在Windows Azure中运行您自己编写或使用流行的开源应用程序,如 Drupal.Joomla  !或 WordPress 这篇文章介绍如何在 Windows Azure 中创建一个Web Sites,下

运用FTP上传档案至Windows Azure Web Sites

Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure Web Sites 也是 Windows Azure 2012 Spring 920.html">Release 中一项新的预览功能,对于单纯开发网页应用程序搭配数据库的应用,Windows Azure Web Sites 已经足以应付.Windows Azure Web Sites 可以单纯上传修改某一个网页中所用到的档案,而无须如 Wind

在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim Nakashima.Hani Atassi 和 Danny Thorpe 将应用程序或服务部署到 Microsoft 云服务平台 Windows Azure 的原因有很多.例如,只为使用的内容付费从而可降低操作和硬件成本.构建几乎能无限缩放的应用程序.巨大的存储容量.地理位置等等,不胜枚举. 只有

最全的Windows Azure学习教程汇总

Windows Azure 是微软基于云计算的操作系统,能够为开发者提供一个平台,帮助开发可运行在云服务器.数据中心.Web 和 PC 上的应用程序. Azure 是一种灵活和支持互操作的平台,能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储.计算和网络基础设施服务,紧密结合起来.帮助开发者在"云端"和"客户端"同时部署应用,使得企业与用户都能共享资源. 本文整理了丰富的 Windows Azure 学习资源,帮助开发者能全面地学习 Win

微软豪赌云计算:Windows Azure露锋芒

继SOA.Web 2.0之后,云计算成为如今最炙手可热的IT技术.正如微软中国掌门人张亚勤博士所说的那样,云计算正在改变整个IT产业. 那么,究竟什么是云计算?云计算为何如此强大呢?我们先来引述一下微软CEO斯蒂夫鲍尔默的话吧,"云是一种革命性的计算模式,它把用户手边的计算设备与超大规模数据中心的处理和存储能力相连接,把计算从受限的资源转变为几乎无限的平台,而不管身处何地,都能把用户与他们需要的信息连接起来."鲍尔默信心满满地指出,要在今年投入95亿美金,打造以Windows Azur

微软郑子颖:Windows Azure如何支持开源系统和软件?

在6月6日下午进行的云计算大会微软专场上,微软Windows Azure部门资深测试经理郑子颖针对Windows Azure对开源操作系统的支持进行了讲解.此外,Canonical工程师唐亚光现场演示了在Windows Azure上创建并运行一个Ubuntu虚拟机. 微软Windows Azure部门资深测试经理 郑子颖 Windows Azure对开源的支持主要体现在两个方面:第一,在Windows Azure上可以部署和运行虚拟机,支持开源操作系统,也支持在Windows和开源操作系统上运行