Управление пользователями, которые проходят аутентификацию с помощью OAuth2JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Управление пользователями, которые проходят аутентификацию с помощью OAuth2

Сообщение Anonymous »

Следуя этому руководству, я учусь использовать OAuth2 в своем приложении Spring Boot. Для управления аутентифицированными пользователями я начал с простого решения, которое использует Principal.getName() в качестве уникального идентификатора пользователя для хранения его в MongoDB.

Код: Выделить всё

@GetMapping("/user")
public ResponseEntity user (@AuthenticationPrincipal OAuth2User principal) {
User user = userService.findOrCreateUser (principal);
//...
}
и

Код: Выделить всё

public User findOrCreateUser (OAuth2User principal) {
String id = principal.getName ();
//...
}
Это работает очень хорошо — когда пользователи проходят аутентификацию через Github, объект Principal имеет другое значение для getName(), чем когда пользователи проходят аутентификацию через Google. В обоих случаях объект Principal имеет постоянное значение getName(), когда пользователи выходят из системы и снова входят в систему. Мой вопрос заключается в том, гарантирует ли OAuth2 уникальное значение для getName() для всех возможных поставщиков аутентификации OAuth2. Я не смог найти никакой информации об этом. Если нет, то как правильно однозначно идентифицировать пользователей?
Прежде чем я придумал решение выше, я пытался реализовать «правильный» способ, но в разделе «Как Добавьте базу данных локальных пользователей», руководство довольно расплывчато:

Реализуйте и предоставьте OAuth2UserService для вызова сервера авторизации, а также вашей базы данных. Ваша реализация может делегировать реализацию реализации по умолчанию, которая возьмет на себя тяжелую работу по вызову сервера авторизации. Ваша реализация должна возвращать что-то, расширяющее ваш пользовательский объект User и реализующее OAuth2User.

Я попробовал решение ниже, сохраняя объект OAuth2User с каждым пользователь. Однако при чтении объектов User из MongoDB возникает исключение, поскольку не удается найти подходящий конструктор (хотя конструктор имеет параметры для всех полей класса).

Код: Выделить всё

public class User implements OAuth2User {
private final String id;
private final OAuth2User principal;
Любая помощь приветствуется, включая ссылки на дополнительную документацию.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ith-oauth2
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Управление пользователями, которые проходят аутентификацию с помощью OAuth2
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Управление пользователями, которые проходят аутентификацию с помощью OAuth2
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Управление пользователями, которые проходят аутентификацию с помощью OAuth2
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Проблема: тесты проходят в режиме выполнения, но не проходят в режиме отладки с помощью Qt (PySide6 — Python)
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Реализация OAuth2 и управление пользователями Django
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»