JWT 기본 지식 및 사용

8012 단어 백엔드 개발

JWT란?


Json web token.일반적으로 신분 제공자와 서비스 제공자 간에 인증된 사용자의 신분 정보를 전달하여 자원 서버에서 자원을 얻을 수 있도록 한다.

왜 JWT를 써요?


session 인증 정보는 서버에 기록해야 합니다.일반적으로 메모리에 저장하면 사용자가 증가하고 비용이 커진다.분포식 상황에서 부하 균형과 응용 확장에 영향을 미친다.
token 기반 인증 메커니즘은 http 프로토콜과 유사하여 무상태입니다.더 이상 서버가 사용자의 인증 정보를 보존할 필요가 없다.따라서 응용 프로그램은 사용자가 그 서버에 로그인하는 것을 고려할 필요가 없고 응용 확장에 유리하다.

간략한 절차


사용자는 사용자 이름 비밀번호를 사용하여 서버 서버에 사용자 정보를 검증하도록 요청합니다. 검증을 통해 사용자에게 Token 클라이언트를 보내서 token을 저장합니다. 요청할 때마다 이 token을 첨부합니다.서버 (반드시 token을 발급하는 서버가 아니라 그 어느 것이든지) 에서 token 값을 검증하고 데이터를 되돌려줍니다.

JWT의 구성


3단 정보: 머리 헤더 + 부하payload + 비자signature.
header 성명 형식과 성명 암호화 알고리즘
{
  'typ': 'JWT',
  'alg': 'HS256'
}

그리고base64 암호화(대칭 암호화, 복호화 가능)로 첫 번째 부분을 구성합니다.
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

playload의 한 json은 표준에 등록된 성명 공공 성명 개인 성명 중 개인 성명은 공급자와 소비자가 공동으로 정의한 것이다. 왜냐하면base64를 사용하는 것은 명문에 해당하기 때문에 민감한 정보를 저장할 수 없기 때문이다.여기는 jwt 두 번째 부분을 구성합니다.signature 비자 정보:base64 암호화된 헤더.payload 다음에header에서 설명한 암호화 방식을 사용하여 서버에서 제공하는 secret에 따라 소금 조합 암호화를 합니다.이것이 바로 jwt의 세 번째 부분이다.secret은 서버의 개인 키입니다. 누설할 수 없습니다.제1부분과 제2부분base64 암호화는 모두 복호화할 수 있다.

JWT의 사용


의존 추가
        <dependency>
            <groupId>io.jsonwebtokengroupId>
            <artifactId>jjwtartifactId>
            <version>0.9.1version>
        dependency>

프로필을 리소스 패키지 아래 jwt에 놓습니다.properties
jwt.secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
jwt.expiration=6000000

서비스 클래스 만들기 Jwt서비스 클래스 프로필 정보 주입
@Service
@PropertySource("classpath:jwt.properties")
public class JwtService {

    @Value("${jwt.secret}")
    private String secret;
    @Value("${jwt.expiration}")
    private Long expiration;


    public String generateToken(String content) {
        Map<String, Object> claims = new HashMap<>();
        claims.put(Claims.SUBJECT, content);
        claims.put(Claims.ISSUED_AT, new Date());
        Date expirationDate = new Date(System.currentTimeMillis() + expiration);

        return Jwts.builder()
                .setClaims(claims)
                .setExpiration(expirationDate)
                .signWith(SignatureAlgorithm.HS512, secret)
                .compact();
    }
}

여기서 간단명료하게 설명하자면, 일반적으로 조합 방식으로 jwt 서비스를 주입한다
JwtService jwtService= new JwtService();
String token = jwtService.generateToken(uid)

좋은 웹페이지 즐겨찾기