Passport 你的网站(在你的WebSite上实现MS Passport )上

** Passport 你的网站 ( 上) **

** -------(在你的 WebSite 上实现 MS Passport ) **

小气的神 2001-11-12


Article Type: In-Depth

难度等级: 4/9

版本: 1.01

Passport 最早出现在 1999 年,当时只是为满足 MS 收购 HotMail 后作为邮箱的登录和授权服务,默默无闻。一年之后人们开始知道它了,真正引起争议的是 MS 在 Hotmail 张贴的一例用户使用条款,被认为侵犯个人的隐私和权利,事实上当时 MS Messenger 开始被人关注,而使用 Messager 的前提是你必须拥有一个 Hotmail 或 MSN 的 Mail 帐号,这一刻 Passport 开始展露头角。

接着 MSN Explorer 6.0 正式为 Passport 正身, MS Messenger 也接连不断的升级,一口气到了 4.0 。 MS 开始把 Passport 推上前台,不过那一时刻还很难把 Passport 和 dotNET 、 WebService 扯上关系。 2001 年 7 月 13 日, MSN 的 Hotmail 网站更新,一切焕然一新,美丽的 Web UI 让人叹服,我开始感叹中国的 Web Mail 什么时候能做到这么漂亮。实际上, Passport 2.0 也在这之前 Release ,这是 Passport 的一次最重要的升级。同时人们开始从 dotNET 的迷幻中睁开眼睛,除了 Visual Studio.NET,MS 表明 Passport 将是 dotNET 的最早的一个实现, Passport 已频繁出现在主要的技术报刊和杂志上, Passport 已经和 dotNET 挂上了钩,不过怎么看也看不出来 Passport 会和 dotNET 有关,这其间 MS 已悄悄将 Passport 的 database 扩大了几次 , 做好各种技术上的准备了。

三个月后 XP 发布, PDC 2001 召开, Visual Studio.NET Beta2 Release ,WebService 已经蓬勃发展深入人心,一切突然清晰起来, 15 天以后 MSN Explorer 7.0 发布, MSN 主站点迎来了近两年多的一次大改版,开始有评论认为发生变化了,有人已从 MSN 嗅出一种奇特的气味,这次改版改变到根了, MSN Explorer 宣称可以和 MSN 网站真正的同步并且成为一个最美丽的 Client , MSN Messenger 让人新奇的发现 Actions Plane ,不久 HailStorm 被改称为 Microsoft .NET My Services,Passport 脱离 HotMail,Messenger 成为 Microsoft .NET My Services 的一员, MS 表明今后所有 Microsoft .NET My Services 的关键是 Passport, 它将是所有 Web 站点和 WebService 的唯一的一种登录方式,而且未来它将会被发展成一个全球化用于授权的电子商务平台。几乎一夜之间 MS 所有的相关网站赫然出现 Passport 的 WebUI , EP 标志也出现在近 160 家的电子商务网站上。这时 Passport 用户已超过 165,000,000 个。

就在不久我也 Download Passport SDK 2.0 ,我认为使用它很方便,作为一个开发者来说,把自己的网站实现 Passport 只需很简单的几步,并且对于用户来说无论是授权还是验证都会感到无比的熟悉和容易,他们会喜欢自己在某个网站上可以不需要填写太多的表格而完成一个交易或体验,就我各人来说,作为一个用户唯一的不便是我必须拥有一个 MS 的 Passport 帐号,如果能排除突起的那一点不服气心理,对于我那一点点的隐私是填写给 MS 还是 Sun 或是任何一个 Web 网站没有太大的不同;作为一个开发人员,我已厌烦了中国那些所谓的“网络安全应用方案提供商”的网络安全实现。老实说,我不能直接拒绝这些解决方案并大声的说 NO ,而另一方面我又很难说服自己我去喜欢它。

好吧,原谅我似乎离题太远了。让我们准备一下开始吧:

1 。准备好我们的环境。

2 。实现一个简单的 Passport

3 。切换并接触一下 Microsoft® .NET My Services Manager 。

1. 准备环境

我的环境:

Windows 2000 Advanced Service SP2 En

IIS 5 保证有一个站点可以访问。

Microsoft Passport SDK 2.0

MS Visual InterDev 6.0 或任何的 ASP 编辑器

网卡或 Modem 必须保证你的机器可以联线访问 Internet .

拥有一个真实的 Microsoft Passport ,最好试 @msn.com 的

Microsoft Passport SDK 2.0 可以去下面的网址获得。

http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/MSDN-FILES/027/001/644/msdncompositedoc.xml&frame=true

NT4 ,IIS4 可以使用 Microsoft Passport SDK 1.4

http://download.microsoft.com/download/iis50/Install/PPSDK1_4/NT45/EN-US/PPM_SDK_v1-4-2.EXE

W2K , IIS5 最好使用 Microsoft Passport SDK 2.0

http://download.microsoft.com/download/Passport/Install/2.0/NT5XP/EN-US/PPM_SDK_V2.EXE

然后可以安装 SDK ,之后你需要建立一个 Preproduction environment ( PREP )。

先去 http://current-register.passporttest.com/default.asp 登记获得一个 PREP Passport , 然后你可以去 http://current-login.passporttest.com/ 看是否可以登录成功。这个 Passport 不是真实世界的,当你登录一个真实世界的网站比如 www.msn.com 那么实际上你是登录到 http://login.passport.com 而在 PREP 下实际上你登录的可能是 http://current-login.passporttest.com/ 这是 PREP Login server 的地址。至于你如何控制你的用户在这两个地址直接切换将在 Passport Administration Utility 中进行设置,当然如果以后你知道也可以在注册表中直接进行修改。

然后需要检查作为你的客户端的 IE 或浏览器,最好是 IE5 以上,并且在选项中设置使用 Cookies 和 SSL 并且支持 javaScript.

更具体的你可以参看 Microsoft Passport SDK 2.0 文档:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dndotnet/html/myservpassp.asp?frame=true

整个设置和 dotNET 环境可以没有一点关系,所以不需要任何 dotNET 的安装或相关文件。

之后可以启动 Passport Administration Utility 看到像下面这样。

Passport admin

2. 实现一个简单的 Passport

简单的实现一个 Passport ,只用使用两到三个函数 IsAuthenticated, LoginUser , LogoTag2, FromNetworkServer 等等。

比如 MyPassport.asp :

  1 
  2
  3  
  4
  5
  6Dim oMgr, TimeWindow, ForceLogin, rURL 
  7
  8  
  9
 10
 11Set oMgr = Server.CreateObject("Passport.Manager") 
 12
 13  
 14
 15
 16thisURL = "http://" & Request.ServerVariables("SERVER_NAME") & _ 
 17
 18  
 19
 20
 21Request.ServerVariables("SCRIPT_NAME") 
 22
 23  
 24
 25
 26  
 27
 28
 29If oMgr.FromNetworkServer Then 
 30
 31  
 32
 33
 34Response.Redirect(thisURL) 
 35
 36  
 37
 38
 39End If 
 40
 41  
 42
 43
 44  
 45
 46
 47If oMgr.HasTicket Then 'just doing basic auth; any ticket is accepted regardless of age 
 48
 49  
 50
 51
 52' signout uses a different site-global URL, assumes that this URL exists ... 
 53
 54  
 55
 56
 57rURL = Server.URLEncode("http://" & Request.ServerVariables("SERVER_NAME") & _ 
 58
 59  
 60
 61
 62"/myPassport/loginOut.asp") 
 63
 64  
 65
 66
 67Response.Write("  欢迎你,你已登录  !") 
 68
 69  
 70
 71
 72'Will display sign-out link. 
 73
 74  
 75
 76
 77Else 'no Ticket, tell them to click Sign In 
 78
 79  
 80
 81
 82rURL = Server.URLEncode(thisURL) 
 83
 84  
 85
 86
 87Response.Write("  请登录  ") 
 88
 89  
 90
 91
 92'Will display sign-in link. 
 93
 94  
 95
 96
 97End If 
 98
 99  
100
101
102  
103
104
105'  未登录显示  Sign In  的  Logo  否则会显示  Sign out  的  Logo. 
106
107  
108
109
110Response.Write(oMgr.LogoTag2("www.ccBoysvr.com")) 
111
112  
113
114
115  

基本逻辑是先判断是否已经登录,如果没有登录显示登录并处理登录,否则显示 Sign Out 按钮。

如果 oMgr.IsAuthenticated () 那么

显示 " 欢迎 " & oMgr.Profile("Nickname")

否则

oMgr.LoginUser " 登录成功的返回 URL"

SDK 文档中会有涉及到:

Implementing .NET Passport Single Sign-In

(网站上比较常用的登录方式的实现)

Implementing Kids Passport

(连小孩子都考虑到了,不过此举比什么浏览器内容分级更好一些,可以针对专门的客户群, MS 这一点真的很领先,考虑周到)

Express Purchase Implementation Guide

( EP 最近被发现有漏洞,刚关闭后正在修复,虽然中国的国情不同,但是在外国 EP 最近发展的很不错,中国都已加入 WTO 了,这方面要加快哦。)

.NET Passport Cobranding Overview

(有关登录时,如何定制登录界面的公司 brand 的,下面第三点我们会看到一些)

另外 Specific Implementation How-tos 这一节一定不要放过,是否能够理解标志着你掌握 Passport 的深度(个人观点)。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ppsdk21/Implementation/Passport_Implementation.asp

结束这一小节前我附上一张更容易理解 Passport 的图片,也许通过图你能更好的理解 Passport 本身:

Passport

** When a user requests a secured page from a site using Passport, the site redirects the user to a Passport server for authentication. Once the user has been authenticated, he or she is sent back to the calling site. All communications between the Passport site and participating sites go through the user's browser, using encrypted cookies and query strings. **

( 图片出处 www.vbpj.com 作者: Jon Rauschenberger Email:[email protected]

我感觉中 Microsoft Passport SDK 2.0 文档已经是很齐全和详细,所有的步骤和细节都有写进去,如果我写得多了,就有摘抄的嫌疑了( haha ),唯一有一点不好就是本地安装的 SDK 居然没有这个文档,所有的文档和帮助都必须去 MSDN 的网站看(多么可恶,难道不要电话费吗?)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ppsdk21/Implementation/Passport_Implementation.asp


特别: 以上文字和图片涉及其他人的隐私和个人权利,如非被授权或经本人同意,任何网站或期刊请不要刊登、转载、改编、转贴或已其他形式进行传播。以上所有文字和图片只用于内部交流,不作任何新闻发表和商业用途。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus