Pregunta

Scenario:

  • Un cliente llama al servicio web A en la LAN. El servicio web A se ejecuta en un grupo de aplicaciones con identidad " servicio de red " ;.
  • WebService A hace un trabajo, se prepara para llamar a WebService B.
  • WebService B requiere un certificado de cliente (* .cer) y SSL.
  • WebService A está en un servidor Windows 2003 dedicado.
  • Todo funciona en el entorno Dev como debería (pero el desarrollador con privilegios de administrador siempre inicia sesión localmente (¡no es de extrañar!)
  • Los certificados se almacenan en el disco en C:\MyCertificates\
  • El certificado se está aplicando en tiempo de ejecución con éxito en Dev con este fragmento: myWebService.ClientCertificates.Add (new X509Certificate.CreateFromCertFile (certPath));

Problema: El servicio web A está llamando al servicio web B, y la excepción devuelta es:

  

La solicitud falló con el estado HTTP   403: Prohibido

Esto realmente significa que el certificado no se envió en la solicitud al servicio web B.

Supongo que instalar este certificado en el navegador no es una solución. La configuración del navegador generalmente es por usuario, y necesito entregar el certificado al usuario cuyas credenciales ejecuta el servicio web. (por ejemplo, servicio de red, sistema o lo que sea que esté en la configuración del grupo de aplicaciones IIS).

Pregunta: ¿Cómo puedo otorgar acceso o asociación a mi certificado que vive en la ubicación del directorio especificado para el Servicio de red u otra cuenta de no usuario?

¿Fue útil?

Solución

Este artículo de la base de conocimiento de Microsoft puede ser útil:

  

Cómo llamar a un servicio web utilizando un certificado de cliente para la autenticación en una aplicación web ASP.NET ( MS KB901183)

Su servicio web 'A' sería efectivamente la aplicación ASP.NET que llama al servicio web como se describe en el artículo.

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