Gli stati OAuth2 password
grant_type
,
If the client type is confidential or the client was issued client credentials (or assigned other authentication requirements), the client MUST authenticate with the authorization server as described in Section 3.2.1.
Supponiamo che io abbia entrambi clienti riservati e non riservati. Questo sembra un presupposto molto plausibile: ho alcuni sviluppatori di terze parti, che eseguono applicazioni lato server, e quindi vengono emessi un client_id
& client_secret
pair; Ho anche un'applicazione mobile e un'applicazione web; ovviamente questi non possono mantenere la client_secret
riservata, poiché sono pubblicati pubblicamente.
Quindi, nel caso di un client pubblico con un client segreto, il precedente "Se il tipo di cliente è confidenziale" è falso e non si autenticano con il server di autorizzazione come descritto da §3.2.1.
Tuttavia, come server,
The authorization server MUST:
- require client authentication for confidential clients or for any client that was issued client credentials (or with other authentication requirements),
Ok, ma dato che il testo sopra indica che solo i clienti confidenziali invieranno le loro credenziali, come è possibile? Se non visualizzo le credenziali sulla richiesta, come faccio a sapere, in qualità di server di autorizzazione, che si tratta di un client pubblico, al contrario di un client riservato che non è riuscito a fornire l'autenticazione?
Da notare che in "OAuth2 semplificato" , c'è un esempio di richiesta di grant_type=password
che include un client_id
, ma non un client_secret
; OAuth richiede che almeno un client_id
venga sempre specificato durante le concessioni? (E così, il server di autorizzazione potrebbe identificare il client, e quindi, se hanno bisogno di autenticarsi completamente.) Lo stato RFC questo ovunque?