Я хочу защитить бэкэнд Spring RESTful. Один из способов (справа?) - использовать OAuth 2.0, как показано здесь:
http://www.youtube.com/watch?v=8uBcpsIEz2I
В моей архитектуре сервер ресурсов и сервер авторизации НЕ НЕ тот же объект. Я действительно предоставляю некоторые услуги JSON REST. Нет пользовательского интерфейса. Если я прочитаю OAuth2 RFC, они просто скажут:
Взаимодействие между сервером авторизации и сервером ресурсов выходит за рамки этой спецификации. Сервер авторизации может быть тем же сервером, что и сервер ресурсов или отдельный объект. Один сервер авторизации может выдавать токены доступа, принятые нескольких серверов ресурсов.
Я нашел хорошую диаграмму на cloudfoundry.com (связанную с вышеупомянутым видео с YouTube), которую я использую, чтобы проиллюстрировать мой взгляд:
"токен": это может быть/должно быть google или facebook, например.
RESTful backend: Это действительно мой код. Spring Услуги RESTful, такие как:
@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);
}
}
(Это всего лишь пример кода)
Теперь мой вопрос: можно ли как-то проверить токены доступа, которые генерируются AuthServer (Facebook, Google)? Я знаю, что мне нужно иметь сопоставление (база данных) "токена для пользователя" где-то на моем ResourceServer. В принципе, я хотел бы создать свой RESTful API как один из PayPal:
https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/
Но как я могу обрабатывать шаги 1 и 2, если я хочу использовать Facebook или Google в качестве аут-провайдеров? Возможно ли это?
Дополнительная мысль: Вероятно, мне нужно предоставить свою собственную конечную точку /oauth2/token
, а затем делегировать основной AuthProvider.