Sto prendendo in considerazione un caso in cui un client OAuth2 ottiene un token di accesso per accedere a più server di risorse.
Basato su specifica , per proteggere dall'attacco di reindirizzamento di token:
to deal with token redirect, it is important for the authorization
server to include the identity of the intended recipients (the
audience), typically a single resource server (or a list of resource
servers), in the token.
Questo significa che nel nostro caso, il token di accesso può avere un elenco di URI del pubblico e quindi ogni server di risorse dovrebbe verificare che il token abbia accesso alla sua risorsa.
Tuttavia, secondo la bozza delle specifiche del Indicatori di risorse per OAuth2 , lo stato dell'autore:
I continue to question the value of allowing multiple resources vs the functional and security complexity that comes with doing so. Writing the preceding paragraph just underscores that concern. So just noting it here.
Ho anche notato che i provider di gestione delle identità come Auth0 , supportano solo singoli valori del campo pubblico e invece punta a utilizzare una combinazione di scope
e audience
per più server di risorse.
Altri provider supportano più segmenti di pubblico.
Quindi ... esiste un problema di sicurezza con più valori di pubblico?
Mi sembra che scope
e audience
abbiano intenzioni diverse e quindi mescolarle non è necessariamente l'approccio giusto. Secondo a :
Scope, from Section 3.3 of OAuth 2.0 [RFC6749], sometimes is overloaded to convey the location or identity of the resource server, however, doing so isn't always feasible or desirable. Scope is typically about what access is being requested rather than where that access will be redeemed (e.g. email, user:follow, user_photos, and channels:read are a small sample of scope values in use).
Qualche idea su questo sarebbe apprezzata. Grazie!
Nota:
Reindirizzamento token: un utente malintenzionato utilizza un token generato per il consumo da un server di risorse per accedere a una risorsa diversa server che crede erroneamente che il token sia per esso.