Loading...
본문 바로가기
👥
총 방문자
📖
0개 이상
총 포스팅
🧑
오늘 방문자 수
📅
0일째
블로그 운영

여러분의 방문을 환영해요! 🎉

다양한 개발 지식을 쉽고 재미있게 알려드리는 블로그가 될게요. 함께 성장해요! 😊

CS/컴퓨터네트워크

[Cs] Basic 인증과 Bearer 인증에 대해 알아보자

by 꽁이꽁설꽁돌 2025. 1. 20.
728x90
반응형
     

목차

     

     

     

    Base64 Encoding

    이진수(binary) 데이터를 Text로 바꾸는 인코딩의 하나로써 이진수 데이터를 ASCII(아스키코드) 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩 방식이다.

     

     

    기본 동작

    문자열 > ASCII(아스키코드) > binary전환 > 6비트씩 묶어서 8비트문자로 변환 > Base64색인표에서 찾아서 치환

     

     

    Basic 인증

    예) {authorization: 'Basic {token}'}

     

    Base64는 쉽게 복호화할 수 있다. 단순 base64 인코딩된 사용자 ID와 비밀번호를 HTTP로 전달하면 요청의 보안이 보장되지 않기 때문에 Basic 인증을 사용하는 요청은 꼭 HTTPS, SSL/TLS로 통신해야 안전하다.

     

     

    장단점

    장점 단점
    간단함: 사용자 ID와 비밀번호만으로 인증이 가능, 별도의 추가 인증 정보가 필요 없음 서버 부하: 사용자 목록을 서버에 저장해야 하므로 사용자가 많을수록 서버에 부담이 큼
    구축 용이: 구현이 간단하여 빠르게 설정 가능 확장성 부족: 많은 사용자나 리소스를 처리할 때 성능 저하가 발생할 수 있음
    쉬운 접근: 로그인 페이지 없이 간단하게 인증 권한 관리의 한계: 세세한 권한 설정이 어려워 추가 구현이 필요
    보안성: 비밀번호를 암호화하여 전달할 수 있음 구시대적: 현대의 복잡한 인증 요구 사항을 충족하기 어려움

     

     

    Bearer 인증

    Bearer 인증 방식은 OAuth 2.0 프레임워크에서 사용하는 토큰 인증 방식이다. “Bearer”은 소유자라는 뜻인데, “이 토큰의 소유자에게 권한을 부여해줘”라는 의미로 이름을 붙였다.

     예) {authorization: 'Bearer {token}'}

     

     

    Bearer 토큰

    Bearer 토큰은 OAuth 프레임워크에서 액세스 토큰으로 사용하는 토큰의 유형이다.

    토큰의 형태는 인증 서버에서 정의하기 나름으로 16진수 문자열이나 JSON Web Token(JWT)을 사용하기도 한다.

     

    OAuth 토큰이 JWT 토큰인건가요?

     

    • OAuth는 토큰의 형식에 대해 정의하지 않습니다. 대신, OAuth 프로토콜에서는 액세스 토큰갱신 토큰이라는 개념만을 사용합니다. 액세스 토큰은 서버에서 리소스에 접근하기 위한 권한을 제공하며, 갱신 토큰은 액세스 토큰을 갱신하는 데 사용됩니다.
    • OAuth에서 사용하는 액세스 토큰은 JWT일 수도 있지만, 꼭 그렇지 않으며 다른 형식을 사용할 수 있습니다.

     

    엥 그러면 JWT 토큰은 또 먼가요?

     

    • JWT는 JSON Web Token으로, 헤더(header), 페이로드(payload), 서명(signature) 3가지 부분으로 구성됩니다.
      • 헤더: 토큰 타입과 서명 알고리즘 정보를 포함합니다.
      • 페이로드: 실제 인증된 사용자 정보나 권한 등을 포함하는 부분입니다.
      • 서명: 토큰이 변조되지 않았음을 보장하는 부분입니다.
    • JWT는 이 자체적으로 사용자 정보서버 서명을 포함하기 때문에, 서버는 이 토큰만으로 인증을 처리할 수 있습니다.

     

     

     

    장단점

    구분 장점 단점
    보안 - 토큰은 쉽게 복호화할 수 없고, SSL/TLS를 필수로 사용하여 안전성을 보장함. - Bearer 토큰이 노출되면 권한이 있는 리소스에 쉽게 접근 가능.
    유효성 관리 - 토큰의 유효기간 설정으로 리소스를        안전하게 보호 가능.

    - 권한을 쉽게 철회할 수 있음
    - 노출된 토큰에 대한 빠른 대응(권한 철회 등)이 필요.
    확장성 - 서버는 토큰을 발급만 하고 보관할 필 요가 없어, 많은 사용자를 처리할 수 있    음.

    - 토큰 검증 시간은 사용자 수와 무관하게 일정함.
    - 초기 설정 및 OAuth 프레임워크의 적절한 보안 장치 구현이 중요.
    편의성 - 여러 서비스 및 서버 간 토큰 공유 가능.
    - 사용자에게 편리한 인증 경험 제공.
    - 단순히 토큰만 소지하면 인증이 완료되므로, 추가적인 인증 수단이 없으면 보안에 취약할 수 있음.
    정교한 접근 제어 - OAuth를 통해 제한적이고 정교한 리소    스 접근 설정 가능. - 리소스 접근 제어 설정이 복잡하고, 잘못 설정 시 보안 허점 발생 가능.

     

     

     

     

     

    대표적인 기업) 토스의 현재 방식

    상점 정보가 필요한 API는 Basic 인증

    결제, 결제 취소, 현금영수증 발급 등 상점에서 자주 사용하는 코어 API는 Basic 인증 방식을 사용한다. “Basic 인증 방식을 사용하면 결제 정보가 위험한 거 아닌가”라고 생각할 수 있지만 토스페이먼츠는 HTTPS/SSL 통신을 강제하고 있어서 안전하다.

    토스페이먼츠는 시크릿 키를 사용자 ID로 사용하고 비밀번호는 없다. {SECRET_KEY}:문자열을 base64 인코딩해서 API 인증 헤더에 사용하면 된다.

     

     

    결제 고객을 특정해야 하는 API는 Bearer 인증

    보통 토스페이먼츠는 결제 고객의 정보를 저장하지 않지만 브랜드페이를 사용하는 결제 고객의 정보는 저장한다. 브랜드페이는 상점에서 자체 간편결제 시스템을 구축하는 서비스이다. 그래서 브랜드페이에 가입한 고객, 고객이 등록한 결제 수단 등 민감한 고객 정보를 서버에 저장한다.

    상점이 브랜드페이 고객 정보를 접근하려면 Bearer 유형의 액세스 토큰을 토스페이먼츠에서 발급받는다. 브랜드페이 서비스 자체가 OAuth 프레임워크를 사용하고, 더 안전하게 고객 정보를 보관하기 위해서 Bearer 인증 방식을 사용했다.

    반응형