2012-02-09 15 views
5

Estamos construyendo una API REST usando ASP.NET MVC. Esta API es similar en principio y uso a la API de Factual v3. Usan Oauth 1 de 2 patas para su API. Nuestro diseño es muy similar en que las aplicaciones, principalmente móviles, usarán nuestra API detrás de escena para proporcionar un servicio. El usuario final de la aplicación no sabrá sobre nuestra API y, por lo tanto, no tendrá ninguna credencial. Por lo tanto, redirigir al usuario a través de una ventana del navegador a un formulario de autenticación (como Facebook) no tiene ningún sentido. Mis preguntas son ..¿Qué es lo mejor para auth ASP.NET MVC REST API? OAuth 2.0 u OAuth 1.0?

  • ¿Por qué OAuth2 flow es el mejor para usar en este escenario?
  • ¿Deberíamos incluso usar Oauth2 o simplemente pegarnos con OAuth 1 de 2 patas?

Como referencia estamos usando C#/.NET, ASP.NET MVC 3 y planeamos usar DotNetOpenAuth v4.

http://developer.factual.com/display/docs/Factual+Developer+APIs+Version+3

Respuesta

4

Por qué flujo OAuth2 es el mejor para usar en este escenario?

No es, necesariamente. OAuth 2 es una especificación no finalizada. Si necesita máxima interoperabilidad, OAuth 1.0 es la mejor opción (por ahora). OAuth 2 es más simple para el cliente, a expensas de una complejidad significativamente agregada en el servidor.

¿Deberíamos incluso usar OAuth2 o simplemente usar OAuth 1 de 2 patas?

Usa los pros y los contras de arriba para elegir. Y también que si está usando DotNetOpenAuth, el soporte de OAuth 1.0 ha existido durante años, mientras que el soporte de OAuth 2.0 aún no está completamente horneado, por lo que es probable que encuentre algunos baches en la carretera.

+0

Dado que Oauth2 es nuevo, vamos con Oauth1. Descargué la última versión de DotNetOpenAuth 4 (rc1). Estoy teniendo un tiempo de toque ordenando a través de todos los ejemplos para encontrar uno que sea similar a lo que necesitamos. Estamos utilizando ASP.NET MVC 4 Web Api para construir la API de descanso. Realmente solo necesito la capacidad de firmar una solicitud usando oauth con una clave api y un secreto, luego en el lado del servidor tengo un atributo de autorización que descodifica esta solicitud y la valida contra la clave y el secreto en la base de datos. ¿Qué ejemplo debería seguir? – craigtadlock

+0

Las muestras OAuthServiceProvider y OAuthConsumer son las más relevantes. Pero parece que los usuarios son irrelevantes para su escenario, por lo que parece que está describiendo [0-legged OAuth] (http://blog.nerdbank.net/2011/06/what-is-2-legged-oauth .html). Si bien no creo que haya una muestra específica para eso, debería ser bastante sencillo trasladar las muestras anteriores para que se adapte a sus necesidades. –

Cuestiones relacionadas