인증 & 인가

백승찬·2020년 11월 10일
0

django

목록 보기
6/11

인증 (Authentication)

  • 누가 서비스를 사용하는지를 확인하는 절차

웹사이트에 사용자 아이디와 비밀 번호를 넣어서, 사용자를 확인하는 과정

  • API도 마찬가지로 API를 호출하는 대상을 확인하는 정차가 필요 => API 인증

인가 (Authorization)

  • 해당 리소스에 대해서, 그 리소스를 사용할 권한이 있는 지 체크하는 권한 체크 과정

/user라는 리소스가 있을 때, 일반 사용자 권한으로는 내사용자 정보만 볼 수 있지만, 관리자 권한으로는 다른 사용자 정보를 볼 수 있는 것과 같은 권한 차이

네트워크 레벨 암호화

  • 인증과 인가 과정이 끝나서 API를 호출하게 되면,네트워크를 통해서 데이털가 왔다갔다 하는데, 해커등이 중간에 이 네트워크 통신을 낚아 채서(감청) 데이터를 볼 수 없게 할 필요가 있음

네트워크 프로토콜단에서 처리하는 것을 네트워크 레벨의 암호화
EX) HTTP에서의 네트워크 레벨 암호화는 일반적으로 HTTPS 기반의 보안 프로토콜을 사용

메시지 무결성 보장

  • 메시지가 중간에 해커와 같은 외부 요인에 의해서 변조가 되지 않게 방지하는 것

  • 무결성을 보장하기 위해서 많이 사용하는 방식은 메시지에 대한 Signature를 생성
    메시지와 같이 보낸 후에 검증하는 방식

EX) 메시지 문자열이 있을 때, 이 문자열에 대한 해쉬코드를 생성해서, 문자열과 함께 보낸 후 수신 쪽에서 받은 문자열과 이 받은 문자열로 생성한 해쉬코드를 문자열과 함께 온 해쉬코드와 비교하는 방법

API Key 방식

  • 특정 사용자만 알 수 있는 일종의 문자열

API를 사용하고자 할 때, 개발자는 API 제공사의 포탈 페이 등에서 API Key를 발급 받고, API를 호출할 때 API Key를 메시지 안에 넣어 호출

  • 서버는 메시지 안에서 API Key를 읽어 이 API가 누가 호출한 API인지를 인증하는 흐름

0개의 댓글