[WEB] 인증 방식

in·2023년 8월 25일
0

WEB

목록 보기
8/11

API Key

서비스들이 거대해짐에 따라 기능들을 분리하기 시작하였는데 이를 위해 Module이나 Application들 간의 공유와 독립성을 보장하기 위한 기능들 등장
-> 그 중 제일 먼저 등장하고 가장 보편적으로 쓰이는 기술이 API Key

동작방식

  1. 사용자는 API Key 발급
  2. 해당 API를 사용하기 위해 Key와 함꼐 요청 보냄
  3. Application은 요청이 오면 Key를 통해 User 정보를 확인하여 누구의 Key인지 권한이 무엇인지 확인
  4. 해당 Key의 인증과 인가에 따라 데이터를 사용자에게 반환

문제점

  • API Key를 사용자에게 직접 발급하고 해당 Key를 통해 통신을 하기 때문에 통신구간이 암호화가 잘 되어 있더라도 Key가 유출된 경우 대비하기 힘듦
    -> 주기적은로 Key를 업데이트를 해야하기 때문에 번거롭고 예기치 못한 상황이 발생할 수 있음
  • Key 한 가지로 정보를 제어하기 때문에 보안 문제가 발생하기 쉬운 편

OAuth2

  • 인증 및 인가를 위한 오픈 프로토콜
  • API Key의 단점을 메꾸기 위해 등장한 방식 ex) 페이스북, 트위터 등 SNS 로그인 기능
  • 요청하고 요청받는 단순한 방식이 아니라 인증하는 부분이 추가외어 독립적으로 세분화됨

동작방식

  1. app(service)가 사용자에게 인증 요청
  2. 사용자가 app(service)에게 인증정보(id/pwd) 입력
  3. app(service)는 인증 서버에 인증 정보 전달
  4. 인증 서버는 access token 부여
  5. app(service)는 리소스 서버에 access token 전달
  6. 리소스서버는 보호된 리소스를 app(service)에 전달

문제점

  • 기존 API Key 방식에 비해 더 복잡한 구조
  • 통신에 사용하는 Token은 무의미한 문자열을 가지고 기본적으로 정해진 규칙없이 발행되기 때문에 증명확인 필요

JWT

  • JSON Web Token
  • 인증 흐름의 규약이 아닌 Token 작성에 대한 규약
  • 인증 여부 확인을 위한 값, 유효성 검증을 위한 값, 인증 정보 자체를 담고 있기 때문에 인증 서버에 문지 않고도 사용 가능

문제점

  • 토큰 자체가 인증 정보를 가지고 있기 때문에 민감한 정보는 인증 서버에 다시 접속하는 과정 필요

[참고 자료]

🔗링크1

0개의 댓글

Powered by GraphCDN, the GraphQL CDN