¿Por qué el flujo oauth2 nativo de Google requiere secreto de cliente?
De acuerdo con los docs de facebook oauth2, el flujo del lado del cliente no requiere el cliente secreto param. Flujo de lado del cliente se puede utilizar en aplicaciones Web nativas y móviles.
Sin embargo, el flujo nativo oauth2 de google requiere secreto de cliente http://code.google.com/apis/accounts/docs/OAuth2.html#IA .
- Autenticación social de la API Web de ASP.NET para Web y Mobile
- Uso de Android AccountManager para la autorización OAuth2 de terceros
- Cómo cerrar sesión en LinkedIn usando authrequest usando android?
- ¿Cómo ingresar a twitter usando Oauth desde mi aplicación Android?
- GoogleSignInResult devuelve DEVELOPER_ERROR en la aplicación de Android mediante Firebase
En este caso, el secreto del cliente puede ser robado por el hacker utilizando herramientas de ingeniería inversa.
¿Puede alguien aclarar por qué se hizo de esta manera?
- Autenticación contra App Engine desde la aplicación de Android con inicio de sesión federado (OpenID)
- Android: autenticación de Google
- OnNewIntent (intención) no funciona como debería
- Oauth 2 en una aplicación para Android
- Uso de OAuth con Scribe en Android
- Android Tumblr Oauth-signpost 401
- Hacer Android WebView no almacenar cookies o contraseñas
- OAuth / OpenID - ¿Qué debo usar?
Según un post de un Googler, la razón principal es que utilizan las mismas bibliotecas para las aplicaciones del lado del servidor y las aplicaciones nativas. Suena como que no consideran client_secret ser sensible en el contexto de una aplicación nativa, pero planean eliminarlo gradualmente para el flujo de aplicaciones instalado.
Desde https://groups.google.com/group/oauth2-dev/browse_thread/thread/1e714924ebcc7e60/edfaaad5830ff2e8 :
No esperamos que esos secretos permanezcan en secreto; hasta el momento los incluimos en su mayoría, por lo que es conveniente utilizarlos hoy en día con bibliotecas y esperar que dejen de requerirlos en algún momento en el futuro.
Si bien esto podría sonar mal, tenga en cuenta que OAuth nunca tuvo la intención de evitar que los usuarios maliciosos forjaran solicitudes en el contexto de su aplicación para móviles / escritorio.
Si estás preocupado por exponer client_secret, también hay el flujo de cliente que se describe aquí: http://code.google.com/apis/accounts/docs/OAuth2.html#CS Por lo que puedo decir, el cliente -side flow no requiere client_secret y funcionaría bien desde una aplicación de escritorio o móvil.
-Chris
- Android: ¿Qué tan segura es la base de datos con la aplicación
- StaggeredGridLayoutManager cambiar spanCount dinámicamente RecylerView