从ADFS声明auth

我尝试通过WPF应用程序连接到SharePoint Online实例。 我发现这篇文章描述了一个可能的解决方案,但问题是特定实例前面有一个Active Directory联合身份validation服务(ADFS),我不知道如何获取身份validation令牌。 (我无法为我的应用程序创建证书以对adfs进行身份validation。)

任何已经完成此操作的人都可以通过一些代码片段来支持我吗?

我和Fiddler一起玩过。 基本上流程是这样的:

  • 从ADFS获取SAML令牌
  • 将其发布到https://login.microsoftonline.com/login.srf (正文应为wa=wsignin1.0, wresult=…token… and wctx=MEST=0&LoginOptions=2&wa=wsignin1%2E0&rpsnv=2&ct=1343219880&rver=6%2E1%2E6206%2E0&wp=MBI&wreply=https%3A%2F%2Fspirit365%2Esharepoint%2Ecom%2F%5Fforms%2Fdefault%2Easpx&id=500046&cbcxt=mai&wlidp=1&guest=1&vv=910&mkt=EN-US&lc=1033&bk=1343219930
  • 从表单中捕获名为“t”的隐藏输入
  • 将“t”发布到/_layouts/Authenticate.aspx。 这应该给你FedAuth和rtFa cookie。

从那时起,这与此处的代码相同: http : //www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx

我找到了解决方案并发了一篇关于它的post。 我也把它放在github上 。 您可以在我的博客上找到我的博客文章以及github链接。

我希望这能帮助你,因为它帮助了我:-)

我花了很多时间才弄明白这一点。 要获取二进制令牌,您需要以下列格式将消息发布到Microsoft Online Security Token Service(STS)站点URL:

   http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue  http://www.w3.org/2005/08/addressing/anonymous  [toUrl]  [assertion]       [url]   http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey http://schemas.xmlsoap.org/ws/2005/02/trust/Issue urn:oasis:names:tc:SAML:1.0:assertion    

使用以下值替换令牌需要此消息:

[toUrl]:Microsoft Online Security Token Service(STS)站点URL。
[url]:您的SP网站url
[断言]:您从联盟服务获得的断言XLM​​令牌。

从响应XML获取t=...二进制令牌后,您可以将其发布到SP default.aspx以获取cookie。