OAuth - In che modo il server di risorse convalida il token di accesso non per altri server di risorse?

2

Facciamo un esempio dove ci sono due server di risorse - RS1 e RS2 e c'è un server di autorizzazione - AS.

Entrambi i server di risorse - RS1 e RS2 utilizzano il server di autorizzazione - AS

Se un client richiede un token di accesso per RS1 e lo passa a RS2, in che modo RS2 lo convaliderà e fallirà?

Una possibilità è dipendere dai controlli di ambito - ma sembra che i controlli di ambito non siano altro che confronti tra stringhe (o sbaglio qui?). In tal caso, se sia RS1 che RS2 definiscono esattamente lo stesso nome dell'ambito (ad esempio Read ), allora non c'è affidabilità nemmeno con gli ambiti.

    
posta Abhinav 21.06.2018 - 16:36
fonte

2 risposte

3

Puoi anche utilizzare JSON Web Token (JWT) ( link ).

Il JWT include un parametro "aud" per specificare il pubblico del token emesso. I servizi delle risorse devono controllare la firma del token e i dati che contiene.

Vedi link

Un'altra soluzione sarebbe quella di associare un server di risorse al token di accesso creando una nuova proprietà (contenente un nome o url o l'id_cliente per identificare il "server delle risorse" autorizzato).  Quindi il controllo di questo parametro dipende da come funziona la comunicazione tra il server di autorizzazione e i server di risorse.

    
risposta data 29.06.2018 - 17:05
fonte
0

Potresti aggiungere qualche tipo di spazio dei nomi agli ambiti. Per RS1 gli ambiti hanno come prefisso "RS1 ::" per RS2 gli ambiti sono preceduti da "RS2 ::". Quindi, se entrambi i server di risorse hanno uno scope letto, l'ambito per RS1 sarebbe "RS1: read" per RS2 sarebbe "RS2 :: read".

    
risposta data 21.06.2018 - 17:13
fonte

Leggi altre domande sui tag