Office365上启用Skype For Business并实现本地AD用户登录
我们前面介绍了Office365与本地Exchange混合部署的配置介绍;我们都知道在Office365上可以配置Skype for Business、Sharepoint登服务,完成Office365与本地的混合部署的前提是需要配置本地Active Directory集成,在我们的试验环境介绍中,我们与本地域Ixmsoft.com集成,集成后然后我们使用dirsync工具将本地指定的OU下的用户同步到Office365上,然后分配相关的订阅服务实现用户登录访问。与本地的Acitive Directory集成后,我们如果登录Online上的用户我们借助了ADFS服务进行单点登录,这样方便用户登录,如果不做SSO的话,在用户登录的过程中比较麻烦,需要用户登录两次或者输入Online的登录名称格式,所以对于用户是不方便的,所以就使用了ADFS联合身份验证服务(注: 我们首先需要注意的是如果环境内配置了ADFS服务的话,ADFS服务的信任证书必须是公网受信任的(第三方颁发;不然将本地的AD用户同步到Office365上,启用Skype 服务器的话,本地账户是无法登陆的,因为使用本地AD用户登录Skype For Business的过程会通过ADFS服务验证登录请求,。另外注意的是,ADFS服务器上不建议启用IIS服务,不然会很麻烦的)。
我们今天介绍的是Office365与本地域关联后,然后配置好Skype For Business服务后,使用本地同步多Online上的用户无法登录Skype For Business的故障解决方案,具体见下:
在与本地AD集成后,如果在Office365上启用Skype For Busiess服务,需要在做相应的DNS解析记录,才可以启用Skype For Business 服务的相关配置;
我们首先单击配置Office365的域配置信息;该步骤信息会提示你在Online上使用对应的服务,然后来创建对应的DNS记录;
因为我们需要在Office365上启用Skype for business服务,所以根据系统提示,需要创建一下DNS解析记录才可以;
根据系统提示,我们在自己的DNS下创建对应的解析记录
添加DNS解析记录后,我们单击已经添加完成会提示,准备就绪
添加后,我们可以在服务运行状态下,查看Office365上所有服务的运行状态是否正常
因为我们环境内已经部署了Dirsync所以会将本地的AD用户同步到Online上
同步到Online的用户如果需要登录,我们需要给用户分配office365下的skype for business的订阅
我们可以单击管理员---Skype for business,会进入Skype for business管理中心
此时我们已经进入Skype for business管理中心,查看对应的配置信息
我们在用户下,可以看见已分配了Skype for business订阅的用户
单击常规可以看见对应的配置信息
组织下,可以配置访问服务的高级配置
同样,我们可以单击工具,对对应的服务进行配置及检查
我们可以使用以上微软提供的工具进行环境测试
https://technet.microsoft.com/library/jj907302.aspx
https://support2.microsoft.com/common/survey.aspx?scid=sw;zh-cn;3695&showpage=1
https://support2.microsoft.com/common/survey.aspx?scid=sw;zh-cn;3592&showpage=1
https://testconnectivity.microsoft.com/?tabid=o365
话不多多说了,我们我们首先使用office365的全局管理员进行登录
登录成功
接下来我们需要为user20 online用户登录尝试;确认该用户已经分配了SFB的订阅,不然是无法登陆的,所以我们已分配了SFB的订阅
我们使用user20登陆
登陆错误,提示证书有问题
提示证书问题,所以我们安装一下Office 365的Wosign证书试一下。
WoSign 根
http://www.wosign.com/Root/WS_CA1_new.crt
WoSign 中级根
http://www.wosign.com/Root/ca1_ov_2.crt
这个问题是ADFS federation那边有问题, 从log里面看是请求发到ADFS那边去了,但是ADFS那边有问题,没有返回正确的结果。
需要ADFS那边看下,我看到ADFS server那边用的证书都不受信任的, 先换个受信任的证书
<4904,1932,12:31:15:454>: +CUserExtendedProperty::SetExtProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='realminfo', wszPropertyValue=
<4904,1932,12:31:15:454>: +CUserExtendedProperty::_SetExtProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='realminfo', wszPropertyValue=
<4904,1932,12:31:15:454>: +IDCRL::GetUserExtendedProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='realminfo', wstrPropertyValue=0x6722df48)@singleidentity.cpp_5660
<4904,1932,12:31:15:454>: -IDCRL::GetUserExtendedProperty=0x0
<4904,1932,12:31:15:454>: -CUserExtendedProperty::_SetExtProperty=0x0
<4904,1932,12:31:15:454>: -CUserExtendedProperty::SetExtProperty=0x0
<4904,1932,12:31:15:454>: +CSingleIdentity::GetExtProperty(propertyName=federationbrandname)@singleidentity.cpp_1597
<4904,1932,12:31:15:454>: +CIdentityTokenBag::GetUserExtPropertyValue()@tokenbag.h_153
<4904,1932,12:31:15:454>: -CIdentityTokenBag::GetUserExtPropertyValue=0x0
<4904,1932,12:31:15:454>: -CSingleIdentity::GetExtProperty=0x0
<4904,1932,12:31:15:454>: +CUserExtendedProperty::SetExtProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='federationbrandname', wszPropertyValue=IXMSOFT.COM)@singleidentity.cpp_5793
<4904,1932,12:31:15:454>: +CUserExtendedProperty::_SetExtProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='federationbrandname', wszPropertyValue=IXMSOFT.COM)@singleidentity.cpp_5822
<4904,1932,12:31:15:454>: +IDCRL::GetUserExtendedProperty(wszUserName='partner.microsoftonline.cn::[email protected]', wszPropertyName='federationbrandname', wstrPropertyValue=0x6722df48)@singleidentity.cpp_5660
<4904,1932,12:31:15:454>: -IDCRL::GetUserExtendedProperty=0x0
<4904,1932,12:31:15:454>: -CUserExtendedProperty::_SetExtProperty=0x0
<4904,1932,12:31:15:454>: -CUserExtendedProperty::SetExtProperty=0x0
<4904,1932,12:31:15:454>: -CSingleIdentity::SaveExtProperties=0x0
<4904,1932,12:31:15:454>: +CIdentityCredentialBag::GetPersistedCredential()@credentialbag.cpp_402
<4904,1932,12:31:15:455>: +CAuthInfo::GetCachedAuthInfo()@singleidentity.cpp_3178
<4904,1932,12:31:15:455>: +CAuthInfo::GetCachedAuthInfo([email protected], wszVirtualAppName=(null))@singleidentity.cpp_3213
<4904,1932,12:31:15:455>: +CAuthInfo::GetUserTargetName()@singleidentity.cpp_3362
<4904,1932,12:31:15:455>: -CAuthInfo::GetUserTargetName()
<4904,1932,12:31:15:455>: CredEnumerateW failed = [email protected]_3249
<4904,1932,12:31:15:455>: -CAuthInfo::GetCachedAuthInfo=0x80048887
<4904,1932,12:31:15:455>: -CAuthInfo::GetCachedAuthInfo=0x80048887
<4904,1932,12:31:15:455>: CAuthInfo::GetCachedAuthInfo failed, [email protected]_431
<4904,1932,12:31:15:455>: GetPersistedCredential failed = [email protected]_485
<4904,1932,12:31:15:455>: -CIdentityCredentialBag::GetPersistedCredential=0x0
<4904,1932,12:31:15:455>: -CIdentityStore::CloseIdentityHandle=0x0
<4904,1932,12:31:15:455>: +CIdentityStore::ReleaseTokenBag()@identitystore.cpp_460
<4904,1932,12:31:15:455>: Removing token bag for user '[email protected]' 0x4c9d9e0 - no longer in [email protected]_508
<4904,1932,12:31:15:455>: -CIdentityStore::ReleaseTokenBag=0x0
<4904,1932,12:31:15:455>: -HandleDeleteContextEx=0x0
<4904,1932,12:31:15:455>: -IDCRL::CloseIdentityHandle=0x0
最后发现,我环境中的ADFS服务器的证书不受信任,所以也无法登陆,所以我们也需要为当前ADFS服务器更换证书;我们当初给ADFS配置证书的时候是使用的内部的CA服务颁发的,所以在公网上是不受信任的。
由于需要受互联网的信任,所以我们需要申请公网证书
我们首选需要为ADFS提交一个证书申请,然后生成对应的csr文件
我们在ADFS服务器的iis管理控制台下;服务器证书----创建证书申请
配置相关的证书配置信息
保存提交后的CSR文件
生成的CSR文件内容
免费公网证书申请
在此我们使用沃通
https://www.wosign.com/
https://buy.wosign.com/ProductList.html
我们定义需要申请的SSL证书域名名称;
ADFS.ixmsoft.com
提交后,我们需要提交CSR文件来生成证书
我们单击提交CSR选项,然后选择---方式二,自己提交CSR文件
提交后,我们单击下载证书
下载后,我们使用IIS这个证书就可以了
然后我们需要将该证书完成创建及,导入带有私钥的证书
完成证书申请
我们导出该证书
证书导出完成
https://support.microsoft.com/zh-cn/kb/2921805
证书准备好后,我们解析来就是在ADFS服务器本地计算机存储中安装新的证书
注:由于我们在ADFS服务器上的IIS上申请证书的,所以我们无需要下面操作的步骤,我们第一步跳过即可
在本地计算机证书存储中安装新的证书
步骤 1: 在本地计算机证书存储中安装新的证书
按照以下步骤为新安装的本地计算机证书存储中的证书。
然后单击 [启动]、 [运行]。
「MMC"并输入。
[文件]从 [添加 / 删除管理单元中单击。
[管理单元]从列表 [证书],然后选择 [添加单击。启动证书管理单元向导。
选择计算机帐户,然后单击下一步。
选择本地计算机: (运行此控制台的计算机),然后单击完成。
[请单击确定。
控制台根 \Certificates (本地计算机) \Personal\Certificates展开。
[证书[所有任务]、 [导入] 右键单击,然后单击。
步骤 2: 添加新证书的专用密钥访问 AD FS 服务帐户
添加新证书的专用密钥的权限 AD FS 服务帐户,请执行以下步骤。
只是继续打开本地计算机的证书存储区选择导入证书。
用鼠标右键单击证书,然后 [所有任务]、 [管理专用密钥] (私有密钥管理) 单击。
注意:您需要运行以下命令,如果不能管理私钥。
certutil -repairstore my *
ADFS 服务授予读取权限或更高版本上的帐户并添加正在运行的帐户。
以下步骤,我们需要我们只需要在ADFS2.0下运行,如果是ADFS3.0的话就无需要以下步骤了
运行在windows2008r2上的ADFS服务器(联合身份验证服务)是需要做以下第三步骤的配置的
运行在windows2012以上的ADFS服务器(联合身份验证服务)是不需要做以下第三步骤的配置的,直接跳过即可
S 管理器中,一个新的证书绑定到的 AD FS 的 Web 站点
使用 IIS 管理器,请按照以下步骤中,您的新证书链接到 AD FS Web 站点将。
打开 Internet Information Services (IIS) 管理器管理单元。
浏览到Web 站点的默认值。
右键单击默认的 Web 站点,然后选择编辑绑定。
[HTTPS]然后 [编辑单击。
从 SSL 证书中选择相应的证书。
然后单击 [确定]、 [关闭]。
步骤 4: 配置 AD FS 服务器服务要使用的新证书
可以使用 AD FS 服务器服务新证书,请按照以下步骤来配置。
打开 AD FS 2.0 管理。
AD FS 2.0 \Service\Certificates打开。
[证书右键单击 [设置服务通信证书] (服务通信的证书设置) 选择。
从证书选择列表中选择新的证书。
[请单击确定。
注意: 您可能会看到一个对话框,其中包含以下消息:
证书密钥长度是少于 2048 位。证书密钥大小小于 2048 位可能存在安全风险,并不建议。您还要继续吗?
后此消息 [是将显示以下对话框。
确保选定证书的专用密钥对此联合身份验证服务的服务器场中每台服务器上的服务帐户可以访问。
由于此过程完成后在第 2 步 [确定,然后退出。
我们已经可以看见证书的颁发者为:CN=CA 沃通免费SSL证书
注:如果有adfs代理服务器的话,我们需要直接重新运行ADFS的配置向导
最后我们发现替换证书后,没有生效,还是原来的旧的证书信息,所以我们需要手动强制更新;
首先查看当前本地计算机下的个人证书下的信息;我们查看到是有两张证书的,一张是原来的,一张是新申请的;
dir cert:\localmachine\my | fl
netsh http show sslcert | fl
我们删除默认证书即可;
最后总结,作为一个ADFS服务器不建议安装IIS服务
我们添加新的证书需要更具以上信息来新建添加
certhsh= 指纹
appid=应用程序ID
添加新的证书信
netsh http add sslcert hostnameport=adfs.ixmsoft.com:443 certhash=F628589821160514BDFDBDC51BD2F9C4DCB9EA99 appid={5d89a20c-beab-4389-9447-324788eb944a} certstorename=MY
更新后,我们最终发现 skype for business可以登陆了