Geneva框架:构建基于声明的WCF服务的更好方法

本文基于“Geneva”框架的预发布版本撰写而成。所有信息均有可能发生变更。

本文使用以下技术:

Windows Communication Foundation

“Geneva”框架(以前称为“Zermatt”)是用于构建基于声明的应用程序和服务以及实现联合安全方案的新框架代号。它的功能包括用于构建自定义安全令牌服务 (STS) 的探测功能、要求从 ASP.NET 应用程序进行联合身份验证的机制,以及简化 ASP.NET 应用程序和 Windows Communication Foundation (WCF) 服务的基于声明的授权的对象模型。

Geneva 框架还包括支持 Windows CardSpace 的功能(如托管信息卡颁发)和用于简化 Windows CardSpace 登录体验创建过程的 ASP.NET 控件。(有关 Windows CardSpace 的详细信息,请阅读“身份标识:使用 Windows CardSpace 保证您的 ASP.NET 应用程序和 WCF 服务的安全”。)显然,Geneva 框架包含多种安全功能,但其核心功能是基于声明的安全性。

虽然 WCF 一直以来都提供了对基于声明的安全模型的本机支持,但是 Geneva 框架简化了运行时对声明的访问过程并提供支持基于声明的授权的机制,使授权主体与已在 Microsoft .NET Framework 中提供的基于角色的授权主体一致,进而改善了此体验。ASP.NET 应用程序利用 Geneva 框架获得基于声明的授权功能,该框架与增强基于角色的安全性的现有 ASP.NET 登录控件兼容。在本文中,我将着重介绍实现基于声明的安全模型的价值、描述如何使用 Geneva 框架获得基于声明的 WCF 服务,并将此方法与 WCF 在不使用 Geneva 框架的情况下处理基于声明的安全性的方法进行比较。

在继续阅读本文之前,我建议您阅读一下由 Keith Brown 和 Sesha Mani 合著的针对开发人员的 Geneva 框架白皮书。该白皮书概述了 Geneva 框架的功能以及有关基于声明的安全性概念的一些背景,并介绍了如何在 ASP.NET 应用程序和 WCF 服务中启用这些功能(但以前者为重点)。此外,您还可以在 Keith Brown 于 2007 年 9 月发布的“安全简报”专栏中了解有关 WCF 和基于声明的安全性的详细信息。

为什么要使用基于声明的安全性?

您为什么希望移至基于声明的安全模型?在考虑使用 Geneva 框架实现解决方案之前,您必须知道此问题的答案。假定应用程序角色的定义从未发生过更改,并且只有一个身份验证机制会将安全主体映射到这些角色,则基于角色的安全性就已经足够了。但基于声明的安全模型有助于应用程序和服务的设计,以便它们不会绑定到特定凭据类型或特定角色组。这是基于声明的安全模型的价值主张之一。

从角色中分离应用程序和服务允许对角色名称和意义进行更改,而不会影响系统。可以为经过身份验证的用户分配适用于授权的更精细的项目 — 声明。声明可以根据经过身份验证的用户进行分配,如图 1 所示,也可以根据经过身份验证的用户的角色进行分配,如图 2 所示。

图 1 根据经过身份验证的用户分配声明

时间: 2025-01-20 11:25:00

Geneva框架:构建基于声明的WCF服务的更好方法的相关文章

使用Geneva框架构建安全令牌服务(STS)

本文基于 "Geneva" 框架的预发布版本撰写而成.所有信息均有可能发生变更. 本文将介绍以下内容: 使用 Geneva 框架实现安全令牌服务 联合安全性 声明转换 本文使用了以下技术: Windows Communication Foundation.ASP.NET.Geneva 框架 Microsoft 基于声明的访问 (CBA) 平台战略(代号为 "Geneva")包括 "Geneva" 框架."Geneva" 服务器

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[四]--实现模型工厂,依赖注入以及格式配置 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在上一篇中,我们已经初步开始使用Web Api了,但同时出现了一些很多不足之处,本章我们就着重来解决这些不足. 上篇导航:http://www.cnblogs.com/fzrain/p/3510035.html 配置JSON的格式 Web Api提供Xml和JSON作

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[十]--使用CacheCow和ETag缓存资源 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 本文将使用一个开源框架CacheCow来实现针对Http请求资源缓存,本文主要介绍服务器端的缓存. 使用缓存技术可以很好的提高Web Api的性能,减小服务器的开销.我们把这种缓存形式称之为:条件化请求(Conditional Requests).具体表现为:客户

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[开篇][持续更新中...] 最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tutorial-building-asp-net-web-api-restful-service/.于是打算跟着学一下,把学习过程记录在博客园的同时也分享给大家. 每一篇结束后我都会把代码共享 由于

厂商构建基于行为移动云计算服务指南

移动性和基于行为服务之间天然微妙的化学关系成全了一个主要创造盈利的机遇,由于移动服务和移动使用模式的天生动态特性使这一关系在云计算中得到了充分的体现. 但是选择正确的技术和功能以抓住这个难得的机遇并不容易.它需要对虚拟化模式.网络架构.管理以及计费进行战略性思考和前瞻性规划. 优化基于行为移动云计算服务的云计算架构所面临的挑战在于必要的服务内容仍在不断发展中.在过去,在一个统一平台上运行运营支持系统(OSS).计费支持系统(BSS).http://www.aliyun.com/zixun/agg

用samba服务构建基于企业级的文件共享服务

用samba服务可轻松构建基于企业级的文件共享服务,配置起来比windows的NTFS+共享权限更简单, 更容易,而且samba可以直接通过内核和用户交互数据,访问效率更高. ------------------------ -------- 公司部门: 技术部门:technical 客服部门:customer 销售部门:sales 各部 门成员说明: 技术部门成员:dennis ... 客服部门成员:lulu ... 销售部门成员:amy ... 公司总经理:sfzhang     文件共享需

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[三]--Web Api入门 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开始之前,再一次回顾一下Web Api的应用场景:Web Api可以与 MVC,WebForm结合使用,也可以作为一个单独的Web服务.在正式讨论Web Api的配置以及如何构造我们的URI来消

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[外传]--Attribute Routing 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 题外话:由于这个技术点是新学的,并不属于原系列,但借助了原系列的项目背景,故命名外传系列,以后也可能在这个系列中附加一些新的技术. 前言 在Web Api 2.0中,提出了一种新的配置路由方式--基于特性的路由(Attribute-based Routing),在我们之前

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[七]--实现资源的分页 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这篇文章我们将使用不同的方式实现手动分页(关于高端大气上档次的OData本文暂不涉及,但有可能会在系列的后期介绍,还没确定...),对于分页的结果,我们将采用2种不同的方式响应给客户端(1.将分页元数据封装在响应Body中2.在http响应报文头部添加分页信息). 众所周知,在服务器端一