教你如何让你的网站支持windows live id登陆

蓬宾白
2023-12-01
 【CSDN独家发表】微软于8月16日正式开放 windows Live ID(微软在线服务的身份认证系统,以前称作Passport),同时发布Windows Live ID Web Authentication SDK,这意味着第三方网站可以使用Live ID作为自己的身份认证系统,换句话说Windows Live用户将能够登录到其它网站。

在发布的SDK中,支持ASP.NET(C#)、Java、Perl、PHP、Python及当前最热门的Ruby。下面就以Java版本为例,让你的Java应用支持Live ID登陆。

首先, 下载Java版的SDK sample。微软提供的版本中使用JDK 1.6作为编译运行环境,主要是使用了JDK 1.6中的java.util.Arrays类中的copyOf和copyOfRange方法,只需将JDK 1.6中的Arrays类改名后在JDK 1.5环境中编译一下即可正常使用了。

下载 回来的zip文件解压到某个目录,然后根据自己的相应情况修改BuildAndDeploy.cmd文件。默认的配置使用Java EE SDK,如果要使用tomcat,只需要使AUTODEPLOY变量指向tomcat的webapps目录,同时将set SUNSDK=c:/sun/sdk一行注释掉,最后使SUNJDK指向JDK的安装目录即可。

双击运行BuildAndDeploy.cmd,完成后在AUTODEPLOY指向的目录下会生成一个webauth.war文件,然后再启动tomcat。在浏览器中输入http://localhost:8080/webauth/sample/index.jsp,即可看到欢迎界面,点击:sign in,在live.com网页上输入自己的live id帐号(MSN帐号)后,即可看到已经 成功 登陆http://localhost:8080了。

上面运行的仅仅是微软提供的简单示例,离实际运行环境还有距离,不过只要稍加修改即可与现在应用集成。

去https://msm.live.com/app/default.aspx申请一个appID,申请前需要先使用一个Live ID登陆。只需输入三个项,如:
Application Name: 豌豆网—在线密码管理
Return URL: http://www.onedoor.cn/webauth/sample/webauth-handler.jsp
Secret Key: (16到64位的一个字符串作为应用的Key)
提交后会得到一个16位的appID。
再打开/WEB-INF/classes/Application-Key.xml
<windowslivelogin>
  <appid>00167FFE80002301</appid>
  <secret>ApplicationKey123</secret>
  <securityalgorithm>wsignin1.0</securityalgorithm> 
</windowslivelogin>
将刚才的appID及输入的16到64位的Key替换掉默认值。
打开webauth-handler.jsp,可看到三个if分支,分别对应logout、clearcookie及login三个action,只需要将现有应用的相应代码块放到相应的分支下就行了。

需要注意的是,在login这个action中,wll.processLogin(request.getParameterMap())返回一个WindowsLiveLogin.User对象,此对象中包含一个ID,此ID用来标识不同的用户。针对每个appID与Live ID会产生不同的ID,但同一个Live ID在同一个应用的登陆产生的ID是始终不变的。利用此ID可与现有系统的用户相关联,这样老用户也能使用Live ID登陆你的应用了。

目前国内还没有发现支持Live ID的网站,不过可以在http://www.onedoor.cn/login上率先体验一下使用Live ID登陆第三方应用。

此次微软不但发布了基于Web的SDK,同时也发布了基于客户端的SDK。
 类似资料: