У меня есть веб-приложение, созданное с помощью Angular 4/5 и Spring Boot. Теперь я хочу добавить учетные записи пользователей в свое приложение, и у меня возникли некоторые проблемы. Я хотел бы иметь свой Auth serwer (в Spring Boot), а также хочу использовать таких провайдеров, как Facebook и Google. Мой первый вопрос: когда пользователь выберет Facebook для авторизации, тогда как мой сервер ресурсов узнает, кто запрашивает ресурс. Когда я использую свой собственный сервер Auth, я делаю это так:
@GetMapping("/user/name")
public ResponseEntity<String>(Principle principle) {
return new ResponseEntity<String>(principle.getName(), HttpStatus.OK);
}
и это работает, но как получить имя пользователя, когда пользователь использует Facebook или Google auth?
Мои вторые вопросы - это то, как правильно обрабатывать время истечения срока действия токенов в Angular 4.
Мой третий и последний вопрос. Некоторые ресурсы с моего сервера будут доступны для незарегистрированный пользователь (анонимный), так как я могу защитить свои ресурсы, чтобы другие клиенты, кроме моих, не использовали мой API?
Если у вас есть советы или примеры, пожалуйста, помогите!
Не беспокойтесь о грубом комментарии к вашему вопросу, система единого входа (SSO) может быть довольно сложной.
Если вы используете Facebook и Google в качестве дополнительных поставщиков единого входа, то вы должны понимать, что эти поставщики предоставят вам какой-то уникальный идентификатор вместе с информацией о пользователе, когда вы ее запросите.
Spring Security и соответствующая автоматическая конфигурация Spring Boot имеют неплохую поддержку для связывания информации пользователя SSO с Принципалом. Я добавлю несколько хороших ссылок ниже, чтобы помочь понять решение Springs для этого. Я собираюсь использовать Spring Boot 2 и Spring Security 5, поскольку ваших версий нет в списке.
Вы также можете изучить Весенний Социальный, если хотите сделать больше, чем просто SSO.