WIF基本原理(4)联合身份验证实例
WIF基本原理(4)联合身份验证实例
联合身份验证实例
本实例要实现合作伙伴员工通过单一登录来尝试访问其他合作伙伴域中的资源。联合身份验证方案中有三个主要角色:标识提供方、声明提供方和信赖方。WIF会提供API 来构建所有这三个角色。
图15-11说明了典型的联合身份验证方案。在此方案中,Fabrikam员工希望无需重新登录即可访问 Contoso.com 资源,也就是使用单一登录。
图15-11 联合身份验证
参与此方案的虚构用户包括:
q Frank:希望访问Contoso资源的Fabrikam员工。
q Daniel:在应用程序中实施必要更改的 Contoso 应用程序开发人员。
q Adam:Contoso 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 安全揭秘》
作者:玄魂
出处:http://www.cnblogs.com/xuanhun/
原文链接:http://www.cnblogs.com/xuanhun/
更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
关注我: