Ответ 1
Я нашел решение и сделал сообщение об этом. Я также положил его на github. Вы можете найти мое сообщение в блоге вместе со ссылкой github на мой блог.
Я надеюсь, что это поможет вам в той мере, в какой это помогло мне:-)
Я пытаюсь подключиться к экземпляру SharePoint Online через приложение WPF. Я нашел эту статью, которая описывает возможное решение, но проблема в том, что у конкретного экземпляра есть службы федерации Active Directory (ADFS) спереди и я не знаю, как получить аутентификацию. (Я не могу создать сертификат для моего приложения для аутентификации против adfs.)
Любой, кто уже сделал это и может поддержать меня с некоторыми фрагментами кода?
Я нашел решение и сделал сообщение об этом. Я также положил его на github. Вы можете найти мое сообщение в блоге вместе со ссылкой github на мой блог.
Я надеюсь, что это поможет вам в той мере, в какой это помогло мне:-)
Я играл с Fiddler. В основном поток идет следующим образом:
wa=wsignin1.0, wresult=<requestsecuritytokenresponse>…token…</rstr> 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
С этой точки это то же самое, что и код здесь: http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx
Я потратил много времени, чтобы наконец понять это. Чтобы получить бинарный токен, вам нужно отправить сообщение в следующем формате на URL-адрес сайта службы поддержки интернет-безопасности Microsoft (STS):
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">[toUrl]</a:To>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
[assertion]
</o:Security>
</s:Header>
<s:Body>
<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>[url]</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
<t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
</t:RequestSecurityToken>
</s:Body>
</s:Envelope>
Это сообщение необходимо заменить для токенов следующими значениями:
[toUrl]: URL-адрес сайта службы поддержки интернет-безопасности (STS).
[url]: ваш URL-адрес сайта SP
[assertion]: Является ли токен XLM-подтверждения, который вы получили от службы вашей федерации.
После того, как вы получите двоичный токен t=...
из XML-ответа, вы можете отправить его в свой SP default.aspx
для получения файлов cookie.