关于从本地迁移到Skype for Business Online用户使用Microsoft Lync Connectivity Analyzer的问题以及其自动发现过程

问题:

==================

混合环境下,在使用Microsoft Lync Connectivity Analyzer对迁移到Skype for Business Online用户进行测试的时候,测试失败。 工具尝试使用HTTP连接到Lync自动发现地址失败后,分析就结束了。

问题分析:

=====================

在使用Lync Connectivity Analyzer的测试的时候,有一个Lync Account Type的选项。

1. 对于Lync Account Type为On-premises的用户,在连接性测试时,会通过HTTP来自动发现,如果HTTP失败会重新发送通过HTTPS来发送自动发现的请求。

关于Lync On-premises的自动发现流程,更多细节可参考此博客:https://blogs.technet.microsoft.com/nexthop/2012/04/25/lync-server-2010-mobility-deep-dive-autodiscover-service/

2. 对于Lync Account Type为Office 365的用户,在连接性测时候时,会先通过HTTP来自动发现,一旦通过CNAME记录查询到Office 365 URL并连接到Office 365服务器时,会做一个Autodiscover的HTTPS自动重定向。如果HTTP请求失败, 就不会有下面HTTPS的重定向产生了。

比如,我们测试一下个纯Office 365的账号,通过Log,我们可以发现,在此过程中,会首先发送一个http的请求https://lyncdiscover.hx608.onmicrosoft.com , 在连接到云端的Exchange服务器后,会被重定向到HTTPS连接https://webdir0f.online.lync.com 因此,对于一个纯Office 365用户,都会先通过HTTP连接到服务器,然后再被重定向到自动发现的HTTPS请求。

因为,如果我们选了Lync Account Type为Office 365类型。如果HTTP自动发现失败后(比如由于没有添加CNAME记录),就不会继续发送请求了。就不会有HTTPS的重定向了。

结论

=================

因此对于Skype for Business混合环境下,即使是迁移到Skype for Business Online的用户,我们在做连接性测试的时候,依然要选用On-Premises用户类型来做测试。对于Skype for Business混合,我们需要把DNS记录依然指向本地。对于这些用户的登录,会先连接到本地,然后由本地Skype for Business On-premises会通过此用户的msRTCSIP-DeploymentLocator属性值,来判断此用户在云端,并重定向到Skype for Business Online.

延伸分析

========================

我们可以简单来分析一下对于一个迁移到云端用户的自动发现的过程。

1. 发送HTTPS自动发现请求:

2. 解析到本地Skype for Business服务器后,由本地服务器返回给用户自动发现服务地址。

3.客户端被重定向到Skype for Business的自动发现服务地址。https://lyncweb.domain.com/autodiscover.autodiscoverservice.svc

4. 初次发送验证请求,会返回401,未授权。 服务器会返回验证服务WebTicketService的地址给用户。

5. 客户端开始验证并获取WebTicket.

6. 客户端获取到WebTicket后,再次发送请求给自动发现服务, 返回成功的请求状态202.

7. 自动发现服务查找用户所在的池,发现用户是Skype for Business Online的用户。重定向到Skype for Business Online服务器自动发现的地址。https://webdir0f.online.lync.com/autodiscover/autodiscoverservice.svc/root?originaldomain

8. 继续被重定向到https://webdir0f.online.lync.com/autodiscover/autodiscoverservice.svc/root/user

注意:<FQDN>/Autodiscover/AutodiscoverService.svc/root/domain和<FQDN>/Autodiscover/AutodiscoverService.svc/root /user的区别是,root/domain可被匿名访问,可用此地址来获取当前Lync的拓扑信息,比如池的FQDN,还可用来在排错的过程中验证Lync自动发现服务器是否被安装,工作是否正常。而root/user, 需要用户的验证过程,用户获取到webticket之后才能查询出用户需要连接的URLs,因此如果是错误的credentials, 或没有拿到web-ticket的状态下向root /user发送请求会返回401,未授权的结果。

9. 发送请求到https://webdir0f.online.lync.com/autodiscover/autodiscoverservice.svc/root/user,返回401.

10. 向Skype for Business Online服务器的WebTicketService获取webticket.

11. 获取成功或,再次请求自动发现服务,返回状态200.

12. 最终Skype for Business Online服务器的自动发现服务帮助用户查询到用户所在的池,并返回用户的连接URLs. 自动发现完成。

Xixi Huang

微软合作伙伴技术顾问