1

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

  1. 我使用以下代码执行 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
    
  2. 获取已返回的授权码,并使用它生成访问令牌:

    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
    
  3. 在此之后,我有我的访问令牌。现在我需要我的用户网址。所以我做自动发现

    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"
    }
  }
}
  1. 我尝试在用户 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。我哪里错了?

4

1 回答 1

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

在此步骤中,您需要指定resource=https://webdir1e.online.lync.com(注意1e)以访问此特定集线器的资源。

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

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

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

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

于 2017-04-11T17:21:46.687 回答