Sto cercando di capire come implementare un flusso di codice di autorizzazione OAuth 2 quando si dispone sia di un'app JS a singola pagina sia di un'API REST. L'obiettivo è proteggere l'accesso all'API REST scaricando l'autenticazione dal provider OAuth.
Attualmente il mio flusso assomiglia a:
1)
+--------------------+ +----------------+
| JS Single Page App | - redirect -> | OAuth Provider | - user enters credentials
+--------------------+ +----------------+
2)
+----------------+ +----------+
| OAuth Provider | - redirect with temporary code -> | REST API |
+----------------+ +----------+
3)
+----------+ +----------------+
| REST API | - request access token using code -> | OAuth Provider |
+----------+ <- return access token ------------- +----------------+
Cosa dovrei fare ora? La mia attuale comprensione è che dovrei reindirizzare l'utente dopo aver ricevuto il token di accesso a una pagina che caricherà di nuovo l'app Single Page di JS. Ma dovrei condividere il token di accesso con l'app a singola pagina e utilizzare la presenza di esso per autenticare qualsiasi richiesta che colpisce la mia API REST, oppure è meglio creare un identificatore separato e mantenere un mapping sul lato server tra new-identifier->access_token
? In entrambi i casi quale sarebbe il modo migliore per trasferire qualsiasi identificativo al cliente? Preferirei non mantenere alcuna sessione e non avere l'identificatore visualizzato nella barra degli indirizzi della pagina reindirizzata. L'unica cosa che posso attualmente pensare sarebbe creare un cookie temporaneo che l'app a singola pagina dovrebbe leggere e quindi cancellare, ma in qualche modo sembra un po 'goffo.