看了思归的文章,感觉很有挑战性.就以Demo 的形式做了一个简单的实现. 自己来写一个Passport 服务器.
第一个问题:
用户的信息的处理.Passport 服务器来处理这些信息,当然了只会是一些简单的用户信息. 比如说性别,电话等
第二个问题:
Passport 服务器与 应用程序之间的数据交换. 看了 MS 的Passport SDK ,发现远没有我们想象的简单.MS 使用了COM 与 Passport 服务进行数据交流, 我们在短时间内也不太可能编写一个 COM 组件来处理. 当然想到了WEB 程序常用的cookie ,因为在DotNet 中的(From 验证模式)中也使用了cookie , 可是因为域的问题.在两个不在同一台机器上的程序是无法共享cookie 的(我没有找到过好的方法).所以我想到了 查询字符串.
第三个问题:
Ticket 的生成.当Passport 生成验证 Ticket 后,把Ticket 信息回发(使用“查询字符串“给请求应用程序.应用程序把Ticket 写入cookie (这是应用程序的cookie ,当应用程序使用它时不会有域的问题). 这个 MyPassportAuthenticationTicket 类要自己来写. 如果你想用 FormsAuthenticationTicket 不代替的话也是可以的,但要自己来对它进行加密传送.如果你想用FormsAuthentication.Encrypt方法 那是不行的.因为它的加密算法中加入了服务器machineKey .
第四个问题:
自己来实现一个PassportIdentity ,把功能进行一个封装.实现其中的 LogoTag2 方法.来生成一个登录链接.
最后一个问题:
就是不断完善了,不过有系统还有一个点问题,明眼人一看就知道了,返回链接参数的保持问题.
不知道,有没有更好的方法. 大家一起来讨论一下.