快速业务通道

联合身份标识:使用WIF实现ASP.NET被动身份验证

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
开的 RedirectingToIdentityProvider 事件,并使用相关试探法为 STS 确定正确的 URI。为此,可将以下代码添加到 Global.asax 实现中:

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(
  object sender, RedirectingToIdentityProviderEventArgs e) {
  if (e.SignInRequestMessage.RequestUrl.Contains(
   "IP1RealmEntry.aspx")) {
   e.SignInRequestMessage.BaseUri = 
    new Uri("https://localhost/IP1/STS/Default.aspx");
  }
  else if (e.SignInRequestMessage.RequestUrl.Contains(
   "IP2RealmEntry.aspx")) {
   e.SignInRequestMessage.BaseUri = new Uri(
     "https://localhost/IP2/STS/Default.aspx");
  }
}

其他方案需要将主域参数 (whr) 随登录请求一起传递给主 STS。例如,RP 可能有负责声明转换的资源 STS(R-STS 或 RP-STS)。RP-STS 不对用户进行身份验证(它不是 IdP),但它与一个或多个其他 IdP 有信任关系。

RP 与 RP-STS 有信任关系,始终认可由 RP-STS 颁发的令牌。RP-STS 负责将每个请求重定向到正确的 IdP。RP-STS 可以确定要重定向到的正确 IP-STS(如前面的代码所示),不过 RP 还可以提供有关主域的信息,将主域参数中的这些信息传递到 RP-STS。这种情况下,RP 动态设置主域参数:

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(
  object sender, RedirectingToIdentityProviderEventArgs e) {
  if (e.SignInRequestMessage.RequestUrl.Contains(
   "IP1RealmEntry.aspx")) {
   e.SignInRequestMessage.HomeRealm = 
    "https://localhost/IP1/STS/Default.aspx";
  }
  else if (e.SignInRequestMessage.RequestUrl.Contains(
   "IP2RealmEntry.aspx")) {
   e.SignInRequestMessage.HomeRealm = 
    "https://localhost/IP2/STS/Default.aspx";
  }
}

RP-STS 使用此参数重定向到正确的 IP-STS,然后将声明由 IP-STS 转换为与 RP 相关的声明。

单一登录和单一注销

单一登录和单一注销是联合身份验证的重要组成部分。通过单一登录功能,用户只要经过一次身份验证,就可以访问多个 RP 应用程序。顾名思义,单一注销是通过一次请求就从所有 RP 应用程序和所有相关 STS 链中注销。

在图 1 所示的简单联合方案中,用户进行 IP-STS 身份验证,并根据颁发的安全令牌获得 RP 授权。身份验证结束后,用户有一个 STS 会话 Cookie 和一个 RP 会话 Cookie。现在,如果该用户浏览至其他 RP,则会重定向到 IP-STS 进行身份验证(假设两个 RP 应用程序都信任同一个 IP-STS)。因为该用户已经有了一个 IP-STS 会话,所以该 STS 将为第二个 RP 颁发一个令牌,而不提示需要凭据。现在,用户获得了访问第二个 RP 的权限,并且有第二个 RP 的新会话 Cookie。

前面已经讨论过,WIF 提供 SAM 为经过身份验证的用户写出会话 Cookie。默认情况下,此会话 Cookie 颁发给域的相对应用程序地址,其基本名称是 FedAuth。因为联合会话 Cookie 可能较大,所以令牌通常拆分为两个(或更多)Cookie:FedAuth、FedAuth1 等等。

如果同一个域中承载了多个应用程序,在联合方案中,默认行为是,浏览器针对每个 RP 都有一个 FedAuth Cookie(请参阅图 10)。浏览器只为请求发送与域和路径相关的 Cookie。

图 10 与每个 RP 和 STS 关联的会话 Cookie

通常情况下,都可以使用此默认行为,不过,有时需要针对每个会话 Cookie 提供特定于每个应用程序的唯一名称,尤其是这些应用程序承载于同一个域时。同

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号