Passport 是基于 Cookie 的身份验证服务。使用 Passport 身份验证的示例事务对话的工作方式如下:
客户端向受到保护的资源(如 http://www.contoso.com/default.aspx)发出 HTTP GET 请求。
检查客户的 Cookie 是否具有现有的 Passport 身份验证票。如果站点找到有效的凭据,则站点对该客户进行身份验证。如果请求不包括有效的身份验证票,则服务器返回状态代码 302 并将客户重定向到 Passport 登录服务。响应在查询字符串中包含一个 URL,该 URL 被发送到 Passport 登录服务以便将客户定向回原始站点。
客户端执行重定向操作,再向 Passport 登录服务器发出 HTTP GET 请求,然后传输来自原始站点的查询字符串信息。
Passport 登录服务器向客户提供登录窗体。
客户端填写窗体,并使用安全套接字层 (SSL) 将 POST 发送回登录服务器。
登录服务器对用户进行身份验证并将客户重定向回原始 URL (http://www.contoso.com/default.aspx)。响应在查询字符串中包含一个加密的 Passport Cookie。
客户遵循重定向并再次请求原始的受保护资源,这一次使用 Passport Cookie。
起始服务器上的 PassportAuthenticationModule 会检测是否存在 Passport Cookie,并测试身份验证。如果成功,则该请求通过身份验证。
这个流程简单的绘制如下:
http://www.cnblogs.com/perfectdesign/archive/2008/04/23/ws_federation.html