as the title describes when i add the claims it will remove the subject:
public String generateToken(MyUserDetails myUserDetails) {
Map<String, Object> claims = new HashMap<>();
claims.put("ROLES", myUserDetails.getCredentials().getRoles().stream()
.map(Role::getName)
.collect(Collectors.toSet()));
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setIssuer("xxxx")
.setSubject(myUserDetails.getEmail())
.setClaims(claims)
.setIssuedAt(new Date())
.setExpiration(new Date((new Date()).getTime() + jwtExpirationMs))
.signWith(SignatureAlgorithm.HS512, jwtSecret)
.compact();
before claims
{
"sub": "system@login.com",
"iss": "xxxx",
"iat": 1686327421,
"exp": 1686336061
}
after claims:
{
"Role": [
"ROLE_UNDEFINED"
],
"iss": "xxxx",
"exp": 1686335909,
"iat": 1686327269
}