2015-11-30 12 views
7

Perché qualcuno dovrebbe utilizzare OAuth 2 con questo tipo di concessione? Voglio dire, se il cliente ha già il nome e la password del proprietario della risorsa, perché non solo autenticarsi come proprietario della risorsa usando qualunque veicolo di autenticazione utilizzato dal server di risorse?Perché OAuth 2 ha le autorizzazioni per le password del proprietario delle risorse?

Non capisco la logica qui. Qualcuno può spiegarlo?

risposta

5

Come le specifiche menziona, la risorsa password del proprietario Credenziali concessione è per scopi di migrazione e applicabile soltanto nello scenario di dove (in genere), il client e il server di autorizzazione sono controllate dalla stessa parte, https://tools.ietf.org/html/rfc6749#section-1.3.3:

Il le credenziali della password del proprietario della risorsa (ad es. nome utente e password) possono essere utilizzate direttamente come concessione di autorizzazione per ottenere un token di accesso
. Le credenziali devono essere utilizzati solo quando v'è un alto
grado di fiducia tra il proprietario delle risorse e il cliente (ad esempio, il cliente
fa parte del sistema operativo del dispositivo o di una privilegiata
applicazione), e quando altra autorizzazione i tipi di sovvenzione non sono disponibili
(come un codice di autorizzazione).

Esso consente per l'utilizzo di un token di serie e il protocollo sulla gamba tra client e server delle risorse (ad esempio, OAuth 2.0 Bearer Token), mentre un modo "to-be-deprecato" di ottenere un gettone tra il Cliente e Autorizzazione Server. https://tools.ietf.org/html/rfc6749#section-10.7: credenziali di password proprietario

La guida alle sovvenzioni tipo è spesso utilizzato per
legacy o di migrazione ragioni. Riduce il rischio complessivo di memorizzare i nomi utente e le password dal client, ma non elimina la necessità dello di esporre credenziali altamente privilegiate al client.

Questo tipo di sovvenzione comporta un rischio maggiore rispetto ad altri tipi di sovvenzione perché mantiene l'anti-pattern della password che questo protocollo cerca di evitare . Il client potrebbe abusare della password o la password potrebbe essere involontariamente divulgata a un utente malintenzionato (ad es. Tramite file registro o altri record conservati dal client).

Inoltre, poiché il proprietario della risorsa non ha il controllo sul il processo di autorizzazione (il coinvolgimento del proprietario della risorsa termina quando che consegnerà le sue credenziali al cliente), il cliente può ottenere
token di accesso con una portata più ampia rispetto desiderato dalla risorsa
proprietario. Il server di autorizzazione deve considerare l'ambito e la durata
dei token di accesso emessi tramite questo tipo di concessione.

Il server di autorizzazione e il client DOVREBBE minimizzare l'uso di questo tipo di sovvenzione e utilizzare altri tipi di sovvenzioni quando possibile.

+1

Puoi ampliare un po 'questa sovvenzione? Se sto creando una API di back-end, non ho bisogno di almeno un'applicazione con questo tipo di concessione, per consentire all'utente di autenticare da qualche parte? Se l'utente non immette mai utente e password ovunque, come deve essere autenticato? –

0

Fornirò un altro punto di vista.

OAuth 2.0 è un ottimo protocollo per le applicazioni Web comuni.Alcune applicazioni, tuttavia, utilizzano un meccanismo di autenticazione/autorizzazione molto più forte. Per questi casi, ha senso consentire l'istituzione di token usando un metodo forte. Un esempio di tale applicazione può essere un'API bancaria: può utilizzare il flusso classico OAuth 2.0 sul Web (utilizzando il sito Web della banca) e firme di dati potenti utilizzando protocolli come PowerAuth 2.0 (sono un autore di questa soluzione) per app native per dispositivi mobili o desktop.

Problemi correlati