Abbiamo una normale applicazione Web con autenticazione basata su cookie e ora vogliamo dividere frontend e backend (api) per avere API pubbliche di terze parti. Quindi il nostro back-end sarà su un dominio e il frontend su un altro.OAuth/OpenID basato sul browser con accesso permanente
Per l'autorizzazione, desideriamo passare a OAuth 2 with JWT. In questo caso il nostro frontend applicazione dovrà utilizzare access_token invece di cookie di sessione e porta un grande vecchio domanda:
come rimanere connessi in - The Infamous "Remember Me" Casella (parte II da Form based authentication for websites)
Dal punto di vista di OAuth2 la nostra applicazione di frontend userà qualcosa tra Resource Owner Password Credentials Grant e Implicit Grant. È più vicino a Credenziali password Concedere poiché utilizzeremo ancora il modulo di accesso abituale e non reindirizzeremo l'utente a un altro dominio per accedere. Allo stesso tempo è più vicino a Concessione implicita poiché tutto sta per essere solo per il browser & JavaScript basato quando access_token
verrà salvato nel browser.
La RFC says il server di autorizzazione non deve emettere un token di aggiornamento se si utilizza implicito di Grant e la mia domanda è se è ancora valido in questo caso l'uso quando non si ha realmente utilizza un 3-d partito OAuth ma la vostra propria API? Istintivamente ritengo che avere refresh_token
nel browser sia un buco di sicurezza e vorrei confermarlo con voi ragazzi, ma che lo refresh_token
sembra essere l'unico modo per avere un accesso persistente che funziona allo stesso modo dei cookie.
UPD dopo il commento @FlorentMorselli:
spec L'OpenID ancora non rispondono alla mia domanda, se posso usare refresh_token
con il browser unica applicazione
- Google says forniscono
refresh_token
solo peraccess_type=offline
- OpenID Connect Core says non è possibile utilizzare il token di aggiornamento con il flusso implicito
- OpenI D Collegare Nucleo says nulla sull'utilizzo
refresh_token
con Hybrid flusso - C'è solo one place in cui si dice qualcosa di promettente circa
refresh_token
con flusso ibrida, ma niente di preciso
UPD2 grazie alla @reallifelolcat
Sembra che OpenID Connect non supporti esplicitamente Resource Owner Password Credentials Grant, ovvero che tu debba reindirizzare l'utente al server OpenID Connect per eseguire il login. Sai se esiste un altro modo per autenticarsi con le credenziali dell'utente su OAuth 2.0?
credo api scissione e frontend sta diventando sempre più comune in questi giorni e sarei grato se si condivide come risolvere questo problema persistente Accesso e se si elimina completamente e user forza per ri-login ogni X settimane.
Grazie!
OAuth2 non è un protocollo di autenticazione, è un'autorizzazione. Se si desidera autenticare gli utenti usando OAuth2 e JWT, ti consiglio di guardare le [specifiche OpenID Connect] (http://openid.net/connect/) –
@FlorentMorselli grazie per il link, ho esteso la mia domanda –
Le applicazioni basate su user-agent sono client pubblici e non sono in grado di memorizzare le proprie credenziali e aggiornare i token. Questo è il motivo per cui questi client non possono rilasciare token di aggiornamento. L'applicazione nativa (ad esempio l'app per Android) fornisce un "livello accettabile di protezione". Questo è il motivo per cui possono essere autorizzati a ottenere un token di accesso (vedere https://tools.ietf.org/html/rfc6749#section-2.1). –