• 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 安全揭秘》


    作者:玄魂
    出处:http://www.cnblogs.com/xuanhun/
    原文链接:http://www.cnblogs.com/xuanhun/ 更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    关注我:关注玄魂的微信公众号

  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/xuanhun/p/2560184.html
Copyright © 2020-2023  润新知