Problemas de autenticación usando servicios de SharePoint

     Ahora mismo estoy enfrascado programando una pequeña aplicación que, a grandes rasgos, lo que tiene que hacer es encontrar ficheros en una carpeta y subirlos a la correspondiente Biblioteca de Documentos de MOSS 2007.

     Para ello, utilizo los servicios Web que Sharepoint brinda por defecto. En concreto, uso Copy.asmx. Pero bueno, en un artículo posterior contaré todo lo referente a esta aplicación. El problema que me tenía partido en dos es que, cada vez que intentaba usar el servicio web obtenía el siguiente error en tiempo de ejecución:

La solicitud HTTP no está autorizada con el esquema de autenticación de cliente ‘Anonymous’. El encabezado de autenticación recibido del servidor era ‘NTLM’.

     Y claro, por más que intentaba autentificar con mi usuario de Windows, con usuario y clave…. de cualquier forma, nada funcionaba.

     Descubrí que el problema no es de uso de ese servicio concreto sino de configuración por defecto de Visual Studio. Cuando usas el GUI de Visual Studio para enlazar con el Servicio Web, este es el bloque que te añade en app.config:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="CopySoap" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>

            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address=http://myserver/_vti_bin/Copy.asmx binding="basicHttpBinding"
            bindingConfiguration="CopySoap" contract="MOSSCopyService.CopySoap"
            name="CopySoap" />
    </client>
</system.serviceModel>

     He marcado de color la parte que nos interesa. Por defecto, usa el esquema de autentificación anónimo, que es lo que provoca el error. Cambiando esa configuración por ésta habremos solucionado el problema:

<security mode="TransportCredentialOnly">
                        <transport clientCredentialType="Ntlm" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>

     Claro, si es que el mensaje lo deja claro, pero a veces tenemos la solución delante de nuestras narices y no somos capaces de verla.

Desarrollo de Software, Living with c# .NET , ,

4 commntarios


  1. Rodrigo Mu帽oz

    Gracias men….me sirvi贸 un monton

  2. ains no salio el app.config… (cerrando y aabriendo los tags, quesino aqui no se visualizan en el mensaje)…

    security mode=”TransportCredentialOnly”>
    transport clientCredentialType=”Basic” proxyCredentialType=”None”
    realm=”Fedora Repository Server” /
    <message clientCredentialType=”UserName” algorithmSuite=”Default” /
    </security

  3. Hola.
    Tengo el siguiente problema haber si puedes ayudarme por favor…

    Estoy intentando invocar un m茅todo de un servicio Web que se haya en una m谩quina linux.

    me da el siguiente error:

    La solicitud HTTP no est谩 autorizada con el esquema de autenticaci贸n de cliente ‘Basic’. El encabezado de autenticaci贸n recibido del servidor era ‘BASIC realm=”Fedora Repository Server”‘.

    En el app.config he puesto lo siguiente:

    Alguna idea?

    Muchas gracias.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos necesarios est谩n marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>