Mi chiedo perché né rfc6749 né rfc8252 sembrano considerare il caso in cui l' app per dispositivi mobili non > fare richieste di risorse protette (e quindi non è un client) ma si affida invece a un server di backend (client riservato) che lo fa.
* Nota che uso il app per dispositivi mobili al posto di app nativa solo perché la specifica definisce un'app nativa come client pubblico :
Da rfc6749
-
Sezione 2.1:
A native application is a public client installed and executed on the device used by the resource owner. Protocol data and credentials are accessible to the resource owner. It is assumed that any client authentication credentials included in the application can be extracted. On the other hand, dynamically issued credentials such as access tokens or refresh tokens can receive an acceptable level of protection. At a minimum, these credentials are protected from hostile servers with which the application may interact. On some platforms, these credentials might be protected from other applications residing on the same device.
-
sezione 1.1:
client - An application making protected resource requests on behalf of the resource owner and with its authorization
Il caso che sto chiedendo è simile a come rfc6749 sezione 2.1 definisce un'applicazione , ma invece di un'interfaccia utente HTML , l'interfaccia sarebbe una app per dispositivi mobili :
LaA web application is a confidential client running on a web server. Resource owners access the client via an HTML user interface rendered in a user-agent on the device used by the resource owner. The client credentials as well as any access token issued to the client are stored on the web server and are not exposed to or accessible by the resource owner.
rfc8252 la definizione di app nativa sembra più ragionevole in quanto non ne limita l'utilizzo alle app che sono client pubblici:
"native app" An app or application that is installed by the user to their device, as distinct from a web app that runs in the browser context only. Apps implemented using web-based technology but distributed as a native app, so-called "hybrid apps", are considered equivalent to native apps for the purpose of this specification.
Ma ancora una volta, la specifica fornisce solo le migliori pratiche nel caso in cui l' app nativa sia anche il client (pubblico).
In breve,
- Mi chiedo perché non sia stato in grado di trovare alcuna menzione del profilo del cliente che ho descritto sopra (nelle specifiche o altrove).
- Sarebbe stato preso in considerazione il grant di codice di autorizzazione ( senza PKCE ) abbastanza sicuro poiché anche se un'app dannosa intercetta il codice di autorizzazione (inviato dall'agente utente esterno al file app nativa, tramite comunicazione inter-app) non sarebbe in grado di scambiarlo per un token di accesso come non sarebbe in suo possesso il segreto del cliente che è memorizzato nel back-end?
Nota che sto solo facendo queste domande per ottenere una migliore comprensione della teoria, e non per nulla pratico.