¿Es seguro OAuth2 implícito?

2

He construido un servidor de autorización usando OAuth2 basado en OWIN. Entiendo que la concesión implícita es básicamente la autenticación de redirect_URL y Client_ID al realizar la solicitud. Pensé que, al principio, esto es ideal para verificar al usuario que realiza la solicitud, ya que el servidor Auth solo enviará el código al que realizó la solicitud (ya que las credenciales se comprueban en una base de datos) y, como tal, no importaría. si la llamada fue expuesta en el front end ya que solo ese usuario podría recibir el token debido a redirect_URL.

Entonces me di cuenta de una falla:

¿Qué pasaría si alguien malintencionado recibiera el script de llamada / ajax (que anticipé de todos modos) e hiciera la llamada a través de un iframe en su página ... realmente no importaría que el iframe se redirigiera y ellos pudieran sacar el token directamente de allí? ?

¿Alguna idea?

Código agregado (lo siento si no es apropiado para este canal pero quería mostrarte cómo se lograría esto)

Tenga en cuenta que el "uri" tiene todos los parámetros de consulta dentro.

// Build the query string (http://authserver.com?**client_id=11** etc)
            var uri = addQueryString(authorizeUri, {
                'client_id': '11',
                'redirect_uri': returnUri,
                'state': nonce,
                'scope': 'bio notes',
                'response_type': 'token',
            });

            console.log(uri);
            $('body').append('<iframe src="${uri}"/>');

            $('iframe').css({
                'display' : 'none'
            })

            $('iframe')[0].addEventListener("load", function () {
                var uriWithToken = $('iframe')[0].contentWindow.location.href;

                token = uriWithToken.split('access_token')[1].split("=")[1];
                expires = uriWithToken.split('expires_in')[1].split("=")[1];

                console.log(uriWithToken);
                console.log("TOKEN = " + token);
                console.log("EXPIRES = " + expires);
                $('iframe').remove();
            });
    
pregunta ravenx30 28.02.2018 - 17:43
fuente

0 respuestas

Lea otras preguntas en las etiquetas