当前位置: 首页 > news >正文

WIF基本原理(4)联合身份验证实例

WIF基本原理(4)联合身份验证实例

联合身份验证实例

本实例要实现合作伙伴员工通过单一登录来尝试访问其合作伙伴域中资源。联合身份验证方案中有三个主要角色:标识提供方、声明提供方和信赖方。WIF会提供API 来构建所有这三个角色。

15-11说明典型联合身份验证方案。在此方案中,Fabrikam员工希望无需重新登录即可访问 Contoso.com 资源,也就是使用单一登录。

15-11 联合身份验证

参与此方案虚构用户包括:

q  Frank:希望访问Contoso资源Fabrikam员工。

q  Daniel:在应用程序中实施必要更改 Contoso 应用程序开发人员。

q  AdamContoso IT管理员。

此方案中涉及组件包括:

web1:一个部件订购Web应用程序,使用ASP.NET构建,用于控制对相关部件访问。

sts1:一个STS,扮演Contoso.com声明提供方角色,可发出应用程序 (web1) 预期声明。它已经与Fabrikam.com建立信任,并被配置为允许访问Fabrikam员工。

sts2:一个STS,扮演 Fabrikam.com 标识提供方角色,可提供对Fabrikam员工进行身份验证终结点。它已经与Contoso.com 建立信任,让 Fabrikam 员工可以访问 Contoso.com 资源。

如图15-4所示,此方案中流程如

1)        Contoso管理员Adam对应用程序 (RP) sts1之间信任进行配置。

2)        Contoso管理员Adam对与作为标识提供方sts2之间信任进行配置。

3)        Fabrikam管理员Frank对与作为声明提供方sts1之间信任进行配置,然后访问应用程序。

面来看实现联合身份验证简要流程。

步骤1    设置声明提供方。

Contoso.com管理员Adam提供三个可用选项:

q  安装STS产品,如ADFS 2.0

q  订阅云STS产品,如LiveID STS

q  使用WIF构建自定义STS

可以根据业务需要、时间表、技术资源可用性、划拨预算等几个因素来选择选项。对于此示例方案,们假设 Adam选择选项1,并使用 ADFS 2.0 产品文档将 ADFS 2.0安装为RP-STS

步骤2    安装WIF

添加代码清单15-3所示代码来枚举声明。

代码清单15-3  枚举声明

// Get the access to IClaimsIdentityIClaimsIdentity claimsIdentity = ((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

 

foreach ( Claim claim in claimsIdentity.Claims ) { // Before using the claims validate that this is an expected claim. // If it is not in the expected claims list then ignore the claim. if ( ExpectedClaims.Contains( claim.ClaimType ) ) { // Write out the claim or use the claim as needed by application logic WriteClaim( claim, table ); } }

步骤3    建立从信赖方应用程序到 STS信任。

Daniel使用Federation Utility工具建立从RP应用程序到STS信任。该工具还会为RP应用程序生成元数据,并将xml文件 (metadata.xml) 放入RP应用程序文件夹内。RP应用程序web.config文件中有关 STS (sts1) 信息会自动得到更新。

步骤4    是在声明提供方处配置信赖方应用程序。

Adam通过参考 ADFS 2.0 产品文档来建立与 RP 应用程序信任。

步骤5    Fabrikam 处配置身份提供方 (IP)

Fabrikam.com 管理员 Frank 提供三个可用选项:

q  购买并安装 STS产品,如 ADFS 2.0

q  订阅云 STS 产品,如 LiveID STS

q  使用 WIF 构建自定义 STS

对于此示例方案,假设 Frank选择选项1并将 ADFS 2.0 安装为 IP-STS Frank也通过参考 ADFS 2.0 产品文档来建立与作为声明提供方 Contoso.com 信任。

步骤6    访问 Web 应用程序。

Frank Fabrikam 域用户身份登录到 Fabrikam 系统。然后,打开浏览器并访问 Contoso.com RP 应用程序页面。由于已在 Fabrikam Contoso 之间建立联合身份验证信任,所以 Frank 现在无需重新进行身份验证即可访问 Contoso 资源。

上面步骤,并不完整,希望读者能从场景和概念上对联合身份验证有一个完整认识

--------------------------注:本文部分内容改编自《.NET 安全揭秘》

相关文章:

  • perl语言入门(5)
  • ALTER DATABASE DBName SET ENABLE_BROKER
  • 用python写的agent
  • DNS服务器性能测试工具--queryperf --说明文档
  • online workshop teacher 对我的评价,受用啊,记下来
  • Linux常用命令集合
  • 利用xss偷cookie教學
  • 代码实现 UITableView与UITableViewCell
  • 局部堆栈给变量分配内存是以16B为基数的
  • 人们为什么要在微博、Facebook 等上发布自己的状态信息或者人生感悟?
  • 掌握Android中的进程和线程
  • wxPython:启动画面SplashScreen介绍
  • SQL Server 2012之初次安装
  • PHP中新建图像函数
  • NAT另类使用方式
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【node学习】协程
  • 11111111
  • 230. Kth Smallest Element in a BST
  • android 一些 utils
  • iOS 系统授权开发
  • Linux快速复制或删除大量小文件
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue 2.3、2.4 知识点小结
  • 编写高质量JavaScript代码之并发
  • 后端_MYSQL
  • 如何解决微信端直接跳WAP端
  • 数据仓库的几种建模方法
  • 一文看透浏览器架构
  • 硬币翻转问题,区间操作
  • 在Unity中实现一个简单的消息管理器
  • 7行Python代码的人脸识别
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #git 撤消对文件的更改
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (26)4.7 字符函数和字符串函数
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (六)软件测试分工
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)winform之ListView
  • ..回顾17,展望18
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Reactor简单使用教程
  • .NET Standard 的管理策略
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET建议使用的大小写命名原则
  • @JoinTable会自动删除关联表的数据
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [AIGC] Spring Interceptor 拦截器详解
  • [C#]手把手教你打造Socket的TCP通讯连接(一)