JJWT 라이브러리를 사용하여 JWT 토큰을 생성하고 있습니다. 다음과 같이 토큰을 생성합니다. 내 비밀 키로 더미 값을 사용하고 있습니다.JJWT 생성 된 토큰의 서명이 올바르지 않습니다.
우리는 토큰이 성공적으로 디코딩 할 수 있지만 jwt.security.key=security-key
@Value("${jwt.security.key}")
private String key;
@Value("${ws.issuer}")
private String issuer;
static final long ONE_MINUTE_IN_MILLIS=60000;
static final long TOKEN_DURATION_IN_MIN=30L;
private SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
@Override
public String issueToken(String userName) {
long nowMillis = System.currentTimeMillis();
long expMillis = nowMillis + (ONE_MINUTE_IN_MILLIS * TOKEN_DURATION_IN_MIN);
return Jwts
.builder()
.setId("01")
.setIssuedAt(new Date(nowMillis))
.setHeaderParam("typ","JWT")
.setSubject(userName)
.setIssuer(issuer)
.setExpiration(new Date(expMillis))
.signWith(signatureAlgorithm, key).compact();
}
있다고 가정 할 수 있습니다. jwt.io 디버거에서 서명 할 때마다 잘못된 서명이 항상 발생합니다. 어떤 볼 수 here.
"디코딩"탭의 "서명 확인"에서 토큰을 인코딩하는 데 사용 된 암호를 설정해 보았습니까? 그렇게해야합니다. 비밀을 알아야하는 JWT를 확인하려면 클라이언트 만 본문이 올바른 것으로 가정해야합니다. –
나는 validator가 jwt.io에 의해 손상되었다고 생각한다 (아직도, 분명히). 유효성 검사를 생략하고 내 응용 프로그램에서 그렇게하면 내 비밀 키가 올바르게 유효 함이 입증되었습니다. –