WebHTTPBINDING con https y autenticación con UserNamepPasswordValidator cuando se aloja en IIS

StackOverflow https://stackoverflow.com/questions/6354787

  •  28-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de configurar un servicio WCF alojado en IIS que exponga un punto final que actúa como un servicio de descanso que produce datos JSON, y quiero usar HTTPS. Quiero cuidar la autenticación del usuario con la ayuda de UserNamePassWordValidator, ya que los usuarios se almacenan en una base de datos.

Por el momento, estoy usando una webhttpbinding para lograr el descanso. Mi problema comienza cuando intento habilitar HTTPS (configurar el modo de seguridad para transportar). Tengo un certificado SSL en el lado del servidor (autoinscrito por ahora), por lo que todo está bien, pero no sé cómo configurar el TITERENTAL DE CLIENTE de transporte de la vinculación para que las credenciales se transfieran a mi implementación de UserNamePassWordValidator.

He buscado mucho en Google, pero parece que no puedo encontrar nada bueno. Si lo entiendo correctamente, IIS maneja la autenticación antes de WCF y no hay nada que hacer al respecto. Realmente preferiría no usar un proveedor de membresía ASP.NET, pero ¿tal vez eso es un enfoque o hay otra forma?

¡Gracias!

Editar: encontrado este. No es realmente lo que esperaba ...

¿Fue útil?

Solución 2

Después de muchos Googleing, he encontrado un par de soluciones posibles.

La forma recomendada Resolver la autenticación con servicios WCF RESTful alojados en IIS parece ser usar tokens. Ya sea con la ayuda de una implementación de un tercero de OAuth o para implementar algo que su uno mismo. Sin embargo, esto me dará algunos problemas con mi punto final NETTCP, y probablemente no podré usar la misma implementación para ambos puntos finales (ya que tendré que hacer alguna validación de token en las llamadas que vienen a través del punto final webHTTP)

La solución Dado por Ladislav Mrnka también parece ser válido.

Otros consejos

No puedes usar UserName Credenciales: esa es la autenticación de nivel de mensaje a través del encabezado SOAP, pero JSON Data Exchange no tiene dicho encabezado. Intenta configurar Basic Credenciales en elemento de transporte (= autenticación de nivel de transporte). Debería funcionar con validador de contraseña personalizado desde .net 3.5. Tendrá que aprobar el encabezado HTTP válido para la autenticación básica para autenticar con éxito.

Editar:

No lo probé con IIS, por lo que puede haber algunos problemas porque IIS desencadena la autenticación antes de ejecutar el validador personalizado. En tal caso necesitarás Módulo HTTP personalizado para autenticación.

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