Hi,现在我们暂时不谈Passport

Me顽主

Me顽主

2016-01-29 12:54

Hi,现在我们暂时不谈Passport,Hi,现在我们暂时不谈Passport
Hi, 现在我们暂时不谈Passport
小气的神2002.02.16 Article Type: In-Depth 难度等级:6/9 版本:1.27 在我写了那篇Passport你的网站之后,我发现自己犯了一个错误,从一开始。也许当时只是想表达自己对Passport的喜爱和接触之后还算美好的虚荣感受。我想在当时陶醉时,肯定刻意忽略了其它的某种因素。不然当计划正式开始使用它时,不会发现它突然带有了某种不确定性,甚至退后到测试的机器上也不能工作了;多次再去做和对着文档去想了又想,开始有些惭愧,因为我发现那篇文档几乎毫无用处,这将是一次名不其实表述,那么对于一个技术人员来说,这种感受是痛伤的,同时对他来说也将是个教训。 不过Passport的重要性丝毫不亚于它的复杂和繁琐,无法预知Microsoft将如何改善这种长距离的集中验证所带来的不确定“刺耳音符”,但在未来可以看到的体系和应用中,避而不见Passport,也意味着今后你在MS平台上要冒更多的风险。那么对于“是否需要接触Passport?”、“现在是否需要学习了解Passport?”这样问题的答案都应该是慎重的“应该”,放弃观望的态度将是一个好的开始。我们可以在接触学习中等待3.0版本的Passport,不过在没有更好的Demo,没有我们需要的Help文档的一段时间里,现在我们暂时不谈MS的Passport。它依然复杂得超出我们的理解,我们只能一点点去尝试和了解,做那些我们力所能及的事。最后欢迎回到这个脆弱而迷幻的世界,它依然充满失落和期待。 下面将是一个Passport的实现(我猜是最小的一个框架),它的最初是Nathan Smith (nathan_y_smith@hotmail.com )示范性的一个dotNET β2的版本,调试时我进行了一些小的改动(不少改进吧,但主框架没动),并且添加了一个简单的测试前端。在我升级到dotNET 1.0后,重新测试了它,所以它需要的环境可能是:Windows 2000 Server, MS SQL 2000 SP2 (中文或英文),dotNET SDK 1.0 , VS.NET RTM,IIS 5.0 SP, IE6 2813 数据结构: 设计两个数据库:PassportSvr , PassportClient PassportSvr: PassportClient: 另外还有下面这些实现核心功能的存储过程: sp_registerUser sp_setUserInfo sp_setUserPassword sp_setUserStatus sp_purgeUser sp_setUserHomeService sp_validateUser sp_registerService sp_setServiceInfo sp_setServicePassword sp_setServiceStatus sp_purgeService sp_validateService 应用实现: 根据上面的数据结构实现了两个Web Services,一个作为整体的Services的管理接口,一个是提供给最终用户使用的Client Services接口。看得出来最终提供给用户使用的只有7个函数,当然开始时你可以在调试Services WebServices时测试一下RegisterService函数,它将建立一个Services,记下services_name和 services_password ,在实现Client的WebService的Global.cs中有这样应用: protected void Application_Start(Object sender, EventArgs e){ DataManager.InitManager(); Passport ppSvc = new Passport(); AppTicket = ppSvc.AuthenticateService("Passport","passport"); ppSvc=null;} 整个实现中有个与Passport相似的安全机制-Ticket,当用户通过验证之后获得一个AuthenticationTicket并产生一个Token,我认为这里是最有趣和最棒的部分,简单有效。 Ticket Structure public class AuthenticationTicket{ public AuthenticationTicket() { } public int Token; public int OwnerID; public double ExpirationDate; public double IssueDate; public string NickName; public string FirstName; public string LastName; } Token Generation Routine static private int GenerateToken(int systemID, string nickName, int passwordHash, double issueDate, double expirationDate){ int rtn; // our return value string s_token; // string concatenation of the objects // concatenate all of our values together. // note the use of hashing the password and the id, this // *should* help reduce the probability of attack s_token=systemID.GetHashCode().ToString() + nickName + passwordHash.GetHashCode().ToString() + issueDate.ToString() + expirationDate.ToString(); // get the hash of the concatenation and return it rtn=s_token.GetHashCode(); return rtn;} 好了解决了主要问题,后面的实现的就迎刃而解了,下面分别是两个Web Services暴露的功能函数。 public AuthenticationTicket AuthenticateServicepublic AuthenticationTicket AuthenticateUserpublic AuthenticationTicket CreateAccountpublic int Dis
展开更多 50%)
分享

猜你喜欢

Hi,现在我们暂时不谈Passport

电脑网络
Hi,现在我们暂时不谈Passport

暂时不宜受孕的13种情况

孕前
暂时不宜受孕的13种情况

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

暂时不要baby的是大情况

电脑网络
暂时不要baby的是大情况

Hi

工业设计 设计素描
Hi

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ie6普及的大环境下暂时不要考虑w3c标准

Web开发
ie6普及的大环境下暂时不要考虑w3c标准

逛街八卦无话不谈 我们需要闺蜜的10个理由

健康 心理健康
逛街八卦无话不谈 我们需要闺蜜的10个理由

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash制作可爱时钟

Flash制作可爱时钟

跟我来学PHP5:session会话的使用和分析

跟我来学PHP5:session会话的使用和分析
下拉加载更多内容 ↓