2010-04-09 24 views
15

Tengo un servicio WCF que me gustaría admitir basicHttpBinding y webHttpBinding. Cuando el cliente inicie sesión correctamente, el servidor generará un token para que el cliente pase al servidor en todas las solicitudes posteriores. La pregunta es cómo el cliente puede pasar el token al servidor. No deseo agregar un parámetro adicional en cada método web para contener el token.WCF cómo pasar el token para la autenticación?

Respuesta

17

Normalmente, la mejor manera de hacer algo como esto es pasar dicha "metainformación" en un encabezado WCF. Puede crear fácilmente un inspector de mensajes para extender WCF (¡en realidad no es tan aterrador y difícil de hacer!) Que inyectaría el token en cada solicitud saliente del cliente, y lo recuperaría del encabezado y lo validaría en el servidor.

Hay una serie de bastante buena entrada en el blog por ahí que muestra cómo crear un mensaje inspector:

Mira la dos interfaces relevantes para implementar:

  • IClientMessageInspector en el lado del cliente, que tiene un mensaje BeforeSendRequest y AfterReceiveReply para implementar
  • IDispatchMessageInspector en el lado del servidor, que tiene un método AfterReceiveRequest y BeforeSendReply para implementar
+0

Gracias, que está trabajando. Esto es exactamente lo que necesitaba. – Kevin

+0

Pasar el token en el encabezado no plantea un problema de seguridad? –

+0

@Learning Sé que es un comentario antiguo, pero debe usar al menos una conexión segura y es una buena idea aplicar algún tipo de encriptación para el token que solo usted y el cliente saben cómo implementar. – Silvermind

Cuestiones relacionadas