luismoralesp / grit

0 stars 0 forks source link

Crear ejemplo de consumo de oath2 #1

Open luismoralesp opened 6 years ago

luismoralesp commented 6 years ago

Crear un demo de consumo de oauth2

Cromeror commented 6 years ago

Tengo una confusión, ¿si uso un mock, no seria necesario usar un servicio de Oauth2 para hacer mi test?.

luismoralesp commented 6 years ago

si claro, por eso te decia que podías usar un servicio oauth2 y existente, alguna aplicación que ya use ese método de autenticación.

Aquí unos ejemplos de google: https://developers.google.com/oauthplayground/

Cromeror commented 6 years ago

Buenas tardes, ciertamente no he podido dominar el asunto de las pruebas, en teoria me parece claro pero en la implementación algo confuso, les comparto una posible prueba para authorizacion con Oauth2 https://repl.it/repls/EthicalAridBellsandwhistles

Cromeror commented 6 years ago

Gracias @luismoralesp, el enlace que me mandaste me sirvió empila, lo dejaré aquí para futuras referencias http://www.daimto.com/google-authentication-with-curl/. Necesito ahora subir el proyecto con las pruebas que estoy realizando, ¿si lo subo aqui en grit como se haría con los demas proyectos?, por ejemplo con el servicio de Oauth2

luismoralesp commented 6 years ago

Exelente @Cromeror, me alegro que te halla sido de utilidad. En cuanto a subir el proyecto solo asegurate dde subirlo en una carpeta independiente, de forma que no esté en la raiz del repositorio.

Cromeror commented 6 years ago

Parece que ahora tengo otro problema, cuando solicito la autorización Google carga una pagina de autenticación, y al hacer una petición via http este me da un 405. image

luismoralesp commented 6 years ago

@Cromeror tienes que adjuntar el segmento de código para poder entnder mejor el problema

Cromeror commented 6 years ago

Esta es mi test.

User test


import services from '../../src/services'

describe('Authorization request', () => {
    it('Successful', () => {
        expect.assertions(1);
        return services.Users.getAuthorization()
            .then(response => {
                expect(response.status).toEqual('200')
            })
    });
});

Lo que quiero probar es que getAuthorization efectivamente esta haciendo una petición al servicio de authenticación de google, para que me de authorización. la petición que realiza getAuthorization es la siguiente:

User services

import axios from 'axios'

export default {
    /**
     * Autentica un usuario con user + password
     * @param {*} user 
     * @param {*} password 
     */
    getAuthorization() {
        return axios.get(`https://accounts.google.com/o/oauth2/auth?client_id=23976511534-db9c8280tq0moimdqbdr1ajn2dl582ch.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/plus.login&response_type=code`,
            {
                headers: {
                    'Access-Control-Allow-Origin': '*',
                    'Access-Control-Allow-Methods': 'HEAD, GET, POST, OPTIONS, PUT, PATCH, DELETE',
                    'Access-Control-Allow-Headers': 'Access-Control-*, Origin, X-Requested-With, Content-Type, Accept, Authorization',
                    'Access-Control-Allow-Credentials': true,
                    'Access-Control-Expose-Headers': 'Access-Control-*, Origin, X-Requested-With, Content-Type, Accept, Authorization'
                }
            }
        )
    }
}

Las cabeceras se las agregué despues que me diera un error de Cors, donde decia que el cross-origin era necesario, supuse que al realizar la petición por medio del test, axios (dependencia que gestiona peticiones http) no estaba mandando los las cabeceras de origen porque no hay ningun sitio en ejecución asi que busque sobre como configurar esa cabeceras, pero ahora el error que me arroja es 405 comom te mostré en la imagen anterior.

luismoralesp commented 6 years ago

hola @Cromeror tienes un priblema de concepto, la direccion a la que estas hacienddo petición no es parra hacer el login es solo para obtener el codigo de seguridad el cual luego si utilizaras para llamar al servicio de login, este requiere hacer un proceso manual iniciando sesion con tu cuenta dde gmail, con el objetivo de que un evitar que cualquiera pueda intentar hacer login sin pasar por una verificación anterior.

verificalo tu mismo accediendo en el navegador a el link: https://accounts.google.com/o/oauth2/auth?client_id=23976511534-db9c8280tq0moimdqbdr1ajn2dl582ch.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/plus.login&response_type=code

En nuestra aplicación cada dominio de microservicio deberá estar registrado en el app de Oaut2 teniendo asi un codigo de verificación diferente para cada una.