使用live id作为sharepoint 的登录数据提供方,确实不是一件容易的事件,因为这会让我们的场景变成了面对公共网络的网站,当然也能应用内网。当然,我们不再需要去维护密码和用户注册等。
对于sharepoint 2007,没有什么本地化的支持,不过据说在网上有一些登录的代码:http://spwla.codeplex.com,但是2010已经有了本地的声明访问,所以有了本文。Background
背景:这里需要详细介绍一下背景,我们需要理解window live ID结合基于身份验证访问方式。
首先,声明的验证方式基于简单的场景,
尝试访问 网站的客户端/用户(也叫做依赖方/RP),
RP访问分布式的信任方(身份提供方IP),
在我们的例子里面SharePoint=RP,Live ID=IP,
当然个体用户就是主题(subject),当subject尝试访问RP,subject将会跳转到IP(这是一个实际的登录过程发生的地方)。身份提供方也就是live网站附加上cookies到输出流,并且带用户跳到RP(SharePoint),这其中也有一个进行验证加密,以供RP可以最后验证这个用户。想要知道更多,就去看A guide to Claims-based Identity and Access Control.
不过我们看看图,会更清楚点:
Window Live ID(WLID) 比较关心的是登录和发送一个唯一标识ID给SharePoint网站。这个唯一标识ID就是整个验证能给到你的东西了。不幸的是,你不可以拿到正确的邮件地址或者是用户名字。moss首先验证这个加密安全token.
另一重要的事是,WLID有两区域:INT和PROD,PROD指我们正常使用的,INT是用户开发测试的。所以我们先在INT测,你没法跳过INT,你得先注册你的网站,再去PROD区域。
注册网站
在你开始配置Sharepoint 网站之前先注册你要用于Window LIVE ID登录的网站。下面就是网址:http://msm.live.com/. 这里用正常的LIVEID登录。你会得到一个确认画面,点YES 确认并继续:
打开Go to Manage Your Site 链接
Modify Editable Site Properties
urn:wictorslivesite:int
. https://extranet.corp.local/_trust/default.aspx
. 这个网址是MSM回发的网址, 要写好,不然找不到你的网站,只要把extranet.corp.local改成你的就可以了To create the Trusted Identity Token Issuer, that we will use to configure as the login provider for the Web Applications, we fire up PowerShell. This step will not be that "visual" as the previous ones, since none of these commands can be run using the standard SharePoint user interface. I guess it's just a matter of time until someone makes a neat add-on with these simple commands...
I'll give you the script first and then explains all the involved steps:
接下来要创建 Trusted Identity Token Issuer, MOSS2010的验证机制啦。
这个东西创建就是为了给我们后面的应用程序登录用的。打开的PowerShell,把下的脚本跑一下:能不能成功看人品吧,反正我没成功,后来改了一下,就可以,人品还是需要考验啊。
1: asnp microsoft.sharepoint.powershell 2: $realm = "urn:wictorslivesite:int" 3: $certfile = "C:\Temp\LiveID-INT.cer" 4: $rootcert = Get-PfxCertificate $certfile 5: New-SPTrustedRootAuthority "Live ID INT Root Authority" -Certificate $rootcert 6: $emailclaim = New-SPClaimTypeMapping
-IncomingClaimType "http://schemas.xmlsoap.org/claims/EmailAddress"
-IncomingClaimTypeDisplayName "http://schemas.xmlsoap.org/claims/EmailAddress"
-SameAsIncoming 7: $upnclaim = New-SPClaimTypeMapping
-IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
-IncomingClaimTypeDisplayName "UPN"
-LocalClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" 8: $authp = New-SPTrustedIdentityTokenIssuer -Name "LiveID INT"
-Description "LiveID INT" -Realm $realm -ImportTrustCertificate $certfile
-ClaimsMappings $emailclaim,$upnclaim -SignInUrl "https://login.live-int.com/login.srf"
-IdentifierClaim "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"