2011-01-13 14 views
8

Estoy creando un sitio a partir de WCF REST Service Template 40 (CS) de las plantillas en línea de VS 2010. Funciona muy bien, pero necesito asegurarlo.Cómo configuro la autenticación OAuth para WCF REST C# Site

Necesito compatibilidad con aplicaciones de Windows, Linux y iPhone, por lo que REST + oAuth parece una buena solución, pero no sé por dónde empezar.

Básicamente tengo que resolver el nombre de usuario/contraseñas (a hash, por supuesto) a mi base de datos como auth de formularios tradicionales.

Respuesta

9

OAuth no transmite un nombre de usuario/contraseña. OAuth envía un encabezado OAuth dentro del encabezado HTTP Auth. Su servicio tendrá que sacar esto y luego probarlo para asegurarse de que sea válido.

El encabezado OAuth tendrá un conjunto de valores (timestamp, consumer_key, nonce) sin cifrar. Puede tomar estos valores no cifrados y usar la clave no encriptada para buscar la clave secreta que usará su servicio para cifrar esos mismos valores y asegurarse de que coincida con la firma que también se incluye en el encabezado de OAuth. Si la firma generada coincide con la firma incluida en el encabezado OAuth, entonces sabrá que la solicitud HTTP es buena. Luego puede sacar la clave del consumidor del encabezado y usarla para buscar el nombre de usuario si es necesario.

Ver my post here. Tenga en cuenta que hay varias buenas bibliotecas para facilitar todo esto, como DotNetOpenAuth.

+4

Realmente necesito seguir adelante y escribir un comportamiento de OAuth para WCF ... –