¿Por qué es más seguro usar la concesión implícita que solo dar su clave secreta?

6

La empresa para la que trabajo ha creado una API que utilizan los dispositivos móviles. He estado leyendo sobre el uso de oAuth para aplicaciones móviles y, según tengo entendido, se recomienda que use subvención implícita en lugar de incrustar la clave secreta en su aplicación.

¿Por qué el flujo implícito se considera más seguro en este caso? ¿No está esto simplemente permitiendo que alguien acceda a su API independientemente de que tengan la clave secreta o no?

    
pregunta Abe Miessler 12.06.2015 - 17:49
fuente

2 respuestas

2
  

¿Esto no permite que nadie acceda a tu API independientemente de   ¿Tienen la clave secreta o no?

Sí, la concesión implícita carece de la capacidad de autenticar al cliente, lo que pueden hacer las otras subvenciones, introduciendo aún más los vectores de ataque que otorga la autorización, que requieren un secreto del cliente, no experimentados.

El caso de uso para la concesión implícita es la autenticación de los usuarios finales y el acceso por parte del cliente a un recurso (posiblemente propiedad del usuario final) y debe ser utilizado por las aplicaciones SPA (y cualquier otra aplicación basada en el agente de usuario / Javascript).

Si la autenticación del cliente es importante, se debe implementar una subvención diferente.

La concesión implícita es más segura en el sentido de que no expondría el secreto del cliente, que puede compartirse a través de sus aplicaciones internas.

Aquí hay una buena lectura sobre cuándo usar cuáles subvenciones (OAuth2) y flujos OIDC enlace

    
respondido por el alegria 07.12.2018 - 12:49
fuente
1

La razón principal por la que no debe usar una clave secreta es que no puede confiar en el dispositivo para proteger la clave secreta. Probablemente entienda que la clave secreta no es segura en una aplicación cliente de javascript porque el javascript generalmente es algo fácil de leer. Del mismo modo, un pirata informático o un ladrón que tenga en sus manos una tableta o un teléfono inteligente puede obtener el binario para su aplicación y extraer la clave secreta del código fuente. Las claves secretas se usan idealmente solo para la comunicación de servidor a servidor o para aplicaciones internas de su organización.

    
respondido por el Rob Kraft 23.07.2017 - 00:17
fuente

Lea otras preguntas en las etiquetas