Desidero proteggere il mio backend Spring RESTful. Un modo (? Destra) è quello di utilizzare OAuth 2.0 come illustrato di seguito:convalidare il token di accesso OAuth 2.0 da un server di risorse Spring RESTful
http://www.youtube.com/watch?v=8uBcpsIEz2I
All'interno mia architettura server di risorse e server di autorizzazione non sono la stessa entità. Fornisco solo alcuni servizi JSON REST. Nessuna interfaccia utente. Se leggo la OAuth2 RFC dicono semplicemente:
L'interazione tra il server e il server di autorizzazione delle risorse è oltre la portata di questa specifica. Il server di autorizzazione potrebbe essere lo stesso server del server di risorse o un'entità separata. Un singolo server di autorizzazione può rilasciare token di accesso accettati da più server di risorse .
Ho trovato un buon diagramma a cloudfoundry.com (legate a quanto sopra video di youtube), che sto usando per illustrare mio punto di vista:
fornitore di "token": Questo potrebbe/dovrebbe essere google o facebook per esempio.
backend RESTful: questo è in realtà il mio codice. Primavera servizi RESTful come:
@Controller
@RequestMapping("/api/v1")
public class MyResourceToProtect {
@Autowired
private MyService service;
@RequestMapping(value = "/resource/delete/{name}",
method = RequestMethod.DELETE,
consumes = MediaType.APPLICATION_JSON_VALUE,
headers = "Content-Type=application/json")
@ResponseStatus(HttpStatus.OK)
public void delete(@PathVariable("name") String name) {
service.delete(name);
}
}
(Questo è solo un po 'di codice di esempio)
Ora la mia domanda: è in qualche modo possibile per convalidare i token di accesso che vengono generati dal authserver (Facebook, Google)? So che ho bisogno di avere una mappatura "token to user" (database) da qualche parte sul mio ResourceServer. Fondamentalmente mi piacerebbe progettare il mio RESTful API come ad uno da PayPal:
https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/
Ma come posso gestire le fasi 1 & 2 se voglio usare Facebook o Google come provider di Auth? È possibile?
Riflessione aggiuntiva: Probabilmente ho bisogno di fornire il mio endpoint /oauth2/token
e quindi delegare al AuthProvider sottostante.
il mio caso d'uso è molto simile all'OP, e sospetto che la tua risposta per @domi risponda anche al mio problema corrente - Se ho scritto un'applicazione "front-end" usando Spring Social, e ho ottenuto un Token di accesso OAuth, per esempio Google, come dovrebbe quell'applicazione "front-end" passare quel token di accesso alla mia applicazione Spring Security? Abbiamo provato a passarlo attraverso l'intestazione "Authentication:", inutilmente. –