La especificación OAuth2 describe el tipo de concesión de Credenciales de contraseña del propietario del recurso y el flujo de autorización aquí . Entiendo que solo las aplicaciones cliente "confiables" podrán usar esta subvención, por ejemplo, la aplicación cliente "oficial" para iPhone o Android a través de la API de backend.
Mi pregunta es: ¿cómo puedo garantizar que las solicitudes de fuentes que afirman ser esta aplicación cliente pueden ser confiables? Por ejemplo:
-
He registrado mi aplicación de Android en mi servidor OAuth2 con el client_id de
android_app
con acceso al tipo de concesión depassword
(es decir, Credenciales de contraseña del propietario del recurso). -
Como la aplicación de Android es una aplicación cliente, asumí que no es de confianza mantener el secreto del cliente y, por lo tanto, no le he asignado uno. La configuración de la aplicación contiene el client_id y grant_type, así como el punto final de autenticación.
-
Un usuario descompila / descomprime / desenfoca mi aplicación y encuentra el ID de cliente y el punto final
¿Qué les impide a los clientes realizar solicitudes de autenticación a ese punto final con el ID de cliente? Consideraría asignar al cliente un secreto de cliente, pero parece que eso no resolverá el problema porque un usuario podría encontrarlo en la aplicación.