JWT Util

Crow·2022년 8월 2일
1

Security

목록 보기
4/7

2022-08-02 jwt 비밀키 정책 고민

1. 암호화 복호화시 비밀키를 생성한다 그리고 db에 저장해둔다?/// 보안적으로 너무 문제가 큰거같음 그렇다고 암호화만 해두고 복호화키를 버려야하는 방식이 맞는진 모르겠음

2. refresh token을 활용해서 계속 갱신해준다?

이거도 나쁘지 않아보임 요즘 트랜드에 맞는거 같음

3. 키를 어떤방식으로 랜덤으로 줄것인지

예전에 알고있던 nextint()방식으로 사용하면 256개의 알고리즘 키를 채우기 위해서 너무 많은 자원이 들어가는거 같음

4. jdk 17 버전 Random 표현

RandomGenerator를 사용해서 범위부터 지정한후 사용할수있음
여기서 SecureRandom으로 변형하는 방법을 찾아도 모르겠음 x오x

/// 범위 지정후 key에 bytes 입력해줌
공식 도큐먼트에서 긁어온거라서 맞는진 잘 모르겠음..

RandomGenerator gen = RandomGenerator.of("L128X256MixRandom");
 private Key rkey = Keys.hmacShaKeyFor(nextBytes(b));
 
  public byte[] nextBytes(byte[] bytes) {
        for (int i = 0; i < bytes.length; )
            for (int rnd = gen.nextInt(), n = Math.min(bytes.length - i, 4);
                 n-- > 0; rnd >>= 8)
                bytes[i++] = (byte) rnd;

        return bytes;
    }

라고 열심히 조사했지만

private Key rkey = Keys.secretKeyFor(SignatureAlgorithm.HS256);

이거 한줄이면 랜덤으로 알고리즘만 설정해주면 공개키를 암호화해서 잡아주는거였음
X오X

하나의 서버를 사용하면 이 공개키를 잠구는 방식이 좋지만
여러개의 컨테이너 단위로 사용하면 외부에서 주입이 가장 좋다
내일은 외부 주입을 이용해서 짜보겠음
그렇지만 spring di를 타면 상관없지만 이런 외부 주입키는 별도로 해줘야함

따라서 어떤식으로 서버를 설계한지 고려해서 외부주입을 사용할지 공개키를 잠구는 방식을 사용할지 모르니 둘다 알아두는게 좋아보임

profile
어제보다 개발 더 잘하기 / 많이 듣고 핵심만 정리해서 말하기 / 도망가지 말기 / 깃허브 위키 내용 가져오기

0개의 댓글