从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。