Come si suppone che un server di autorizzazione richieda l'autenticazione del client per i client riservati?

3

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?

    
posta Thanatos 08.06.2016 - 21:26
fonte

1 risposta

2

In base alla sezione 2 - registrazione del cliente un cliente è registrato con il server di autorizzazione prima di iniziare qualsiasi i flussi.

La registrazione del client include la specifica del tipo di client (riservato o pubblico) e successivamente viene assegnato un ID client. Pertanto, quando il server di autorizzazione riceve una richiesta per un determinato ID client, sa se è riservato o pubblico.

Per codice di autorizzazione e impliciti concede, l'ID client è un campo obbligatorio.

L'utilizzo della concessione di credenziali password non è raccomandato e in realtà non richiede l'ID client. Voglio dire che stai trasmettendo le credenziali effettive direttamente all'endpoint del token, a cui importa l'ID cliente o il segreto del client!

    
risposta data 15.06.2016 - 09:08
fonte

Leggi altre domande sui tag