¿Cómo almacenar 'client_secret' en privado en las aplicaciones de frontend?

0

Estoy tratando de entender cómo la autenticación y la autorización deberían funcionar con una API REST, dado que la API estará disponible para ser utilizada por aplicaciones de terceros.

Me doy cuenta de que si permitimos que otras aplicaciones utilicen nuestra API, tenemos que autenticar las aplicaciones y el usuario.

Tengo dos formas de pensar cómo debería funcionar la autenticación:

  1. En todos los lugares donde se requiere la autenticación de un usuario, también pedimos la autenticación de la aplicación y que el usuario ha otorgado suficientes permisos para la aplicación.

    Pros : ¿tenemos el control y los datos sobre qué aplicaciones acceden a nuestras API?

    Contras : no sé de qué manera las aplicaciones frontales mantienen el client_secret de forma segura que evitaría que otros lo tomen y se presenten como nuestra aplicación cuando accedemos a API .

  2. Emitimos dos tipos de access_token . Cuando nos dan las credenciales, devolvemos un access_token que no requiere autenticación de la aplicación en las solicitudes. Pero cuando una aplicación desea iniciar sesión sin credenciales (mediante la concesión del código de autorización), devolvemos un token de acceso que requeriría la autenticación de la aplicación en las solicitudes.

La segunda forma me atrae más. Pero si esa era la forma correcta, asumo que sería posible iniciar sesión en las API principales utilizando solo credenciales y sin autenticación de la aplicación. Aunque no pude encontrar una manera de hacer eso. Y descubrí que la mayoría de las veces, solo las aplicaciones oficiales tienen permiso para iniciar sesión con credenciales.

El problema común parece ser que no hay manera de almacenar client_secret de forma privada en las aplicaciones frontend. Entonces, ¿cómo identifican estas API las aplicaciones oficiales de otras aplicaciones de terceros y les impiden iniciar sesión usando credenciales?

¿Y cuál de las formas anteriores crees que es la forma correcta de realizar la autenticación de la aplicación?

    
pregunta sidoshi 25.03.2018 - 10:22
fuente

0 respuestas

Lea otras preguntas en las etiquetas