Estoy un poco confundido acerca de la autenticación a través del token. Si necesito llamar a la API web autenticada desde una aplicación web, necesito agregar el token a todas las llamadas a la API: pero en este caso, el token se puede copiar y usar fácilmente para realizar llamadas autenticadas. Por ejemplo: si tengo un backend de apis .netcore y una aplicación web que usa apis para generar información, el token debe agregarse en las llamadas de javascript ... ¿o no?
¿Dónde estoy equivocado? ¡Gracias!
Lo siento si encuentra la pregunta muy trivial o tal vez estúpida, pero realmente no puedo imaginar cómo una llamada a un conjunto de API realizada en el lado del cliente puede protegerse contra un robo de token. ¿Puedes ayudarme a aclarar? Gracias
Los JWT tienen un reclamo 'aud' para especificar la audiencia para la que son válidos. Se supone que los servidores de recursos validan que el token del portador provino de un miembro de la audiencia. Por lo tanto, copiar el token de 'good_host' e intentar usarlo desde 'bad_host' debería fallar.
Es por eso que debe crear diferentes tokens con diferentes alcances, para que cada token pueda hacer solo lo que se supone que debe hacer. Tal vez un token con un alcance para ver datos para usuarios normales para que puedan hacer cualquier llamada a la API con ese token, pero solo podrán ver lo que les permita, y otros alcances para tal vez editar para que solo los administradores puedan hacer llamadas a la API para editar cosas.
Más información: https://oauth.net/2/scope/
es por eso que debe usar la autorización de token solo con HTTPS. Con HTTPS, el canal entre el cliente y el servidor está protegido, por lo que su token no es fácil de robar.