Bearer 토큰이란 무엇이며 어떻게 작동할까
전달자 토큰은 각 요청에 대한 암호화 서명이 필요하지 않으므로 API 요청을 만드는 훨씬 간단한 방법입니다. 절충점은 요청에 가로채는 경우 누구나 사용할 수 있는 일반 텍스트 토큰이 포함되어 있기 때문에 모든 API 요청은 HTTPS 연결을 통해 이루어져야 한다는 것입니다.
Bearer 인증이란?
무기명 인증(토큰 인증이라고도 함)은 전달자 토큰이라는 보안 토큰 을 포함하는 HTTP 인증 체계입니다 . "Bearer 인증"이라는 이름은 "이 토큰의 Bearer에게 액세스 권한을 부여합니다."로 이해할 수 있습니다. 전달자 토큰은 일반적으로 로그인 요청에 대한 응답으로 서버에서 생성되는 암호 문자열입니다. 클라이언트는 보호된 리소스에 요청할 때 Authorization 헤더에서 이 토큰을 보내야 합니다.
Authorization: Bearer
Bearer 인증 체계는 원래 RFC 6750에서 OAuth 2.0의 일부로 생성되었지만 때때로 자체적으로 사용되기도 합니다. 기본 인증과 마찬가지로 Bearer 인증은 HTTPS(SSL)를 통해서만 사용해야 합니다.
Bearer 토큰이란?
무기명 토큰은 OAuth 2.0과 함께 사용되는 주요 액세스 토큰 유형입니다. 전달자 토큰은 불투명한 문자열이며 이를 사용하는 클라이언트에게 의미가 없습니다. 일부 서버는 짧은 16진수 문자열인 토큰을 발행하는 반면, 다른 서버는 JSON 웹 토큰과 같은 구조화된 토큰을 사용할 수 있습니다.
무기명 토큰의 용도는?
무기명 토큰 을 소유한 모든 당사자("소유자")가 해당 토큰을 소유한 다른 당사자가 할 수 있는 방식으로 토큰을 사용할 수 있는 속성이 있는 보안 토큰입니다. 무기명 토큰을 사용하는 것은 무기명에게 암호화 키 자료(소유 증명)의 소유를 증명할 필요가 없습니다.
액세스 토큰은 애플리케이션이 API에 액세스할 수 있도록 토큰 기반 인증에 사용됩니다. 예를 들어 캘린더 애플리케이션은 사용자의 예약된 이벤트를 읽고 새 이벤트를 생성할 수 있도록 클라우드의 캘린더 API에 액세스해야 합니다.
애플리케이션이 액세스 토큰을 받으면 API 요청 시 해당 토큰을 자격 증명으로 포함합니다. 그렇게 하려면 HTTP Authorization 헤더의 Bearer 자격 증명으로 액세스 토큰을 API에 전송해야 합니다.
무기명 토큰은 어떻게 작동할까?
Bearer 토큰은 인증 서버에 의해 생성됩니다. 사용자가 애플리케이션(클라이언트)을 인증하면 인증 서버가 이동하여 토큰을 생성합니다. 무기명 토큰은 OAuth 2.0과 함께 사용되는 주요 액세스 토큰 유형입니다. Bearer 토큰은 기본적으로 "이 토큰의 보유자에게 액세스 권한을 부여하십시오"라고 말합니다.
Bearer Token은 일반적으로 인증 서버에서 생성한 일종의 불투명한 값입니다. 무작위가 아닙니다. 액세스 권한을 부여하는 사용자와 애플리케이션에 액세스 권한을 부여하는 클라이언트를 기반으로 생성됩니다.
예를 들어 API에 액세스하려면 액세스 토큰을 사용해야 합니다. 액세스 토큰은 수명이 짧습니다(약 1시간). 무기명 토큰을 사용하여 새 액세스 토큰을 얻습니다. 액세스 토큰을 얻으려면 클라이언트 ID와 함께 이 전달자 토큰을 인증 서버에 보냅니다. 이 방법으로 서버는 전달자 토큰을 사용하는 애플리케이션이 전달자 토큰이 생성된 것과 동일한 애플리케이션임을 알게 됩니다. 예: 귀하의 애플리케이션에 대해 생성된 전달자 토큰을 가져와서 내 애플리케이션과 함께 사용할 수는 없습니다.
OAuth 1.0
OAuth 1에는 액세스 토큰에 대한 두 가지 구성 요소인 공개 및 비공개 문자열이 있습니다. 개인 문자열은 요청에 서명할 때 사용되며 유선으로 전송되지 않습니다.
OAuth 2.0
OAuth 2.0 API에 액세스하는 가장 일반적인 방법은 "Bearer Token"을 사용하는 것입니다. 이것은 HTTP "Authorization" 헤더로 전송되는 API 요청의 인증 역할을 하는 단일 문자열입니다. 문자열은 그것을 사용하는 클라이언트에게 의미가 없으며 길이가 다양할 수 있습니다.
Bearer 토큰의 장점
장점은 요청을 하기 위해 복잡한 라이브러리가 필요하지 않으며 클라이언트와 서버 모두 구현하기가 훨씬 간단하다는 것입니다.
Bearer 토큰의 단점
Bearer 토큰의 단점은 액세스할 수 있는 경우 다른 앱이 Bearer 토큰을 사용하는 것을 방해하는 것이 없다는 것입니다. 대부분의 공급자가 어쨌든 Bearer 토큰만 사용하지만 이것은 OAuth 2.0에 대한 일반적인 비판입니다. 정상적인 상황에서 응용 프로그램이 제어 하에 액세스 토큰을 적절하게 보호하면 기술적으로 덜 안전하지만 문제가 되지 않습니다. 서비스에 보다 안전한 접근 방식이 필요한 경우 보안 요구 사항을 충족할 수 있는 다른 액세스 토큰 유형을 사용할 수 있습니다.
구글 참조
Basic vs Bearer
Basic authentication 은 base64를 사용하여 인코딩된 사용자 ID/암호 쌍으로 자격 증명을 전송합니다. 클라이언트는 Basic 단어 뒤에 공백과 base64로 인코딩된 문자열 username:password가 포함된 Authorization 헤더와 함께 HTTP 요청을 보냅니다.
Authorization: Basic ZGVtbzpwQDU1dzByZA==
참고: 기본 인증의 경우 사용자 ID와 비밀번호가 일반 텍스트(base64로 인코딩되지만 base64는 가역 인코딩임)로 네트워크를 통해 전달되기 때문에 기본 인증 체계는 안전하지 않습니다. HTTPS/TLS는 기본 인증과 함께 사용해야 합니다.
Bearer authentication (토큰 인증이라고도 함)에는 무기명 토큰이라는 보안 토큰이 있습니다. "베어러 인증"이라는 이름은 "이 토큰의 베어러에게 액세스 권한을 부여합니다."로 이해할 수 있습니다. 전달자 토큰은 일반적으로 로그인 요청에 대한 응답으로 서버에서 생성되는 암호 문자열입니다. 클라이언트는 보호된 리소스에 요청할 때 Authorization 헤더에서 이 토큰을 보내야 합니다.
Authorization: Bearer < token >
참고: 기본 인증과 마찬가지로 Bearer 인증은 HTTPS(SSL)를 통해서만 사용해야 합니다.