인증 & 인가

정승옥(seungok)·2021년 3월 9일
0

세션 정리

목록 보기
3/5
post-thumbnail

1. 인증 (Authentication)

  • 사용자의 신원을 확인하는 과정이다.
  • 신원은 보통 아이디와 비밀번호로를 말한다.

1-2. 로그인 절차

  • 유저의 아이디와 비밀번호를 생성한다.
  • 유저의 비밀번호를 암호화해서 DB에 저장한다.
  • 유저가 로그인할 때 입력한 비밀번호를 암호화 후 DB에 저장된 비밀번호와 비교한다.
  • 로그인 성공하면 access token 을 클라이언트에 전송한다.
  • 로그인 성공 이후부터는 access token 을 첨부해 request 를 서버에 전송함으로서 매번 로그인하지 않아도 된다.

1-3. 비밀번호 암호화

  • 사용자의 비밀번호는 절대 그대로 DB에 저장하지 않는다
    🤜 DB가 해킹 당하면 비밀번호가 그대로 노출되기 때문에
    🤜 내부 개발자나 인력이 비밀번호를 볼 수 있기 때문에
  • 사용자의 비밀번호는 암호화해서 저장한다.
  • 비밀번호 암호에는 단방향 해쉬 함수 가 일반적으로 쓰인다.
  • 단방향 해쉬 함수 는 원본 메시지를 암호화다이제스트(digest) 를 생성한다.
  • 원본 메시지를 알면 암호화된 메시지를 쉽게 알 수 있지만 암호화된 메시지로는 원본 메시지를 알 수 없기에 단방향성 이라고 한다.

1-4. Bcrypt

  • 단방향 해쉬 함수의 취약점
    🤜 해쉬 값을 미리 계산한 테이블인 Rainbow table 을 사용해 비밀번호를 추측할 수 있다.

  • 단방향 해쉬 함수의 보완점

    🤜 Salting : 실제 비밀번호 이외에 추가적으로 랜덤 데이터를 더해서 해쉬값을 계산한다. 🤜 key Stretching : 단방향 해쉬값을 해쉬하는 과정을 반복하는 것을 말한다.

  • BcryptSaltingkey Sretching 을 구현한 해쉬 함수로 가장 많이 사용된다.

1-5. JWT (JSON Web Token)

  • 로그인에 성공하면 access token 이라는 암호화된 사용자 정보를 첨부해 request 를 보낸다.
  • 서버에서는 access token복호화해서 해당 유저의 정보를 얻는다.
  • JWT 는 이러한 access token 을 생성하는 기술로 사용자의 정보를 담은 JSON 데이터암호화해서 클라이언트와 서버간에 주고 받는 것이다.

2. 인가 (Authorization)

  • request 를 실행할 수 있는 권한이 있는 사용자인지 확인하는 절차이다.
  • JWT 를 통해 구현될 수 있다.

2-1. 인가 절차

  • 인가 절차를 통해 access token 을 생성한다.
  • 사용자가 request 를 보낼 때 access token 을 첨부해서 보낸다.
  • 서버에서는 access token복호화한다.
  • 복호화된 데이터를 통해 user_id 를 얻어 DB 에서 권한을 확인한다.
  • 권한이 있으면 request 를 처리하고 없으면 401 또는 에러코드를 보낸다.
profile
Front-End Developer 😁

0개의 댓글