2012-09-26 27 views
6

Estoy construyendo un servicio RESTful utilizando ASP.NET Web API con autenticación basada en token personalizado. El cliente enviará las credenciales en la primera llamada. El servicio creará un token cifrado utilizando los detalles del usuario y este token se utilizará para la autenticación desde este punto en adelante. Ahora el servicio necesita enviar este token nuevamente al cliente. Inicialmente mantuve el token en un encabezado de respuesta personalizado HTTP para que el cliente pueda leer el valor independientemente de los datos devueltos por el servicio. Esto funcionó bien cuando el cliente y el servicio están en el mismo dominio, pero fallaron en el escenario de dominio cruzado. Tengo CORS habilitado mi Servicio y he añadido todo tipo de encabezados como "Access-Control-Expose-Headers", "Access-Control-Allow-Origin: *" etc. Pero el cliente de dominios cruzados no puede leer el encabezado de respuesta personalizado Creé cuál es "SecureToken:". Vi en varias publicaciones que los navegadores web tienen algunos problemas con la lectura de encabezados de respuesta personalizados en escenarios de dominio cruzado. Así que ahora estoy pensando en enviar el token seguro a través de una clase base común de todos los objetos ViewModel/data enviados desde el servicio.¿Cómo enviar un token seguro del servicio RESTful?

A partir de este contexto, tienen par de preguntas:

  1. ¿Cuál es el mejor lugar para enviar señales a medida seguras. ¿Está en el encabezado de respuesta o como una propiedad común en la clase base de las clases ViewModel/data?

  2. ¿hay un encabezado de respuesta HTTP estándar que pueda usar para enviar token y información personalizada para que incluso los clientes de dominios cruzados también puedan leerlo?

¡Cualquier ayuda será muy apreciada! ¡Gracias!

+0

Hola tpeczek - Gracias por tomarse el tiempo para ver esta pregunta. He visto este artículo antes: http: //codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/. Ya he implementado la autenticación basada en token que usa cifrado de clave privada. La pregunta es cómo enviar el token actualizado (cuando se agota el tiempo de espera de la sesión, se genera un token nuevo) sin cerrar la sesión del usuario. Un encabezado de respuesta específico fue la mejor opción, pero desafortunadamente los clientes de dominio cruzado no pueden leer los encabezados de respuesta no estándar. – Whizkid747

Respuesta

2

El encabezado Authorization está destinado para esto. Consulte section 14.8 en este enlace para obtener detalles sobre cómo usarlo.

+1

¿No se autorizó un encabezado de solicitud? Estaba preguntando sobre el encabezado Http "Respuesta". – Whizkid747

+1

La autorización es un encabezado válido tanto para la solicitud como para la respuesta. Puede/debe usar definitivamente el encabezado Authorization con un esquema personalizado para devolver el token –

Cuestiones relacionadas