在之前博客中已经描述了User Profile的两种配置场景,这篇博客将详细介绍微软官方推荐的配置方法。

测试环境的架构可以参考之前的博客内容,这里就不做介绍了,直接切入主题。

1. 在sp-farm1中创建User Profile Services服务应用程序。创建的过程因为不是这篇博客的重点就不做过多描述。

2. 配置AD的连接器,将contoso.com中需要加入网站的用户,全部同步到User Profile中,在同步之前需要确认user Profile同步服务是否启动,如果没有启动,将这个服务启动,这个启动过程会比较慢,启动的要看机器的性能,请耐心等待。

3. 配置个人网站,可参考http://technet.microsoft.com/zh-cn/library/ee624362.aspx,如果你还是看不明白,那你可以使用向导的方式添加User Profile Services。这样我的网站功能自动就会被创建了。

4.配置其他场与User Profile Services场的互相信任。微软官方叫这两个场为 PublishingFarm(发布场)和ConsumingFarm(消费场),我看到所有的相关的内容中也都用这个名字,索性我也用这名字来称呼它们,免得弄混。我的发布场是sp-farm1,消费场是sp-farm2。

5.在配置互相信任之前,需要将两个场的证书导出。使用下面的PowerShell 命令分别在两个场中导出证书。在运行所有PowerShell命令完成时,都不要关闭PowerShell窗口,因为很多变量会多次引用。

a. 在消费场中运行

$rootCert = (Get-SPCertificateAuthority).RootCertificate
$rootCert.Export("Cert") | Set-Content <C:\ConsumingFarmRoot.cer> -Encoding byte
$stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate
$stsCert.Export("Cert") | Set-Content <C:\ConsumingFarmSTS.cer> -Encoding byte

b.在发布场中运行

$rootCert = (Get-SPCertificateAuthority).RootCertificate
$rootCert.Export("Cert") | Set-Content <C:\PublishingFarmRoot.cer> -Encoding byte
6. 将消费场中导出到证书文件拷贝到发布场中,同时将发布场中的证书拷贝到消费场中。我建议大家使用剪切的方式,免得文件同时在一个目录下的时候会搞混。我第一次配置的时候没成功,可能就是因为证书弄混了。
7. 确认所有证书的正确性,是否正确的复制了证书。然后就需要配置服务场的信任关系了。
a.在消费场中运行,其中 "sp-farm1"这个名字,叫什么都可以,只要能区分出来这是什么。
$trustCert = Get-PfxCertificate "C:\PublishingFarmRoot.cer"
New-SPTrustedRootAuthority "sp-farm1" -Certificate $trustCert

b.在发布场中运行
$trustCert = Get-PfxCertificate <C:\ConsumingFarmRoot.cer>
New-SPTrustedRootAuthority "sp-farm2" -Certificate $trustCert
$stsCert = Get-PfxCertificate <c:\ConsumingFarmSTS.cer>
New-SPTrustedServiceTokenIssuer "sp-farm2" -Certificate $stsCert
$farmid = "<guid>"; #farmid是要消费场中运行PowerShell "Get-SPFarm | Select Id"可以取到。
$security = Get-SPTopologyServiceApplication | Get-SPServiceApplicationSecurity
$claimProvider = (Get-SPClaimProvider System).ClaimProvider
$principal = New-SPClaimsPrincipal -ClaimType http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid -ClaimProvider $claimProvider -ClaimValue $farmid
Grant-SPObjectSecurity -Identity $security -Principal $principal -Rights "完全控制"
Get-SPTopologyServiceApplication | Set-SPServiceApplicationSecurity -ObjectSecurity $security
8. 到目前为止,我们配置服务器的互相信任,并为消费场设置了应用程序的控制权限。但要是实现关注功能,还是在做一些Power Shell命令
a. 在发布场中运行以下命令,其中realm是为了给发布场配置一个别名,也只能这么理解了。那一串00000003……的guid是固定值,不能变。
Set-SPAuthenticationRealm -realm "myrealm"
$sts=Get-SPSecurityTokenServiceConfig
$Realm=Get-SpAuthenticationRealm
$nameId = "00000003-0000-0ff1-ce00-000000000000@$Realm"
Write-Host "Setting STS NameId to $nameId"
$sts.NameIdentifier = $nameId
$sts.Update()  
$c = Get-SPSecurityTokenServiceConfig
$c.AllowMetadataOverHttp = $true  #needed if you are not using ssl
$c.AllowOAuthOverHttp=$true #needed if you are not using ssl
$c.Update()
iisreset
b. 在消费场中同样要执行一段类似的PowerShell
Set-SPAuthenticationRealm -realm "myrealm"
$sts=Get-SPSecurityTokenServiceConfig
$Realm=Get-SpAuthenticationRealm
$nameId = "00000003-0000-0ff1-ce00-000000000000@$Realm"
Write-Host "Setting STS NameId to $nameId"
$sts.NameIdentifier = $nameId
$sts.Update()  
$c = Get-SPSecurityTokenServiceConfig
$c.AllowMetadataOverHttp = $true  #needed if you are not using ssl
$c.AllowOAuthOverHttp=$true #needed if you are not using ssl
$c.Update()
iisreset
9.到这里还没有结束,因为在2013这个版本中,SharePoint使用OAuth协议,所以我们需要配置以下OAuth的信任节点。如果你配置过SharePoint 2013和Exchange2013,lync 2013的信任,对这个一定不陌生,话说之前配置 SharePoint网站邮箱时,也把我折磨的够呛啊。
a. 在消费场运行以下PowerShell命令。
New-SPTrustedSecurityTokenIssuer –MetadataEndpoint "http://sp-farm1/_layouts/15/metadata/json/1" –Name "sp-farm1.contoso.com" -RegisteredIssuerName $nameId

执行完成时输入个Y直接运行就ok。
b. 在发布场运行
New-SPTrustedSecurityTokenIssuer –MetadataEndpoint "http://sp-farm2/_layouts/15/metadata/json/1" –Name "sp-farm2.contoso.com" -RegisteredIssuerName $nameId


同样输入一个Y。
运行完成后,PowerShell命令就执行到此为止了。接下来要做的就是发布User Profile Services。
10. 通过管理中心进入到管理服务应用程序,找到user Profile Services,选中。确认选中后在Ribbon菜单中点击“发布”
11. 在弹出窗口中,选中“向其他场发布此服务应用程序”,这里就会看到说要不这个应用程序一定要做户型信任。点击这个链接就可以看到之前用PowerShell添加的服务器名称了。要是没有证明你PowerShell执行的不正确。
拷贝“发布的URL”那一串地址到一个txt文件,一会你会用的到。然后点击确定。
12. 发布已经完成了,接下来就是要在消费场中添加一个User Profile Services的链接了。打开消费场的管理中心,同样进入到管理服务应用程序页面。
点击ribbon上的连接。找到User Profile Services。
13. 在弹出窗口中输入之前拷贝出来的那一长串URL地址。就是发布出来User Profile Servies的地址,输入完以后点击确定。这个地方,可能会有些反应迟钝,点完以后没啥反应,别急等一会就好了。点完以后还会有一个确认画面,在那个画面中也会有一个确定要点一下,不过你会发现那个按钮是灰的根本点不了,这个时候你只要点一下页面中的User Profile Services的那个链接地址一下,就可以点确定。(我是没找到原因为什么要这样)。到这里User Profile Services的发布就完成了。
14. 我们需要注意一点,在没有User Profile Services的服务时,用户登录网站时(见图),新闻源,SkyDrive Pro,网站 是没有地。只有提供User Profile服务才会出现。
15. 到这里基本配置已经完成了,但你会发现你的消费场里,为啥还看不到 “新闻源、SkyDrive Pro”这些东西呢,原因是你需要在发布场中运行一下 用户配置文件同步。同步完成以后就会有了。用户登录以后点击新闻源就会跳转到发布场也就是sp-farm1场中创建个人站点。同样其他场要想使用User Profile Services需要使用同样的操作在来一遍。到此为止我们已将微软官方推荐的User Profile 服务配置完成了, 整个企业环境内就提供了一个 User Profile Services 实现了用户信息的统一管理。但你别高兴的太早。你点一下网站或文档的关注看一下。针对用户的关注是没有问题地,因为所有用户都在同一个场里,但你关注网站和文档的时候就会报错。因为他们不在一个场里。错误信息全部都是数据库报出来的,这也是我通过SharePoint Log文件中得到的信息,所以就开始针对数据库动手了。
16. 首先需要将消费场中的系统账户,添加到发布场中3个User Profile的数据库中并赋予Owner的权限。这一步很关键,如果不做这一步,关注功能就没戏了,当然如果你的两个场使用的同一个系统账户,那就没问题了。实际生产环境中基本也不会用同一个。
17. 需要在发布场防火墙中开启1433的端口,如果你的数据库端口换了,就开启你换的那个。推荐在生产环境中,更换1433的端口。
 
知道这里才算是大功告成。
找个用户点一下消费场的网站关注功能看看。如果能像图中标注那样,那证明你成功了。如果还有错误,你可以发邮件给我。我帮你分析下原因。
 
后面的一篇blog将介绍多个场中都有User Profile Services情况下将如何设置。当然如果你能根据这篇内容就配置出来第二个场景来,说明你已经清楚了跨场发布都在干些什么了。
参考文献
http://technet.microsoft.com/ZH-CN/library/ee704552.aspx
http://technet.microsoft.com/ZH-CN/library/ee704545.aspx
http://technet.microsoft.com/ZH-CN/library/ff700211.aspx
http://technet.microsoft.com/ZH-CN/library/jj992595.aspx

 
 
 
 



SharePoint 2013 User Profile Services之跨场发布的更多相关文章

  1. SharePoint 2013 User Profile Services之跨场设置

    这段时间有个客户需要在不同SharePoint场中使用网站.文档和用户关注功能.但实际使用中发现默认的关注功能不能跨场使用,这也引出了我接下来的博客,我将在博客中详细描述整个过程. 因为“关注”功能是 ...

  2. SharePoint 2013 配置Excel Services

    前言:本文主要介绍如何启用SharePoint 2013版本Excel Services服务,并配置Excel Web Access部件,使Excel文档可以显示在Web页面中. 简单说一下流程,Sh ...

  3. SharePoint 2013 Excel Services ECMAScript 示例之明日限行

    前言:最近遇到一个“明日限行”的功能,北京的交通啊,这个不在今天讨论范围内,暂不吐槽,想想代码开发,还要写WebPart部署,很麻烦,而且部署服务器,需要领导审批,想绕过这个麻烦事儿,就想到客户端了, ...

  4. sharepoint 2013 reporting services 远程server返回错误: (500) 内部server错误。

    在sharepoint 2013部署reporting services过程中,点击管理中心,server上的服务.系统配置.提示了一个错误: 远程server返回错误: (500) 内部server ...

  5. SharePoint 2013 入门教程

    以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...

  6. SharePoint 2013 入门教程--系列文章

    转:http://www.cnblogs.com/jianyus/p/3381415.html 以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这 ...

  7. SharePoint 2013 入门教程 [不断更新~]

    以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...

  8. 在 SharePoint 2013 中针对地理位置字段创建地图视图

    在 SharePoint 2013 中针对地理位置字段创建地图视图 了解如何通过在 SharePoint 2013 列表中使用地图视图来显示位置信息.您可以通过 SharePoint 用户界面 (UI ...

  9. 关于SharePoint 2013 UserProfile跨场的几点注意

    1.跨场中需要以下几个Service实例,没有这几个会遇到各种问题 2.发布场和消费场同时需要创建Host站点,否则消费场的SiteFeed无法使用. 3.跨场关注的问题请参考:http://www. ...

随机推荐

  1. webBrowser 加载网页

    事件 webBrowser_DocumentCompleted private void webBrowser_DocumentCompleted(object sender, WebBrowserD ...

  2. OpenGL Shader in OpenCASCADE

    OpenGL Shader in OpenCASCADE eryar@163.com Abstract. As implementation of one of the strategic steps ...

  3. 简单生成svg文件

    this.fileSaveSync = function (file, data) { var fs = require('fs-extra'); fs.writeFileSync(file, dat ...

  4. es6学习笔记一数组(中)

    接着上一篇,给大家再分享一些数组的其他方法.大家也可以去点击这里学习数组更多的方法 concat方法: 概述:    concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回. ...

  5. 在浏览器中输入URL按下回车键后发生了什么

    在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...

  6. android模拟器默认位置的修改

    1.创建ANDROID_SDK_HOME环境变量,如ANDROID_SDK_HOME=D:\eclipse_android\android-sdk 2.在ANDROID_SDK_HOME目录下,建立. ...

  7. 【原创】开源Math.NET基础数学类库使用(11)C#计算相关系数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  8. Angular.js Services

    Angular带来了很多类型的services.每个都会它自己不同的使用场景.我们将在本节来阐述. 首先我们必须记在心里的是所有的services都是singleton(单例)的,这也是我们所希望得到 ...

  9. beego上传文件

    html代码: <form id="fform" method="POST" enctype="multipart/form-data" ...

  10. 你真的了解load方法么?(转载)

    本文授权转载,作者:左书祺(关注仓库,及时获得更新:iOS-Source-Code-Analyze) 因为 ObjC 的 runtime 只能在 Mac OS 下才能编译,所以文章中的代码都是在 Ma ...