8

我们已使用 SharePoint Online 的远程身份验证来访问目标 O365 共享点站点并检索 FedAuth 和 rtFA cookie。这适用于具有 xxx.sharepoint.com 域的目标 URL。现在,如果此域已自定义为 example.com,则身份验证机制失败并抛出错误 - “无法找到登录请求中使用的合作伙伴 DNS”。有没有一种方法可以针对其域已自定义为不反映 .sharepoint.com 的 sharepoint 在线站点进行身份验证。?

4

1 回答 1

10

据我了解,SharePoint 的自定义域不再保持声明感知。所以,如果你真的想得到 cookie,解决方案不会很理想,而是一些 hacky 的东西。鉴于 Microsoft 的限制数量,除了屏幕报废之外,没有直接解决此问题的方法。我成功了,并且可以通过屏幕报废获得 fedAuth cookie。我知道,这不是很容易,但很有可能。它需要您向 SharePoint 门户发出大约 6 个 Web 请求。

  • 第一个是对自定义域的 Web 请求。

  • 其次,从响应头中获取“X-Forms_Based_Auth_Required”的值,并向其发出请求。

  • 第三,从响应头中获取SetCookie(rps context cookie)和Location的值,向Location发起请求。

    • 第四,获取SetCookie、“srf_uPost”、“PPFT”的值,对响应的ResponseUri进行请求。在请求头中设置 Cookie 和 ppft 的值,并请求“srf_uPost”的值。在请求流中还包括 "login=" + username + "&passwd=" + 密码。

    • 第五,从html中获取“action”元素和“T”元素的值。并向您从操作元素的值中获得的 url 发出请求。包括元素 T 作为后串。

    • 第六,重复第五步,这次你会得到 fedAuth cookie 作为响应。

您应该可以轻松通过,但是如果您愿意,可以在我的博客中找到所有代码

于 2013-02-06T20:53:11.187 回答