Angular 4/5 + Spring Boot + поддержка Oauth2

У меня есть веб-приложение, созданное с помощью 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?

Если у вас есть советы или примеры, пожалуйста, помогите!

1
0
2 289
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не беспокойтесь о грубом комментарии к вашему вопросу, система единого входа (SSO) может быть довольно сложной.

Если вы используете Facebook и Google в качестве дополнительных поставщиков единого входа, то вы должны понимать, что эти поставщики предоставят вам какой-то уникальный идентификатор вместе с информацией о пользователе, когда вы ее запросите.

Spring Security и соответствующая автоматическая конфигурация Spring Boot имеют неплохую поддержку для связывания информации пользователя SSO с Принципалом. Я добавлю несколько хороших ссылок ниже, чтобы помочь понять решение Springs для этого. Я собираюсь использовать Spring Boot 2 и Spring Security 5, поскольку ваших версий нет в списке.

Вы также можете изучить Весенний Социальный, если хотите сделать больше, чем просто SSO.

Другие вопросы по теме