OData、实体框架和 Windows Azure 访问控制

在本文中,我将阐述使用实体框架(通过 Windows Communication Foundation (WCF) RESTful 服务公开 并用 Windows Azure 访问控制服务 (ACS) 保证安全),实施开放数据协议 (OData)。

如同大多数开 发人员,我经常发现自己试图利用各种新方法综合利用多种技术,以便尽可能高效地完成项目,同时还要提供 一种灵活、易于维护的解决方案。这样做可能很困难,当项目需要快速安全地公开数据时尤其如此。

最近我需要为一个现有数据库和 Web 应用程序创建一个安全的 Web 服务。我真的不想实施代码的所有 CRUD (创建、读取、更新、删除)操作。仅仅创建自定义服务约定、操作约定和数据约定就非常诱人,这样可以准 确实现如何公开数据,以及其他人如何通过服务使用这些数据。但是我知道必须采取一种更为有利的办法。我 开始研究完成这项工作的各种方法,并看到 OData (我喜欢称其为“哦数据”)的潜力。问题在于 OData 本 身并不安全,这是我不能接受的,所以我需要在 OData 服务之上添加一个安全层,这样我才放心 OData 是有 安全保障的。当我开始着手之时,我发现了 ACS,ACS 非常适于实施基于云的联合身份验证和授权服务,这正 是我需要的。然后我觉得很得意。我意识到如果我将 ACS 与 OData 结合起来,我就得到解决方案了。

现在,我的确考虑实施自定义服务约定,实施这种方法是可行的,尤其是当数据模型前面需要一个抽 象层以及需要保护数据库实体以防直接向服务消费者公开的情况下。然而,鉴于其非常耗时——创建关于如何 使用此服务的适当文档,以及投入额外的努力以设置安全性(“MessageCredential”和 “TransportWithMessageCredentials”),所以这个项目可能会很快失控。我还担心为了支持如何使用这些 服务而因为这样或那样的原因需要或请求额外的方法,这样会再次增加时间、维护和自定义。即使服务的实施 直接使用了实体框架与 ADO.NET,仍然可能需要进行代码的所有 CRUD,以便保持数据层的同步。假设有几十 个表,这种工作可能非常单调乏味。而且,创建并维护任何附加的文档和实施详情以便让最终用户使用我的服 务,只会让这项工作变成一个更加复杂的主张,难以管理。

更简便的方法

我确认了主要技术之 后,我开始寻找其他技术来填补空缺并帮助构建一套结合紧密的解决方案。目标是限制需要编写或维护的代码 数量,同时安全地公开我的 OData WCF RESTful 服务。我结合的技术是: ACS、OData、实体数据模型、WCF 数据服务(具有实体许可)及一个自定义 Windows Azure 安全实施。每项技术都具有各自的重要价值,但结 合起来,他们的价值将大幅增加。图 1 大体显示了部分技术的工作原理概述。

图 1 具备安全性截获的 ACS 简要概述

在试图合并所有这些技术之前,我必须回头,仔细了解每种技术以 及这些技术会对本项目有什么影响。然后我清晰地掌握如何整合这些技术,以及其他人通过其他技术来使用我 的服务还需要哪些条件。

时间: 2024-12-03 21:06:24

OData、实体框架和 Windows Azure 访问控制的相关文章

《微软云计算Windows Azure开发与部署权威指南》——6.3 Windows Azure的AppFabric存取控制应用程序设计

6.3 Windows Azure的AppFabric存取控制应用程序设计 在过去的几十年里,企业中对于身份识别问题的解决方案一直在向基于声明靠拢.基于声明的身份模型将应用程序中的身份认证和授权的公共部分抽取出来,集中到外部服务中,这个服务由安全和身份识别方面的专家编写和维护,这样做是非常有益的. 图6-9所示为ACS的一般应用场景. 客户端请求①并由②获得一个SWT令牌,之后客户端使用该SWT来调用服务③,一旦被ACSAuthorizationManager成功验证,④便能访问到所需的服务方法

如何在Windows Azure中使用Java相关技术

我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序(PetClinic 示例应用程序)迁移到 Windows Azure 云.此文档附带的代码同样也发布在 GitHub 中.我们鼓励 Java 开发人员下载并探索此新示例和教程. Windows Azure 是一个开放的云平台,它支持各种编程语言和框架,包括 Microsoft .NET.Java.N

Windows Azure新的服务和增强功能

今天,我们迎来的混合云的新时代,汇集了最好的非云端和云计算.虚拟机.虚拟网络和Web站点现可作为 Windows Azure 的新预览服务.SQL报表是现在通常对客户可用,一个本地冗余存储选项已添加到提供额外的客户选择中,Windows Azure现有服务的几个增强功能现在可用.这些更新帮助客户构建并使用他们自己独特的方式在云中发布他们的应用. 此外,一些价格和计量的更新增加整体的价值.这些更改包括网络.CDN和存储的最终价格.Window服务器和非Windows虚拟机的预览定价.减少了90%的

《微软云计算Windows Azure开发与部署权威指南》——第6章 Windows Azure平台访问控制与总线AppFabric6.1 服务导向架构

第6章 Windows Azure平台访问控制与总线AppFabric 6.1 服务导向架构 微软云计算Windows Azure开发与部署权威指南什么是SOA(Service-Oriented Architecture,服务导向架构)?SOA的理念广为人知,然而其概念解释又有多种版本.本书认为SOA是为了满足组织机构的商业需求而建立的松耦合的体系结构. 需要读者注意的是,SOA注重架构而不是实现,它不是一门技术,而是一门设计哲学,很多人将面向服务的架构和面向服务的实现混淆.SOA并不强调实现的

Windows Azure透过安全框架了解应用程序的安全状况

第 1 部分介绍了威胁形势并且建议您的应用程序使用深度防御.第 2 部分提出安全是一项共同责任,Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure 为您的应用程序提供超出内部部署应用程序需求的强大安全功能.但另一方面,它也暴露了您应该考虑的其他漏洞. 此部分中将探索如何检查应用程序的体系结构.模式与实践团队提出通过安全框架来检查应用程序,以便您在开始编码之前即确定威胁和您的响应. 此部分还介绍了如何将Micro

Visual Studio-Visual Studio 2010中的实体框架4.0和WCF数据服务4.0

在诸多新改进之中,Visual Studio 2010 引入了用户期待已久的实体框架 4.0 和 WCF 数据服务 4.0(以前称为 ADO.NET 数据服务),这两项功能综合起来,简化了您建立数据模型.使用数据和生成数据的方式. 实体框架 4.0 (EF 4.0) 致力于启用和简化两种主要方案:以域为中心的应用程序开发和传统以数据为中心的"基于数据的窗体设计".它引入了诸如模型优先开发等功能(该功能允许您创建模型并为您生成自定义 T-SQL):对持久化透明的支持:外键:延迟加载以及实

在 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 SQL数据库的那些优势

Windows Azure是微软公司的云基础架构平台,如今,云计算已经普遍运用到各个方面,因此它也成为了微软公司整体战略的一个主要部分,并且作为Windows Azure SQL 数据库(前身叫做SQL Azure),Windows Azure的发展出了不少力. 微软公司对Azure是起于厚望的,尤其是对Windows Azure SQL数据库(为简单起见,下文将简称SQL Azure),它出现的意义不只是在云服务中提供数据库支持,更是为了创建支持PB级"大数据"乃至一切规模数据量的基

Windows Azure Storage BLOB储存机制概述

Windows Azure 提供具备可高度延展的储存机制,来储存结构化与非结构化数据,此一机制称为 Windows Azure Storage. Windows Azure Storage 以 REST 为基础的 Web Service 提供开发接口.这意味着任何平台下的任何程序语言,只要能够支持 HTTP 通讯协议,即可藉由此一开发接口存取 Windows Azure Storage.当然位处于相同数据中心内的 Windows Azure 应用程序存取 Windows Azure Storag