我正在尝试通过执行以下操作来设置一个简单的脚本,该脚本使用 cURL 来监控我们的 SharePoint Online 网站:-
- 使用“../adfs/services/trust/13/UsernameMixed”端点使用联合身份 (ADFS 2.1) 登录到我们的 Office 365 环境
- 获取 SharePoint cookie(FedAuth 等)
- 浏览到 SharePoint 网站(验证内容等)
第一步,我使用 cURL 将以下 POST 提交到我们的 ADFS 端点:
curl https://sts.contoso.com/adfs/services/trust/13/UsernameMixed --data @req.txt -H "Content-Type: application/soap+xml" -o out.txt
我发送的 SOAP 信封请求以下内容(这只是请求的摘录):
<trust:RequestSecurityToken xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>https://login.microsoftonline.com/extSTS.srf</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<trust:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer</trust:KeyType>
<trust:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</trust:RequestType>
<trust:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</trust:TokenType>
</trust:RequestSecurityToken>
我从这里得到的响应包含一个 X509 证书、一个摘要和一个我不知道该怎么处理的签名。我在网上看到的所有指南都会从这个初始请求中返回一个“BinarySecurityToken”,您可以将其提取并发布到 Sharepoint.com 以获得必要的 cookie 以获得访问权限。诚然,他们都在使用 MicrosoftOnline STS(云凭据),所以这只是 Microsoft STS 可以实现但 ADFS 服务器不能实现的东西吗?
还是我的方法有什么明显的错误?
任何帮助将不胜感激。
干杯,
邓肯