Me pregunto por qué ni rfc6749 ni rfc8252 parecen considerar el caso en que la aplicación móvil no realizar solicitudes de recursos protegidos (y, por lo tanto, no es un cliente), sino que se basa en un servidor backend (cliente confidencial) que sí lo hace.
* Tenga en cuenta que uso el término aplicación móvil en lugar de aplicación nativa solo porque la especificación define una aplicación nativa como un cliente público :
Desde rfc6749
-
Sección 2.1:
Una aplicación nativa es un cliente público instalado y ejecutado en El dispositivo utilizado por el propietario del recurso. Datos de protocolo y Las credenciales son accesibles para el propietario del recurso. Es asumido que cualquier credencial de autenticación del cliente incluida en el La aplicación puede ser extraída. Por otro lado, dinámicamente credenciales emitidas, como tokens de acceso o tokens de actualización, pueden Recibir un nivel aceptable de protección. Como mínimo, estos Las credenciales están protegidas de servidores hostiles con los que el La aplicación puede interactuar. En algunas plataformas, estas credenciales. Podrían estar protegidos de otras aplicaciones que residan en el mismo dispositivo.
-
sección 1.1:
cliente - Una solicitud que realiza solicitudes de recursos protegidos en nombre de la propietario del recurso y con su autorización
El caso sobre el que estoy preguntando es similar a cómo rfc6749 sección 2.1 define una aplicación web , pero en lugar de una interfaz de usuario HTML , la interfaz sería una aplicación móvil :
La definición de rfc8252 de aplicación nativa parece más razonable ya que no restringe su uso a las aplicaciones que son clientes públicos:Una aplicación web es un cliente confidencial que se ejecuta en una web servidor. Los propietarios de recursos acceden al cliente a través de un usuario HTML interfaz representada en un agente de usuario en el dispositivo utilizado por el propietario del recurso Las credenciales del cliente así como cualquier acceso. El token emitido al cliente se almacena en el servidor web y se no expuesto o accesible por el propietario del recurso.
" aplicación nativa " Una aplicación o aplicación instalada por el usuario para su dispositivo, a diferencia de una aplicación web que se ejecuta en el navegador Sólo contexto. Aplicaciones implementadas usando tecnología basada en web pero distribuidas como una aplicación nativa, llamadas "aplicaciones híbridas", son Se considera equivalente a las aplicaciones nativas para los fines de este especificación.
Pero, una vez más, la especificación solo proporciona la mejor práctica para el caso en el que la aplicación nativa también es el cliente (público).
En resumen,
- Me pregunto por qué no he podido encontrar ninguna mención del perfil del cliente que describí anteriormente (ya sea en las especificaciones o en otra parte).
- ¿Se consideraría la concesión de código de autorización ( sin PKCE ) suficientemente seguro ya que incluso si una aplicación maliciosa intercepta el código de autorización (enviado por el usuario externo-agente a la aplicación nativa, a través de la comunicación entre aplicaciones) no podría cambiarlo por un token de acceso, ya que no estaría en posesión de ¿El secreto del cliente que se almacena en el backend?
Tenga en cuenta que solo estoy haciendo estas preguntas para obtener una mejor comprensión de la teoría, y no para nada práctico.