无法向 Skype For Business Online UCWA 进行身份验证

Posted

技术标签:

【中文标题】无法向 Skype For Business Online UCWA 进行身份验证【英文标题】:Can't authenticate to Skype For Business Online UCWA 【发布时间】:2017-04-05 09:06:44 【问题描述】:

我在对 S4BO 进行身份验证时遇到问题。我已经注册了我的应用程序(在 azure 门户中),它与https://ucwa.skype.com/websdk 的 webSDK 演示一起正常工作 我遵循的过程如下:

    我使用以下代码执行 OAuth 链接重定向:

    https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&resource=https://webdir.online.lync.com&redirect_uri=http://myurl.dev/skype
    

    获取已经返回的授权码,并使用它生成访问令牌:

    POST https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=db01d1f5-f2a3-4d82-b4bc-6b3b4071d7df&resource=https://webdir.online.lync.com&redirect_uri=http://acme.intranet.dev/skype
    
         grant_type=authorization_code
         code=$thecodehere
         client_id=$clientidhere
         client_secret=$clientsecrethere
         redirect_uri=$sameuriasbefore
    

    在此之后,我有了访问令牌。现在我需要我的用户网址。所以我会自动发现

    GET https://lyncdiscover.mydomain.onmicrosoft.com
    

我收到类似的结果:


"_links": 
    "self": 
      "href": "https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=mydomain.onmicrosoft.com"
    ,
    "user": 
      "href": "https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=mydomain.onmicrosoft.com"
    ,
    "xframe": 
      "href": "https://webdir1e.online.lync.com/Autodiscover/XFrame/XFrame.html"
    
  

    我尝试在用户 url 登录:

    GET https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=mydomain.onmicrosoft.com
    HEADERS:
    Authorization: Bearer + theAccessTokenFromAbove
    Referer: https://webdir1e.online.lync.com/Autodiscover/XFrame/XFrame.html
    

在此之后我得到 403 Unathorized。我哪里错了?

【问题讨论】:

它比你上面的更复杂。您拥有用户对 O365 的访问令牌。然后,您需要使用这些凭据登录 Skype for Business Online,最后获得 UCWA 可以用来通过自动发现获得授权的 oauth 令牌。 你能告诉我或指向一个资源来展示如何做到这一点吗?我一辈子都无法从他们拥有的文档中弄清楚。 具体来说,我不确定如何在我的 Web 应用程序服务器应该能够代表用户安排会议的情况下执行此操作,即使用户未登录到站点(所以当用户不在我的网站上时我应该可以访问)。 【参考方案1】:
    获取已返回的授权码并使用它生成访问令牌

在此步骤中,您需要指定 resource=https://webdir1e.online.lync.com(注意 1e)才能访问此特定中心。

实际上,从此时开始,您必须在每个新服务器上进行身份验证,因此在所有 webdirXX 上,然后在 webpoolXXXXX 上。

我写了一篇巨大的交互式文章,详细描述了请求流程(在我花了一周的时间对 outlook.com 进行逆向工程之后,因为 MSDN 文档 - 至少在撰写本文时 - 不完整且不正确),也许它可以使用:

https://markeev.com/posts/skype4b/

如果您将应用重定向 URL 配置为文章 URL(当然是暂时的),您甚至可以直接从那里测试查询。

此外,可以在 Github 上找到“一体式”自动发现和身份验证代码(带有现场演示):

https://github.com/andrei-markeev/skype4b

【讨论】:

以上是关于无法向 Skype For Business Online UCWA 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Skype for business iOS SDK:无法启动音频服务

skype for business 无法共享桌面无法传输图片

Skype For Business Server 2016 无法共享PPT和白板

Skype For Business Server 2016 无法共享PPT和白板

MS 机器人无法在 Skype for Business 上运行

无法使用 Skype for Business 2016 安装 Lync 2013 SDK