2012-07-02 36 views
12

Intento conectarme a una instancia de SharePoint Online a través de una aplicación WPF. He encontrado this article 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) en el frente y no sé cómo obtener el auth-token. (No puedo crear un certificado para mi aplicación para autenticar contra el adfs.)Solicitar autenticación de ADFS

¿Alguien que ya ha hecho esto y puede ayudarme con algunos fragmentos de código?

+0

No he hecho esto pero podría ser capaz de ayudar. ¿Puede publicar en alguna parte una huella de Fiddler extraída de un inicio de sesión regular basado en web a Office 365 usando ADFS? – woloski

+0

@woloski No puedo publicar esto debido a la información de la compañía en la traza. Podría enviártelo por correo si me das tu dirección. (Puedes encontrar el mío en mi perfil ( – jwillmer

+0

). Te he enviado un correo electrónico. ¿Lo has obtenido? – woloski

Respuesta

5

He encontrado la solución e hice una publicación al respecto. También lo puse en github. Puede encontrar mi publicación de blog junto con el enlace github en my blog.

espero que esto le ayuda tanto como me ayudó :-)

+0

¿Puedes publicar esto de nuevo, por favor? – retrography

+1

@retrography Blog está fuera de servicio pero agregué el enlace de GitHub a mi post. Si todavía necesitas la publicación del blog escríbeme un correo electrónico y te lo envío ;-) – jwillmer

8

He jugado con Fiddler. Básicamente, el flujo es la siguiente:

  • obtener un token de SAML de AD FS
  • mensaje a https://login.microsoftonline.com/login.srf (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
  • captura la entrada oculta denominada "t" de la Forma
  • POST "t" para /_layouts/Authenticate.aspx eso te dará la cookie FedAuth y RTFA

partir de ese momento este es el mismo que el código aquí:.. http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx

+0

He oído que el propósito de las cookies rtFa es cerrar sesión. ¿Cómo podría hacer eso? Adjuntar rtFa a HTTP-solicitud y enviarlo a cualquier servicio web de SharePoint? – surlac

3

que pasó mucho tiempo para averiguar finalmente eso. Con el fin de obtener el token binario que necesita para escribir un mensaje en el siguiente formato a la URL del sitio en línea de Microsoft servicio de token de seguridad (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> 

Se necesita este mensaje para reemplazar las fichas con los siguientes valores:

[toUrl]: URL del sitio del Servicio de token de seguridad en línea de Microsoft (STS).
[url]: URL de su sitio de SP
[assertion]: es el token de aserción XLM que obtuvo de su servicio de federación.

Después de obtener el t=... señal binaria de la respuesta XML, puede publicar eso a su SP default.aspx el fin de obtener las cookies.

+0

He intentado este enfoque y obtenido las cookies de Fedauth, pero cuando estoy redireccionando al sitio en línea de SharePoint, es de nuevo pidiendo credenciales de usuario. y si estoy haciendo una entrada de host como "testO365.sharpoint".com "en mi local, entonces funciona bien, cualquier sugerencia. –

+0

Hy, sé que es una publicación anterior, pero tal vez alguien me puede ayudar. Logré obtener la afirmación xml de nuestro servidor adfs. Pero si la copio (el y cualquier cosa dentro) en el xml como se indica, siempre aparece el error que dice "websso invalid assertion" (por cierto, publico en (https://login.microsoftonline.com/extsts.srf) –

Cuestiones relacionadas