Quale protocollo di autenticazione web?

2

Ho bisogno di implementare un protocollo di autenticazione basato sul web in modo che gli utenti che conosco possano avere accesso a un'applicazione web di terze parti. Lavorerò con gli sviluppatori di tale applicazione web per implementare entrambi i lati, poiché attualmente non supportano la delega dell'autenticazione.

All'inizio pensavo di implementare un IdP OpenID 2.0, dal momento che il protocollo è semplice e ben progettato. Ma l'altro sviluppatore si preoccupa che OpenID 2.0 sia considerato obsoleto e pensa che dovremmo usare il nuovo OpenID Connect ...

Dato che non abbiamo bisogno della delega di autorizzazione che OAuth potrebbe fornire, OpenID Connect mi sembra gonfio.

Quindi, dovrei considerare che è pericoloso distribuire l'obsoleto OpenID 2.0 ora e scegliere OpenID Connect o dovrei insistere per usare il più vecchio e più semplice protocollo OpenID 2.0?

E se dovessi scegliere OpenID Connect, c'è una buona ragione per non usare il flusso implicito (con "response_mode" impostato su "query")? Preferisco evitare il viaggio di andata e ritorno extra da server a server che sembra inutile per me, per un protocollo che fornisce solo identità ...

    
posta user2233709 04.03.2017 - 00:26
fonte

1 risposta

2

Affronterò questa domanda dal punto di vista dell'usabilità e dell'estensibilità. Ad esempio, se sto progettando di utilizzare un protocollo per lo scambio di dati, ad esempio messaggi di testo tra utenti, sulla rete tra due applicazioni, la mia prima scelta sarebbe HTTP.

Perché dovrei scegliere HTTP invece di qualcosa di più semplice, ad esempio TCP non elaborato con un intestazione fatta a mano in alto? Perché l'applicazione cresce e so che tra due mesi estenderò questa semplice intestazione manuale per aggiungere la codifica del testo. Tra quattro mesi estenderò di nuovo l'intestazione per consentire il trasferimento chunked. E tra 3 anni finirò con un orribile per mantenere e documentare intestazione fatta a mano che è probabilmente buggy come l'inferno (comprese le implicazioni sulla sicurezza).

Se scelgo di usare HTTP, inizialmente sembrerà gonfio. Ma dopo 3 anni scoprirò che l'80% delle estensioni che ho aggiunto sono conformi ad alcune parti del protocollo HTTP. Quindi ho bisogno di documentare meno cose e ho bisogno di mantenere meno codice da solo.

Ora torna a OpenID 2.0 e OpenID Connect.

OpenID Connect è sovrapposto a OAuth 2.0, OpenID 2.0 no. Per molto tempo OpenID era un sistema concorrente per OAuth, tuttavia, entrambi hanno una filosofia di utilizzo leggermente diversa:

  • OpenID è un modo per avere un singolo set di credenziali in più posizioni.

  • OAuth è un modo per accedere ai dati archiviati in una posizione da più posizioni.

Quindi sì, stai cercando una soluzione in cui gli utenti di un posto possano accedere ad un altro posto utilizzando le stesse credenziali. Stai cercando OpenID non OAuth.

Tuttavia, è molto probabile che a un certo punto in futuro vorrà estendere questa interazione tra i due siti Web e condividere non solo le credenziali ma anche i dati tra i due . Se implementate OpenID 2.0 ora, dovrete implementare OAuth a quel punto e disporre di un software complicato in cui ci sono due diversi tipi di credenziali che girano attorno. E questo è abbastanza incline agli errori.

Se utilizzi OpenID Connect, quando gli utenti vorranno condividere i dati, avrai già costruito lo scaffold. Tutto quello che devi fare è aggiungere un'ulteriore elaborazione della chiave di valet e la tua applicazione è pulita.

Naturalmente, è solo probabile che ad un certo punto in futuro l'interazione tra i siti web dovrà aumentare. E valutare questa somiglianza va oltre le informazioni che possono essere scritte in una discussione sul confronto dei vantaggi e degli svantaggi dei due protocolli. Tuttavia, preferirei sicuramente avere un asso nella manica per quando arriva una situazione simile, piuttosto che rischiare di finire con un'estensione brutta e soggetta a errori.

    
risposta data 05.03.2017 - 03:33
fonte

Leggi altre domande sui tag