Как создать токен JWT, используя учетные данные Facebook при загрузке Spring

У меня есть одно требование: разработать Spring Boot Rest API для входа в систему с использованием учетных данных Facebook и создать токен JWT для этих учетных данных и проверить каждый запрос.

Спасибо.

Надеюсь, вы уже знаете о токенах JWT. Документация доступна для него, если вы не знакомы с ним. Я бы посоветовал вам не включать учетные данные facebook в JWT. Вместо этого вы должны сгенерировать случайный токен, который будет храниться в каком-либо хранилище, например, в постоянстве или, возможно, в кеше. Каждый раз при авторизации каждого запроса вы можете получить учетные данные facebook из кеша или постоянства и проверить токен. Дайте мне знать в комментариях, если вам нужна дополнительная помощь или я что-то пропустил.

Nisheeth Shah 22.01.2019 11:22

Привет, Нишит, я понял твою точку зрения. Но мое требование заключается в том, что для использования необходимо войти в систему с учетными данными Facebook и подтвердить дальнейший запрос на использование.

sundararajan s 22.01.2019 20:22

Например. Если я вошел в систему с учетными данными facebook в приложении xyz. затем я пытаюсь получить доступ к некоторой конфиденциальной информации на этот раз, чтобы подтвердить использование, разрешено ли использование или нет. Это то, что мое требование. Не могли бы вы мне помочь? Спасибо.

sundararajan s 22.01.2019 20:29

Когда пользователь входит в систему, используя учетные данные Facebook, пользователь будет аутентифицирован Facebook и выдаст токен, который можно использовать для авторизации. Я хочу сказать, что как только вы аутентифицируете пользователя на Facebook, вы получаете учетные данные. Вместо того, чтобы оборачивать его в JWT, сохраните его где-нибудь с идентификатором и оберните этот идентификатор в JWT. При каждом запросе вы будете получать токен JWT, и при авторизации вы можете получить идентификатор от JWT и получить его из постоянства или сохранить и авторизовать пользователя.

Nisheeth Shah 23.01.2019 09:54

ОК, не могли бы вы поделиться со мной фрагментом кода/ссылкой для получения учетных данных пользователя после аутентификации, выполненной facebook.

sundararajan s 23.01.2019 10:13

Конечно вещь. Скоро я опубликую пример здесь.

Nisheeth Shah 25.01.2019 10:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
311
1

Ответы 1

Когда пользователь входит в систему, используя учетные данные Facebook, пользователь будет аутентифицирован Facebook и выдаст токен, который можно использовать для авторизации. Я хочу сказать, что как только вы аутентифицируете пользователя на Facebook, вы получаете учетные данные. Вместо того, чтобы оборачивать его в JWT, сохраните его где-нибудь с идентификатором и оберните этот идентификатор в JWT. При каждом запросе вы будете получать токен JWT, и при авторизации вы можете получить идентификатор от JWT и получить его из постоянства или сохранить и авторизовать пользователя.

Скажем, у вас есть токены facebook после входа в систему, тогда вам нужно где-то хранить их, используя какой-то идентификатор. String fbTokenId = storeFBToken(fbToken);. Используя этот токен, вы можете сгенерировать токен JWT, например:

Algorithm algorithm = Algorithm.HMAC256(key);
String token = JWT.create().withIssuer(author)
            .withClaim("fbTokenId", fbTokenId)
            .withSubject("user")
            .sign(algorithm);

Когда вы авторизуете запрос, у вас будет токен JWT. Теперь вам нужно проверить токен и прочитать fbTokenId, чтобы проверить его:

Algorithm algorithm = Algorithm.HMAC256(key);
JWTVerifier verifier = JWT.require(algorithm).withIssuer(author)
        .build();
DecodedJWT jwt = verifier.verify(token);
String fbTokenId = jwt.getClaim("fbTokenId").as(String.class);
String fbToken = getFBTokenFromStore(fbTokenId);

Прежде чем перейти к этому, убедитесь, что вы понимаете концепции аутентификации и авторизации без сохранения состояния, особенно с токенами.

Найдите пример приложения для аутентификации здесь

Не могли бы вы поделиться справочной ссылкой, где я могу найти полный код

sundararajan s 28.01.2019 13:00

Какую версию весенней загрузки вы используете?

Nisheeth Shah 29.01.2019 09:30

Посмотрите на ссылку, которую я добавил в пост.

Nisheeth Shah 29.01.2019 09:33

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