利用Geneva开发SOA的安全模型
微软最新发布的代号为Geneva Beta 1,之前的代号为Zermatt。Geneva可以帮助开发人员更轻松地开发用于认证/授权的基于声明(claims-based)的身份模型的应用。这是由微软开发但得到行业支持的模型采用WS-Federation、WS-Trust和SAML(Security Assertion Markup Language,安全断言标记语言)等标准协议。Sun的WSIT和WebSphere App Server v7.0也支持这些行业标准。
Geneva 不仅为开发具有授权性质的应用提供了方便,还将使部署、管理和保护应用更容易。在.NET 3.0所包含的Windows CardSpace ,这是微软第一次如此直接地将其庞大的开发大军纳入身份元系统计划,它定义了多厂商平台的分布式身份架构。权限被用来做出谁可以访问,谁可以检索内容或谁可以完成交易这样的决定。
包含在权限中的数据可以来自Active Directory,基于LDAPv3的目录,专用数据库,或者像包括微软的CardSpace和Novell的Digital Me在内的LiveID、 OpenID及InfoCard系统这些新的以用户为中心的身份模型。Geneva是专为开发基于Windows应用准备的,Geneva包括以下三个组件:
Geneva 服务器。 这是一个OASIS WS-Trust规范中定义的安全令牌服务(STS)。 This thing issues和转换声明,管理用户访问并可以实现自动化联邦。
Geneva 框架。这是一个托管的(.NET)连接到STS的框架,有助于开发人员构建基于声明的应用程序和服务。你可以用它来处理对任何一方的授权事务(请求或响应)。
Windows CardSpace Geneva。这是一个你在Windows里所喜爱的CardSpace 的扩展。有可能你已经看见过他,就是没有使用过。简单的说,CardSpace是一组的Windows功能和用户界面,允许用户导航访问权限和控制使用个人信息。每个人都有作为身份一部分的多个声明:你是UM(西雅图华盛顿大学)的学生,你是BigCorp的员工,你还是一个具有良好声誉的社团的成员,你获得了一个特别的安全卡,你还有一个BigBank的银行帐号4444-444-44 等等。CardSpace 让你自己决定使用哪个声明向特定的服务器或服务透露你的身份。而不是像所有的服务器或服务透露你的一切,你只需要透露为特定交易所需要的信息。这是身份标识模型的一个方面,CardSpace 使得在Windows中做这样的事情成为可能。
基于声明模型的关键是安全令牌服务(STS)。STS是协商交换安全令牌(如Kerberos或SAML),并根据应用的需要将令牌转换为不同格式的轻型网关,可用于服务器和客户机。
Geneva 可被用来开发接收来自CardSpace的信息的应用。CardSpace是Vista和XP中的以用户为中心的身份系统。如果你现在想在.Net中做到这点,那么你必须有很多自己编写的协议代码。使用基于声明模型的第一个领域是云服务,微软的BizTalk Services – Internet Service Bus (ISB) 中有一个Identity Services – 该服务允许组织更容易管理用户,并帮助开发人员创建更安全的应用程序,支持从不同的组织来识别用户。
Geneva Beta 1 可以从Microsoft Connect网站下载。一些有用的文档:"Geneva"介绍 和 微软代号为"Geneva" 框架针对开发人员的白皮书。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现浏览器格式化显示XML的方法示例
- Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
- PHP的mysqli_stmt_init()函数讲解
- PHP内置函数生成随机数实例
- PHPStudy下如何为Apache安装SSL证书的方法步骤
- PHP的mysqli_thread_id()函数讲解
- thinkPHP框架中layer.js的封装与使用方法示例
- OpenCV+python实现实时目标检测功能
- 在tensorflow实现直接读取网络的参数(weight and bias)的值
- python tkiner实现 一个小小的图片翻页功能的示例代码
- 在Pytorch中使用Mask R-CNN进行实例分割操作
- PHP类的自动加载机制实现方法分析
- strpos() 函数判断字符串中是否包含某字符串的方法
- Laravel框架基于ajax和layer.js实现无刷新删除功能示例
- 详解php伪造Referer请求反盗链资源