Sto proponendo questo schema per l'autenticazione federata e WebCrypto. Non sono sicuro che esista qualcosa di simile (o migliore), per favore inviami materiale correlato.
Enti
- Browser di Alice, BROWSER
- Il server di Bob, BOB
- Il server di Alice, ALICE
Sfondo
Le identità sono nomi di dominio e ogni server ha un elenco di controllo di accesso su ciascuna risorsa.
- Bob scrive nel file di controllo degli accessi "alice.com" può leggere "/ foo"
- Alice vuole leggere foo
Protocollo
tl; dr versione:
- Il browser di Alice tenta di accedere a una risorsa sul server di Bob, risponde Bob con un messaggio non autorizzato e un nonce
- Alice genera una chiave nel suo browser con webcrypto e la tiene in memoria
- Alice carica la sua chiave sul suo sito web
- Alice firma il nonce, l'indirizzo del server bob e l'indirizzo della sua chiave
- Bob riceve il messaggio e controlla se la posizione indicata da Alice ha la chiave pubblica che verifica la firma
Schema
1. Alice's Browser tries to access a resource on Bob's server
BROWSER -------------- GET /foo ----------------------> BOB
BROWSER <------------- RESPONSE 401 {nonce} ----------- BOB
2. BROWSER uses WebCrypto to generate Pub/Priv key pair
3. Alice's post her new key on her server
BROWSER -------------- POST /keys/nonce --------------> ALICE
{ Pub }
BROWSER <------------- RESPONSE 200 ------------------- ALICE
4. Alice's Browser signs the location of the key, the nonce and
the Bob's Server origin
BROWSER -------------- POST /foo ---------------------> BOB
Sign(location, nonce, bob)
5. Bob's server gets the advertised location
BOB -------------- GET /keys/nonce ---------------> ALICE
BOB <------------- RESPONSE {Pub} ----------------- ALICE
6. Bob's server verifies the signature
BROWSER <------------- RESPONSE 200 ------------------- BOB
{set cookie}
Domande
- C'è qualche trappola che non vedo?
- Si può verificare un attacco nel punto # 4 del diagramma?
- Questo schema esiste o ha un nome?