Sto costruendo un'API RESTful per un progetto su cui sto lavorando e mi piacerebbe fare l'applicazione principale consumano l'API perché:domande di consumare la tua API con OAuth
- il risultato sarà ad avere un set di codici per mantenere
- se decidiamo di esporre le API per 3rd sviluppatori partito sarà già essere fatto
- si apre la possibilità di rendere le applicazioni mobili che consumano
- ho molta voglia di imparare come farlo
L'API sarà ospitata su un sottodominio https://api.example.com
e l'applicazione Web principale sarà ospitata nel dominio radice https://example.com
.
Concettualmente capisco come tutto funzioni, ma la mia domanda principale è come cambierà il flusso di autenticazione, se non del tutto. Ordinariamente applicazioni 3rd party sarebbero:
- ottenere un token richiesta
https://api.example.com/request_token
- Redirect all'utente di autenticarsi su
https://api.authenticate.com/authorize
- reindirizzato indietro all'applicazione 3a parte
- Ottenere un token di accesso da
https://api.example.com/access_token
Poiché controllo entrambi i domini, posso fare qualcosa di simile a:
- ottenere un token di richiesta quando le terre utente sulla schermata di accesso a
https://www.example.com
- L'utente viene autenticato tramite un modulo sul
https://www.example.com
che chiama lo stesso codice comehttps://api.example.com/authorize
- Se le credenziali sono valide, il token di richiesta è scambiato per il token di accesso token di
- l'accesso viene salvato nella sessione e termina quando l'utente si disconnette come farebbe normalmente
Fase 3 sente come se fosse sbagliato poiché ci sarà Duplica codice, ma non mi aprirebbe agli attacchi XSS? Il modulo di login su https://www.example.com
ha inviato i dati a https://api.example.com
poiché sono tecnicamente domini diversi?
Sono troppo complicato?
Puoi approfondire l'articolo 3? Quando l'utente esegue il login, si salva un ID di sessione in un cookie e quindi lo si utilizza come token di pseudo accesso per quando si effettua una chiamata API e quindi si cerca quando si riceve la richiesta API? Sembra che sarebbe una vulnerabilità di sicurezza ... – Steve
In sostanza si. Ma come è una vulnerabilità? Non uso OAuth quando chiami le API dall'app web. Se hai effettuato l'accesso (come determinato dalla convalida del cookie), allora le API sono accessibili semplicemente chiamando l'URL. Ho dimenticato di menzionare tuttavia che servo l'API: s all'app Web sullo stesso dominio. –
Suppongo che finché non ci si basa esclusivamente sull'ID di sessione per identificare l'utente sul lato server, non lo è. Stavo pensando che potresti aprirti a [Session Hijacking] (http://en.wikipedia.org/wiki/Session_hijacking), ma è il venerdì dopo che la scuola è uscita e sono stanco. In base alle tue risposte ad altre domande, sei decisamente un tipo molto esperto! Grazie per l'aiuto! – Steve