🅱️배경
웹 서비스를 개발하다 보면 인증과 인가를 다루게 됩니다. 그때 다양한 방법 중 HTTP Request Header에 Authorization에 Bearer Token을 담아서 보내는 방법이 있습니다.
실제로 구현을 하면,
const token = getToken();
// HTTP Header Authorization 옵션 추가
Authorization: `Bearer ${token}`;
위 코드처럼 단순하게 Bearere 문자열로 추가하면 문제없이 동작됩니다.
token 앞에 Bearer 하나를 추가해서 뭐가 달라지나? 하는 궁금증이 생겨 찾아봤습니다.
🅰️그렇구먼
Bearer Token의 경우 OAuth에서 Access Token을 담아서 보내는 걸로 사용되는 것이라고 합니다. 이렇게만 말하면 뭐지?라는 의문이 들 수 있습니다.
더 쉬운 이해를 위해 Basic Token과 비교해 보겠습니다.
Basic Token의 경우 기본적인 인증 방식으로 base64로 인코딩해서 Basic 문자열을 추가해서 헤더에 입력해서 사용합니다. 토큰에는 사용자 ID와 비밀번호 즉, 사용자 정보가 담겨있습니다.
const token = base64('string');
Authorization: `Basic ${token}`;
하지만 base64 인코딩의 경우 디코딩가 굉장히 쉽기 때문에 HTTPS 또는 SSL/TLS로 통신을 해야 안전합니다.
Bearer Token은 Basic Token과 달리 복잡한 인코딩을 통해 클라이언트 측에서 쉽게 디코딩을 할 수 없는 토큰을 사용합니다. 사용자의 정보를 담지 않고 서버에서 사용자임을 확인할 수 있는 메타데이터가 담겨있습니다. 또한 권한을 자세하게 설정하고 유효기간이나 MFA 등 추가적인 작업도 진행할 수 있습니다.
🍯tip! 토큰으로 JWT를 사용하기도 합니다.
🤔
Q. Bearer Token에는 메타 데이터가 담겨 있다고 하는데 사용자 정보가 없다는 말은 무엇인가?
A. Basic Token에 담겨있는 사용자 ID나 비밀번호를 Bearer Token에서는 사용하지 않는다는 의미인 듯하다.
참고
Basic 인증과 Bearer 인증의 모든 것, 토스페이먼츠, 2024.09.03
Understanding Bearer Tokens: Usages, Examples, and Differences from API keys, Akhil Mottammal, 2024.09.03
'개발' 카테고리의 다른 글
[취업] JS 기본 지식 (0) | 2024.09.12 |
---|---|
[CSS] Tailwind 후기 (0) | 2024.09.03 |
[Vercel] 배포해보기 (0) | 2024.08.30 |
[Git 꿀팁] 브랜치를 잠깐 바꾸고 싶은데 커밋은 애매해? stash 활용! (0) | 2024.08.21 |
도커란 무엇인가? (0) | 2024.07.29 |