TIL 1 | JWT, api, spring 실습 중 알게된 것

Seon Kang choi·2021년 9월 20일
0
post-thumbnail

1. JWT

기존 로그인은 쿠키/세션을 이용하는 경우가 많았다.
하지만 IT 인프라 구성에 많은 변화가 생겨 쿠키/세션 기반 인증 아키텍쳐는 현재 요구사항을 만족하지 못하고 있다.
우선 쿠키는 정보를 클라이언트에 저장하고, 세션은 정보를 서버에 저장한다. 이때 보안에 취약한 쿠키 대신 세션을 사용하는데 세션을 사용하는데 있어 하나의 서버가 아닌 많은 서버를 운영하는 데 있더 정보의 동기화 문제가 발생한다. 세션을 각 서버에 저장하지 않고 세션 전용 서버, DB에 저장 한다 해도 모든 요청 시 DB에 부하가 발생 할 수 있다.
그래서 나온 기술이 JWT(JSON Web Token) 기술이다.
JWT는 필요한 모든 정보를 자체적으로 가지고 있습니다. 토큰에 대한 기본 정보, 전달 할 정보, 그리고 토큰이 검증됐다는 signature를 포함합니다.

JWT 단점

  • 토큰 자체에 정보가 있다는 사실은 양날의 검이 됩니다.
  • 토큰에 정보를 저장하기 때문에 정보가 많아지면 토큰의 길이가 길어져 네트워크에 부하를 줍니다.
  • Stateless에서는 불편할 수 있다. 한 번 만들어진 토큰은 서버에서 제어가 불가능하다. 토큰을 삭제할 수 있는 방법이 없기 때문에 만료시간을 꼭 넣어준다.

api

api(Application Programming Interface) 응용 프로글맹에서 사용할 수 있다록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.
쉽게 말해 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있습니다.

api 역할

  • 서버와 데이터베이스에 대한 출입구 역할
    데이터베이스에는 소중한 정보들이 들어 있습니다. 모든 사람들이 접근할 수 있으면 안되기에 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근을 부여합니다.

  • 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.
    스마트폰 어플이나 프로그램과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 한다.

  • 모든 접속을 표준화한다.
    기계/운영체제 등과 상관없이 누구나 동일한 엑세스를 얻을 수 있다.

@RestController과 Setter

간단한 json 호출을 실습하던 중 localhost에서 값이 안나오는 에러가 발생 하였다.

public class Person {
	private String name;
    private int age;
    private String address;
    
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

@RestController
public class PersonController {

    @GetMapping("/myinfo")
    public Person getPerson() {
        Person person = new Person();
        person.setName("홍길동");
        person.setAge(25);
        person.setAddress("서울시 강남구");
        return person;
    }
}

이 때 나온 에러는

과연 무엇이 잘 못된 건지 알아보던중 getter가 없어 에러가 나는 상황을 발견하였다.
@RestController은 입력받은 데이터를 출력하는데 있어 getter를 통해 데이터들을 가져 옵니다. 따라서 setter나 생성자를 통해 입력받고 getter가 꼭 있어야 정상 실행됩니다.

원인은 찾았지만 아직 스프링에 대한 지식이 부족해 구성과 동작순서에 대한 지식은 부족하지만 하나씩 알아 가고 있는 중입니다.

참조
https://sanghaklee.tistory.com/47
https://brunch.co.kr/@operator/65

profile
유쾌한 개발 생활~

0개의 댓글