Pregunta

Estoy trabajando en un sitio donde los usuarios pueden iniciar sesión para obtener más información privada.Mi cliente tiene otro sitio donde se usa nt autenticación para acceder a él.

Lo que quieren hacer es tener un button en el sitio en el que estoy trabajando en el área privada que los enviará al no autenticado sitio, pero no les exige que inicien sesión en ese sitio, sino que pasan el nombre de usuario y contraseña que solían iniciar sesión en mi sitio en el otro sitio por ellos.

¿Es posible hacer esto?y ¿cómo lo lograría?¿Hay una mejor manera de hacer esto?

¿Fue útil?

Solución

Aquí hay una teoría (no probada), cuyos detalles dependerán en gran medida de qué tipos de autenticación aceptará el sitio de Sharepoint.voy a abordar Básico, ya que es el más fácil.

Escribirá algo de JavaScript que utilice XMLHttpRequest para enviar una solicitud al sitio de Sharepoint y agregará su nombre de usuario y contraseña a los encabezados de la solicitud.Su navegador ejecutará ese JavaScript e iniciará sesión en el sitio de Sharepoint.

Ahora, cuando hacen clic en el enlace, el navegador del cliente debería tener las credenciales almacenadas en caché para enviarlas al sitio de Sharepoint.

Posibles problemas:

  • XMLHttpRequest no permite la autenticación entre dominios
  • El navegador y XHR no comparten información de autenticación
  • Sharepoint y XHR no pueden ponerse de acuerdo sobre el método de autenticación

Otra opción es proxy de la conexión a Sharepoint, lo que le permite iniciar sesión en el lado del servidor (sin pasar por las limitaciones de XHR y la seguridad del navegador), pero requiere carga en su servidor y posiblemente algunos problemas de destino de URL.

Otros consejos

¿Cómo validará el otro sitio su nombre de usuario y contraseña?

Idealmente, su sitio ni siquiera debería recordar la contraseña del usuario para poder pasarla a otro sitio (almacena los hashes de la contraseña, no la contraseña en sí, y solo usa la contraseña real durante la validación).

¿Qué pasaría si su sitio proporcionara un token al usuario, quien lo presenta al nuevo sitio, que a su vez le pide a su sitio que valide el token?Básicamente, el segundo sitio confía en que usted les diga quién es el usuario.

Todo esto se estropea si el segundo sitio realmente usa las cuentas de Windows para algo más que simplemente recuperar un nombre de usuario (por ejemplo, permisos en el archivo subyacente), ya que el usuario no inicia sesión como la cuenta de usuario real de Windows en este escenario.

Si necesita autenticarse en el segundo sitio, es posible que deba generar un nuevo hilo y llamar a la API LogonUser de Windows.Una vez que tenga el token de seguridad, asígnelo al nuevo hilo y realice la conexión a través de ese hilo.

LogonUser requiere privilegios mejorados y no es código administrado, por lo que existen algunos inconvenientes bastante graves al usarlo.Pero esa ha sido la única solución que he podido encontrar para que un sitio autenticado con Forms se comunique con un servicio/sitio autenticado de Windows.

Espero que esto ayude.

¿Es este un entorno de intranet?Si es así, no deberían tener que iniciar sesión de todos modos.Si SharePoint está configurado usando "Autenticación integrada" y el sitio aparece como un sitio confiable en IE, el navegador usará su credencial de red para iniciar sesión automáticamente.Esto se puede configurar en firefox también.

Sus usuarios no podrán conectarse directamente al sitio NTLM sin recibir un desafío NTLM.Escribiría lo que efectivamente sería un proxy para el sitio NTLM;es decir, su código del lado del servidor tendrá credenciales para conectarse al sitio NTLM y pasará por las solicitudes de sus usuarios.

Como mencionas, es SharePoint (escupir) tenga en cuenta que SharePoint tiene una serie de servicios web que puede utilizar para esto (en lugar de realizar un barrido de pantalla).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top