Как добавить нулевые утверждения к токену JWT в JJWT (Джексон)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить нулевые утверждения к токену JWT в JJWT (Джексон)

Сообщение Anonymous »

Я пытаюсь задать несколько утверждений, многие из которых содержат нулевые значения. Эти свойства должны существовать и необходимы для того, чтобы пользователь не был отклонен в клиентском приложении, даже если они имеют значение NULL.
Проблема в том, что по умолчанию JJWT не включает значения NULL в JWT (или, по крайней мере, это вроде так и есть). Несмотря на это, внутренние сериализованные объекты содержат нулевые свойства.
Вот как я их добавляю, и решение, которое я пытался реализовать, заключается в настройке ObjectMapper и его использовании. в построителе JWT.

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

public String generateTokenFromJwtUserDetails(JwtUserDetails userDetails) {
Date now = new Date();
Date expiryDate = new Date(now.getTime() + jwtExpiration);

Map claims = new HashMap();
claims.put("name", userDetails.getName()); // null, will not appear in jwt
claims.put("id", userDetails.getId()); // not null, appears
claims.put("tenant", userDetails.getTenant()); // contains null values that do end up in jwt

// rest of claims...

// here I tried to set serialization inclusion in a custom object mapper, doesn't work
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);

// I also tried this, but won't work either
//objectMapper.enable(SerializationFeature.WRITE_NULL_MAP_VALUES);

try{
return Jwts.builder()
.json(new JacksonSerializer(objectMapper))
.claims(claims)
.subject(userDetails.getUsername())
.issuedAt(now)
.expiration(expiryDate)
.signWith(getSignInKey())
.issuer(jwtIssuer)
.compact();
}catch(Exception e){ // ...
}
Дальнейшее пояснение:
  • Я также включаю объекты внутри моего JWT, эти объекты сериализуются Джексоном со всеми их полей (поэтому у меня есть вложенные объекты с нулевыми значениями, но внешний JWT их не принимает). Например:

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

{
"id": "ibn12u3bio412i",
"tenant": {
"deletedOn": null,
}
}
  • HashMap содержит все ключи и значения, даже если они равны нулю.
  • Я' Я знаю, что JWT не должны содержать нулевые данные, но в этой ситуации я не могу контролировать клиент.
Спасибо, что уделили время !


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jjwt-jackson 0.12.6: невозможно проанализировать JWT с помощью пользовательских утверждений.
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Проблема с методом parserBuilder() в библиотеке JJWT для проверки токена JWT.
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Проблема с методом Parserbuilder () в библиотеке JJWT для проверки токена JWT
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Доступ к токену JWT из заголовка
    Anonymous » » в форуме Php
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Почему короткие нулевые значения преобразуются в нулевые значения int для сравнения с нулевым?
    Anonymous » » в форуме C#
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous

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