Solución:
Editar: Verificar que una solicitud provenga de su aplicación de escritorio y no un clon de ella en su servidor no es realmente posible a menos que controle las ubicaciones donde está instalado, pero para un programa de usuario no lo hace. Puede colocar algunas barreras exiguas, pero no puede ofrecer ninguna garantía. Parece que iOS / Android se están moviendo en este frente, imagino que la única implementación viable sería que el sistema operativo envíe una credencial verificada en su nombre, es decir, soporte a nivel de sistema operativo, no soporte a nivel de aplicación.
En cuanto a los métodos de autenticación generales de OAuth 2.0 …
Si seguimos las mociones aquí, podemos analizar cada método de autorización y analizar el riesgo de esto. https://developers.google.com/identity/protocols/OAuth2
- https://developers.google.com/identity/protocols/OAuth2WebServer (creo que estás en este campamento, pero no
client_secret
aquí)- Único riesgo de DOS contra sus credenciales de cliente. Las respuestas solo se reconocen y reenvían al Uri de redireccionamiento especificado, por lo que se pueden realizar solicitudes en su nombre para los tokens, pero solo su servidor recibirá los tokens (suponiendo que el agente de usuario sea decente), debe ocuparse del caso en el que recibe respuestas de token desconocidas.
-
https://developers.google.com/identity/protocols/OAuth2InstalledApp
-
Riesgo de que el usuario instale una aplicación maliciosa. Cuando pierdes el
client_id
,client_secret
y elredirectUri
(no tiene forma de mantenerlos privados contra la depuración del dispositivo), entonces cualquiera podrá crear aplicaciones en su nombre. Este es un problema desafortunado para las aplicaciones móviles. La única defensa es la pantalla de consentimiento del usuario por ahora, es decir, con suerte, el usuario se da cuenta al mirar la pantalla de consentimiento que ha sido engañado para instalar una aplicación maliciosa de la tienda en lugar de su aplicación legítima.Me encantaría ver más trabajo en este frente, tal vez las tiendas de aplicaciones podrían tener algunas credenciales en su nombre y luego confirmar que es su aplicación la que lo solicita, imagino que eso implicaría una verificación de hash, etc.
Estaría aún más feliz de ser corregido en este caso, pero no veo nada que evite el problema anterior: P
-
- https://developers.google.com/identity/protocols/OAuth2UserAgent
- Igual que 1.
- https://developers.google.com/identity/protocols/OAuth2ForDevices
- Igual que 2.