c# - Autorización de reclamo de ADFS
sharepoint authentication (3)
He jugado con Fiddler. Básicamente, el flujo es el siguiente:
- Obtener un token de SAML de ADFS
- Publicarlo en https://login.microsoftonline.com/login.srf (el cuerpo debe ser
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
- Capture la entrada oculta llamada "t" del Formulario
- PUBLIQUE esa "t" a /_layouts/Authenticate.aspx. Eso debería darle la cookie FedAuth y rtFa.
Desde ese punto, esto es lo mismo que el código aquí: http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx
Intento conectarme a una instancia de SharePoint Online a través de una aplicación WPF. Encontré este artículo que describe una posible solución, pero el problema es que la instancia específica tiene un Servicio de federación de Active Directory (ADFS) al principio y no sé cómo obtener el auth-token. (No puedo crear un certificado para mi aplicación para autenticar contra los adfs).
¿Alguien que ya ha hecho esto y puede ayudarme con algunos fragmentos de código?
Pasé mucho tiempo para finalmente resolver eso. Para obtener el token binario, debe enviar un mensaje en el siguiente formato a la URL del sitio del Servicio de token de seguridad en línea de 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>
Este mensaje es necesario para reemplazar los tokens con los siguientes valores:
[toUrl]: URL del sitio del servicio de token de seguridad en línea (STS) de Microsoft.
[url]: su URL del sitio SP
[afirmación]: es el token aserción XLM que tienes de tu servicio de federación.
Después de obtener el t=...
token binario del XML de respuesta, puede publicarlo en su SP default.aspx
para obtener cookies.