Quindi siamo un gruppo di studenti che realizzano una piattaforma online per la nostra università. Stiamo modellando la nostra piattaforma come un insieme di servizi.
Ad esempio, un servizio "A" potrebbe memorizzare solo le informazioni personali degli utenti ed esporre un'API REST su di esso. Un altro servizio "B" potrebbe inviare solo email.
Una struttura approssimativa sarebbe simile a questa:
OravogliamoutilizzareOAuthperl'autenticazioneel'autorizzazione(socheOAuthèunframeworkdiautorizzazionemavogliamofare
Uno scenario tipico potrebbe essere qualcosa di simile:
- L'utente richiede la pagina web del servizio "A".
- Servizio "A" vede che l'utente non è autenticato, quindi invierà un reindirizzamento al server di autenticazione.
- L'utente inserisce le proprie credenziali e un token di accesso è concesso al servizio "A".
Ora, il servizio "A" potrebbe aver bisogno di chiamare un altro servizio "B". Tieni presente che questa è una richiesta interna al server . Vari altri servizi potrebbero chiamare il servizio "B".
Voglio assicurarmi che quando viene chiamato il servizio "B", solo i servizi consentiti possono chiamarlo. Ad esempio, "A" ha il diritto di chiamare "B", ma "C" no. In altre parole, desidero garantire che solo i chiamanti autorizzati per un determinato servizio possano chiamarlo .
Quindi la mia domanda è, è possibile proteggere le chiamate interne da servizio a servizio usando OAuth?
Può essere fatto in un modo più semplice e sicuro?
Non voglio delegare token: cioè, non voglio che il primo token emesso per servire A venga usato da qualche altra parte. Si presume che se "A" sta chiamando "B", quindi "A" ha il diritto di farlo, anche se non vi è alcun utente loggato.
Il mio tentativo : (potrebbe essere sbagliato, correggimi) * Il server Auth può rilasciare clientIds e segreti client per ciascun servizio. * Un servizio che desidera chiamare un altro servizio si identifica con il server di autenticazione utilizzando la chiave e il segreto. * Se il servizio è autorizzato a chiamare il servizio di destinazione, il server di autenticazione emette un token, altrimenti restituisce proibito.
Ma anche in questo caso, il server Auth sta facendo troppo.
Non è possibile che ogni servizio controlli ciò che altri servizi possono chiamarlo?
Grazie.