Я использую токен JWT
в своем проекте spring boot
.Я удивлен, что мой токен JWT расшифрован с их официального сайта и все данные восстановлены с токена.Вот мой токен eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJTdGVlbERvYyIsImV4cCI6MTU1NzU2ODQ1MiwibG9naW5JZCI6ImFkbWluIiwidXNlcklkIjoyLCJlbWFpbElkIjoiZGhpcmVuZHJhQHRlc3QuY29tIn0.o4UKtwO22cAXLjIsUuDRgAQf7OjUbe_O9DbSGxPYgfQ
Ссылка, где он декодируется Ссылка ..
Вот мой код
public class JwtHelper {
static String subject = "SteelDoc";
static String secret = "faa76006-6fef-413d-9cae-a05e63170cbf";
Integer userId = null;
String loginId = "";
String emailId = "";
public String getUserName() {
return loginId;
}
public void setUserName(String userName) {
this.loginId = userName;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getToken(String loginId, Integer userId, String email) {
try {
Date d = new Date();
Date de = d;
de.setYear(de.getYear() + 1);
String jwt = Jwts.builder().setSubject(subject).setExpiration(de).claim("loginId", loginId)
.claim("userId", userId).claim("emailId", email)
.signWith(SignatureAlgorithm.HS256, secret.getBytes("UTF-8")).compact();
return jwt;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public boolean validateToken(String token) {
String jwt = token;
Jws<Claims> claims;
try {
claims = Jwts.parser().setSigningKey(secret.getBytes("UTF-8")).parseClaimsJws(jwt);
userId = (Integer) claims.getBody().get("userId");
loginId = (String) claims.getBody().get("loginId");
emailId = (String) claims.getBody().get("emailId");
return true;
} catch (ExpiredJwtException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedJwtException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedJwtException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SignatureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}}
Мои вопросы ...
Почему это происходит .?
Если это не безопасно, то почему мы его используем .?
Есть ли способ защитить этот токен.?