2011-07-08 22 views
20

Estoy aprendiendo OAuth y tengo una pregunta en la cabeza No puedo encontrar una respuesta ..¿por qué no es posible robar un token de acceso?

Entendí solicitud de token para autorizar o no una aplicación para utilizar la API. Pero una vez que el usuario obtuvo un token de acceso, ¿qué sucede si alguien roba su token de acceso?

Imaginemos que tenemos algo así como http://www.example.com/api/article/1?access_token= ****** ****** señal_acceso

Si me dan a este URL a otro usuario, el otro tendría mi acceso y lo que la API no es protegido más?

+0

Debe aclarar si se refiere a OAuth 1 u OAuth 2. La versión 1 del protocolo utiliza un secreto compartido, el secreto de token, que nunca se transfiere a través del cable. Por lo tanto, robar un token de acceso es como robar una clave sin una llave. No se ajustará a ningún candado. – Matthias

+0

Estaba leyendo sobre oAuth 2 y me pregunto lo mismo. Ojalá hubiera una respuesta aquí ... bueno ... la búsqueda continúa. – Aishwar

Respuesta

7

Respuesta corta: Sí, para OAuth2: quien tenga un access_token válido tendrá acceso a los recursos designados por ese token. Por cuánto tiempo depende de OAuth2 la implementación del proveedor.

Respuesta larga, tanto sobre OAuth1 y 2:

Cuando se trata de OAuth 1un token de acceso no es suficiente. También necesitaría el token de acceso secreto y también la clave del consumidor y el secreto. Todavía es bueno mantener los tokens de acceso confidenciales, y limitar su alcance y tiempo de validez, pero no puede usar el token de acceso sin secretos de clientes y tokens. OAuth 1 no requiere que use SSL, porque la criptografía está integrada en la especificación.

OAuth 2 es posiblemente más importante que los tokens de acceso se mantengan confidenciales. Por lo tanto, el proveedor de API debe garantizar que los tokens de acceso, que en OAuth2 también se conocen como tokens de portador, sean válidos solo durante el menor tiempo posible. Estos tokens funcionan como contraseñas, y si son interceptados pueden ser utilizados inmediatamente por un atacante. Por lo tanto, la especificación OAuth2 (con token de portador) requiere que toda la comunicación se realice a través de SSL, ya que no se incorpora ninguna criptografía en la especificación. Típicamente, los tokens de acceso tienen una validez corta, que se puede actualizar con un "token de actualización" que tiene una validez más larga pero solo se transfiere cuando el consumidor recibe el token de portador inicial y cuando se actualiza un token de portador.

+1

OAuth 2.0 en sí mismo no define ningún tipo de token de acceso. Esto se hace mediante otras especificaciones relacionadas con la autenticación de tokens. Actualmente hay dos propuestas, una para tokens de portador que debe usarse sobre TLS y trabajar como contraseñas, y la otra para tokens de MAC que son muy parecidos a OAuth 1.0 HMAC-SHA1. –

+0

Gracias, incluí esas declaraciones en la respuesta anterior. –

Cuestiones relacionadas