[OAuth] Implementación de oauth_callback=oob

56 views
Skip to first unread message

Jano

unread,
Jan 31, 2011, 7:07:29 PM1/31/11
to api-11870

Estoy autenticando con OAuth desde iPhone con oauth_callback="oob",
que es un parámetro descrito aquí en la especificación:

http://tools.ietf.org/html/rfc5849#section-2.1
An absolute URI back to which the server will redirect the resource
owner when the Resource Owner Authorization step (Section 2.2) is
completed. If the client is unable to receive callbacks or a callback
URI has been established via other means, the parameter value MUST be
set to "oob" (case sensitive), to indicate an out-of-band
configuration.


El problema es que una vez autenticado el usuario mediante formulario,
el web redirecciona a
http://oob?oauth_token=xxxxx&oauth_verifier=15f80d7d37be88daac474b85a33775b3

Es decir, no valida que la URI sea absoluta, e ignora el tratamiento
especial del valor oob. Según la especificación:
http://tools.ietf.org/html/rfc5849#section-2.2
If the client did not provide a callback URI, the server SHOULD
display the value of the verification code, and instruct the resource
owner to manually inform the client that authorization is completed.
If the server knows a client to be running on a limited device, it
SHOULD ensure that the verifier value is suitable for manual entry.

Es decir, debería mostrar un oauth_verifier que el usuario pueda
memorizar para introducirlo manualmente en la aplicación.

He pasado algo por alto o falta implementar este parametro?


Saludos

Víctor Muñoz

unread,
Feb 1, 2011, 3:01:29 AM2/1/11
to api-11870
Hola Jano,

Gracias por el aviso. Efectivamente no está implementado ese
parámetro, pero si dejas el oauth_callback sin especificar deberías
obtener el comportamiento que esperas.

Un saludo,


On Feb 1, 1:07 am, Jano <j...@jano.com.es> wrote:
> Estoy autenticando con OAuth desde iPhone con oauth_callback="oob",
> que es un parámetro descrito aquí en la especificación:
>
> http://tools.ietf.org/html/rfc5849#section-2.1
> An absolute URI back to which the server will redirect the resource
> owner when the Resource Owner Authorization step (Section 2.2) is
> completed.  If the client is unable to receive callbacks or a callback
> URI has been established via other means, the parameter value MUST be
> set to "oob" (case sensitive), to indicate an out-of-band
> configuration.
>
> El problema es que una vez autenticado el usuario mediante formulario,
> el web redirecciona ahttp://oob?oauth_token=xxxxx&oauth_verifier=15f80d7d37be88daac474b85a...

Jano

unread,
Feb 1, 2011, 5:55:27 AM2/1/11
to api-11870
Efectivamente me da el verifier dejando el oauth_callback en blanco.

Ahora tengo otro problema: cuando oauth_callback es oob o vacío,
deberíais mostrar una pantalla simplificada para dispositivos móviles,
y un verifier de tamaño PIN.

En Twitter se ve así: http://dl.dropbox.com/u/5250652/twitter.png

En 11870 se ve así:
http://dl.dropbox.com/u/5250652/11870-0.png
http://dl.dropbox.com/u/5250652/11870-1.png
http://dl.dropbox.com/u/5250652/11870-2.png

En iPhone existe copiar y pegar y funciona en el dispositivo.
En cualquier caso, la idea de la especificación es que el usuario
pueda memorizarlo y no necesite copiar/pegar. Esto último quizás no lo
conozcan usuarios novatos del teléfono.



Saludos

Víctor Muñoz

unread,
Feb 1, 2011, 6:23:33 AM2/1/11
to api-11870
Sí, como bien dices nos hace falta una versión móvil más amigable de
esta parte de la interfaz. Intentaremos acelerar el tema ahora que
sabemos que ya ha surgido la necesidad :)

Un saludo,


On Feb 1, 11:55 am, Jano <j...@jano.com.es> wrote:
> Efectivamente me da el verifier dejando el oauth_callback en blanco.
>
> Ahora tengo otro problema: cuando oauth_callback es oob o vacío,
> deberíais mostrar una pantalla simplificada para dispositivos móviles,
> y un verifier de tamaño PIN.
>
> En Twitter se ve así:http://dl.dropbox.com/u/5250652/twitter.png
>
> En 11870 se ve así:http://dl.dropbox.com/u/5250652/11870-0.pnghttp://dl.dropbox.com/u/5250652/11870-1.pnghttp://dl.dropbox.com/u/5250652/11870-2.png

Jano

unread,
Feb 3, 2011, 9:31:17 AM2/3/11
to api-11870
He visto que en iPhone y Android no hace falta el PIN. Para el quiera
implementarlo, se trata de registrar la aplicación para que gestione
un esquema de URI determinado, por ejemplo, micliente://xxx
Al pasar ese URI en el oauth_callback, webkit invoca la aplicación y
le pasa el verifier, con lo que tienes al smartphone funcionando en
modo browser en vez de modo cliente, y le ahorras al usuario tener que
escribir nada.
Es lo mismo que hace spotify para las canciones.
Lo del PIN solo haría falta para dispositivos con navegador, pero que
no permitan registrar esquemas URI. Probablemente ninguno.

Jano

unread,
Feb 8, 2011, 9:14:59 PM2/8/11
to api-11870

Un problemilla en la implementación oauth del servidor: cuando el
cliente autoriza la aplicación haceis un 302 al oauth_callback, que
según el RFC contiene un URI. Pero cuando el URI no usa el esquema
HTTP creo que añadís vosotros ese prefijo. Por ejemplo, para
oauth_callback "onceocho://hi" haceis

HTTP/1.1 302 Movido temporálmente
Location: http://onceocho://hi?oauth_token=xxx&oauth_verifier=xxx

Debería ser onceocho://... a secas para que el navegador lo reconozca
y pase la URL a la aplicación cliente que haya registrado el scheme
"onceocho".

También devolveis 201 al pedir las credenciales temporales, debería
ser 200 según el RFC.


Saludos

Víctor Muñoz

unread,
Feb 9, 2011, 4:10:37 AM2/9/11
to api-11870
Gracias por los apuntes Jano, le pegamos un vistazo.
Reply all
Reply to author
Forward
0 new messages