services que net levantar example ejemplo desde consumir como cero asp asp.net web-services sharepoint crm

asp.net - que - web service asp net c# example



DefaultCredentials en el acceso a los servicios web de CRM/Sharepoint (7)

Podría ser que necesite ejecutar Kerberos para la autenticación, pero no puede estar seguro y es difícil configurarlo solo para verificarlo.

Hice una aplicación que accede al servicio web de CRM. El problema es que cuando implementé el dll en el servidor Sharepoint, devolvió el error 401 no autorizado. Aparentemente el System.Net.CredentialCache.DefaultCredentials no funcionó (mi sospecha). Aquí está el código.

CrmSdk.CrmAuthenticationToken token = new CrmSdk.CrmAuthenticationToken(); token.AuthenticationType = AuthenticationType.AD; token.OrganizationName = ORGANIZATION_NAME; CrmService service = new CrmService(); service.Url = "http://crmserver:5555/mscrmservices/2007/crmservice.asmx"; service.CrmAuthenticationTokenValue = token; service.PreAuthenticate = true; service.Credentials = System.Net.CredentialCache.DefaultCredentials;

Va al revés.

Cuando hice una aplicación que accedía al servicio web de Sharepoint (codificando el complemento) y lo implementé en el servidor CRM. No pudo acceder al servicio web de Sharepoint. Error no autorizado. Aquí está el código:

Lists listService = new Lists(); listService.PreAuthenticate = true; listService.Credentials = System.Net.CredentialCache.DefaultCredentials; listService.Url = "http://sharepointserver/webname/_vti_bin/Lists.asmx";

Mi servidor CRM y mi servidor Sharepoint están en el mismo dominio.

Para ambos códigos, si cambié la parte de credenciales en algo así y luego la implementé en el servidor, puede ejecutarse.

service.Credentials = new NetworkCredential("username", "password", "domain");

Aún así, no quiero hacer esto porque revela la contraseña del usuario en el código. ¿Puede alguien ayudarme?

IIS en ambos servidores no permite el acceso anónimo y usa la autenticación integrada de Windows.

Gracias

Desde mi computadora local, puedo acceder a los servicios web de CRM o a los servicios web de Sharepoint. Supongo que estoy autorizado porque las DefaultCredentials enviaron mis credenciales de que su contraseña se guardó en " Nombre de usuario y contraseña almacenados " ( panel de control> Cuentas de usuario> pestaña Avanzado> Administrar contraseñas ) De esta forma, no tengo que escribir:

service.Credentials = new NetworkCredential("username", "password", "domain");

y mis DefaultCredentials de mi comp local están autorizados para acceder a los servicios web.

Traté de implementar esto en el servidor Sharepoint que accede a los servicios web de CRM. y..tadaa..it no funcionará. jajaja..

¿podemos inyectar credenciales a DefaultCredentials en el servidor?

lo último que quiero hacer es codificar el useraccount (como el código anterior)


¿Has verificado que las credenciales predeterminadas son las mismas que las explicitas? Es posible que las credenciales predeterminadas sean las de otra cuenta que no esperarías.

EDIT # 1 : por los comentarios de la propiedad DefaultCredentials en MSDN :

DefaultCredentials representa las credenciales del sistema para el contexto de seguridad actual en el que se ejecuta la aplicación. Para una aplicación del lado del cliente, estas son generalmente las credenciales de Windows (nombre de usuario, contraseña y dominio) del usuario que ejecuta la aplicación. Para las aplicaciones ASP.NET, las credenciales predeterminadas son las credenciales del usuario que inició sesión o el usuario que se suplanta.

También querrá asegurarse de que el usuario que accede a la página de CRM (que realiza la llamada al servicio web de SharePoint) pueda acceder al servicio web con sus credenciales y viceversa. Si pueden, entonces parece más probable que esté ocurriendo algún tipo de suplantación.

Edición n. ° 2 : suponiendo que tenga acceso tanto al servidor de CRM como al servidor de SharePoint, puede aprovechar al máximo los registros de la aplicación y del sistema. Uno o ambos deberían indicar un inicio de sesión fallido e indicar qué cuenta intentó acceder al recurso (en este caso, los servicios web).


service.Credentials = System.Net.CredentialsCache.DefaultNetworkCredentials;

Trata eso.



Para poder usar las credenciales predeterminadas, el usuario en el directorio activo debe estar definido tanto en SharePoint como en CRM y tener suficientes privilegios para hacer lo que está haciendo con el código.

Y trate de usar sdk (crm tiene clases de ayuda) en lugar de definiciones de servicio.


El uso de DefaultCredentials significa que el proceso de trabajo de ASP.NET o el proceso de trabajo de IIS tomarán la credencial del usuario que ejecuta el grupo de aplicaciones de IIS.

entonces, si su Grupo de aplicaciones de Dynamics CRM se ejecuta bajo una cuenta de usuario Custom-CRM-Domain / JohnDoe, eso significa que tomará los privilegios en la cuenta de usuario Custom-CRM-Domain / JohnDoe.

Compruebe la cuenta de usuario que ejecuta el grupo de aplicaciones de la aplicación web IM de la aplicación CRM / Sharepoint.

Estos son los pasos para verificar el grupo de aplicaciones:

  1. Abra el sitio web -> haga clic derecho -> elija propiedades
  2. Seleccione la pestaña Directorio de inicio
  3. Observe el nombre del grupo de aplicaciones en la lista desplegable a continuación
  4. Ahora, vaya a la carpeta de Grupos de aplicaciones
  5. Intente encontrar el nombre del grupo de aplicaciones que se ha enumerado en el paso 3 -> haga clic con el botón derecho y elija Propiedades
  6. Seleccione la pestaña "Identidad" y encontrará la cuenta de usuario que ejecuta el grupo de aplicaciones

Espero que esto ayude.


Para solucionar este problema, primero debe saber qué usuario ejecuta el grupo de aplicaciones como dijeron los demás y, si necesita usar CredentialCache.DefaultCredentials, debe agregar el usuario, por ejemplo, svcadmin o similar, en "Administrador secundario de colecciones de sitios" por ejecutando la aplicación de administración central de SharePoint. Mediante ese SP, se permite al usuario que ha pasado la credencial acceder a las cosas que necesita.