인증, 인가

SexyWoong·2023년 11월 7일

Web

목록 보기
1/5

인증(Authentication) : 로그인이라고 생각하면 된다. 이 사이트의 회원임을 아이디와 패스워드를 통해서 인증받는것 즉, 사용자의 신원을 확인하는 절차

인가(Authorization) : 인증 후 권한을 주는 것 즉, 사용자의 권한을 확인하고 허가하는 절차

  • 인가는 인증 절차를 거친 후에 진행된다.

쿠키

  1. 브라우저에 저장되는 키와 값이 들어있는 데이터 파일
  2. 클라이언트의 상태 정보를 저장
  3. 사용자가 따로 요청하지 않아도 Request시 Header에 담겨 서버에 전송

세션

  1. 서버측에서 관리
  2. 클라이언트를 구분하기 위해 세션 ID 부여
  3. 세션 ID를 통해 클라이언트 식별

JWT (Json Web Token)

  • Json 포멧을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token

특징

  • 서버 기반 인증 시스템과 달리 상태를 유지하지 않는다.
  • DB를 조회하지 않고 인증된 회원인지 식별할 수 있다.

단점

  • 쿠키, 세션과는 다르게 토큰 자체의 데이터 길이가 길다.
  • payload는 암호화 되지 않기 때문에 유저의 중요한 정보를 담을 수 없다.
  • 토큰을 탈취 당하면 대처하기 어렵다.

OAuth (인가)

웹, 모바일, 데스크톱 어플리케이션에서의 간단하고 표준적인 방법으로 보안 인가를 허용하기 위한 개방형 표준 프로토콜

사용자, 후디닷컴, 구글을 OAuth에서 부르는 용어가 존재한다.

  • 사용자 : Resource Owner
    • 리소스를 소유하며 접근할 권한을 가지고 있고, 클라이언트에게 그 권한을 위임하는 주체
  • 후디닷컴 : Client
    • 리소스 소유자 대신 위임 받은 권한으로 리소스를 요청하는 주체
  • 구글 : Authorization Server, Resource Server
    • Authorization Server : 리소스 소유자를 인증하고 클라이언트에 액세스 토큰을 발급하는 서버
    • Resource Server : 액세스 토큰을 사용하여 리소스 요청을 수락하고 응답할 수 있는 리소스를 가지고 있는 서버

  • Scope : 클라이언트에게 허용된 리소스 접근 범위 (e.g 카카오톡 이름, 프로필 사진)

OpenID (인증)

  • 비영리기관인 OpenID Foundation에서 추진하는 개방형 표준 및 분산 인증 프로토콜
  • OpenId Connect 1.0은 OAuth 2.0 프로토콜 위에 있는 간단한 ID 계층이다. 이를 통해 클라이언트는 REST와 유사한 방식으로 최종 사용자의 신원과 기본적인 프로필 정보를 얻을 수 있다.
  • 신뢰할 수 있는 서비스(구글, 페이스북, 트위터 등)에 사용자 인증 절차를 위임
  • 사용자는 자신이 신뢰할 수 있는 서비스의 인증 정보 하나로 여러 서비스에서 인증
    • 서비스마다 ID와 PW를 일일히 외우고 있지 않아도 된다.

  • IdP(Identity Provider): 구글 카카오와 같이 OpenID 서비스를 제공하는 당사자
  • RP(Relying Party): 사용자를 인증하기 위해 IdP에 의존하는 주체

OAuth 2.0과 OpenID Connect의 목적 차이

  • OAuth 2.0 목적 : Access Token을 발급받고 Access Token을 통해 리소스에 접근
  • OpenID Connect 목적 : ID Token을 발급받고 ID Token을 통해 사용자 식별정보를 얻는다.

ID Token

  • 사용자 식별 정보를 담고 있는 토큰
  • JWT 형식으로 표현

OpenID를 통해서 사용자 정보를 가져오는 이유

  • OAuth 2.0은 사용자에 대한 정보를 명시적으로 제공하지 않는다.

출처

profile
함께 있고 싶은 사람, 함께 일하고 싶은 개발자

0개의 댓글