쿠키보다 마카롱이 더 맛있어요 :)
JWT 토큰 관련 문제에 대한 이전 게시물 중 하나에서 여기에서 찾을 수 있는 한 가지 긴급한 문제에 대해 이야기했습니다.
JWT의 풀리지 않는 문제 이야기! (2 부)
간결함을 위해 문제 요약: JWT 토큰을 다른 서비스나 엔터티와 공유할 때 그 힘을 줄일 수 없습니다. 예를 들어 Google API를 사용하고 App Script 가 이메일을 읽고 일부 정보만 추출하기를 원하지만 App Script가 이메일을 보내거나 문서를 읽거나 공유하는 것과 같은 다른 작업은 하지 않기를 원한다고 가정해 보겠습니다. 다른 사람들과. 충분히 정당합니다! 그러나 JWT 토큰(또는 OAuth 토큰)을 App Scripts와 공유하는 것을 생각한다면 결국 그들에게 당신이 가진 모든 권한을 부여하게 될 것입니다! 그리고 우리는 그 권리를 원하지 않습니다 ...
따라서 질문은 — 처음에 이 문제를 어떻게 피할 수 있습니까?
"감쇠" 효과가 있는 체계를 사용하여 권한을 어떻게 위임합니까?
잠시 생각해 보세요... JWT 토큰을 수정할 수 있는 방법을 생각해낼 수 있습니까? 또는 이를 위해 다른 구성이 필요합니까?
마카롱이 필요합니다!
대답은 다음과 같습니다. 아니요, 이 작업과 같이 JWT를 수정할 수 없습니다. JWT 토큰은 권한 부여를 주장하지만 여러 당사자가 관련된 경우 위의 예에서 보았듯이 JWT가 적합하지 않습니다!
그럼 우리는 무엇을 할까요?
마카롱! 예, 농담이 아닙니다. 우리는 마카롱을 사용할 것입니다. 그들은 맛있고 일을합니다 ...
Unsplash의 Mockaroon에서
마카롱은 위임 과 감쇠 를 제공하는 구조입니다 . 사실이라고 하기에는 너무 좋은 것 같나요? 더 좋아집니다: 마카롱을 사용하면 "제3자" 조건도 표현할 수 있습니다!
그렇다면 이 맛있는 것은 무엇이고 어떻게 내 문제를 해결할 수 있을까요?
마카롱은 위임되는 토큰의 HMAC를 사용하고 토큰이 만드는 주장 인 경고 를 사용 합니다(JWT 주장처럼 생각하세요).
따라서 아이디어는 다음과 같습니다.
서버는 소유한 키로 서명하여 마카롱을 보냅니다. 마카롱의 HMAC(서명 키 사용)가 추가되어 무결성을 강화합니다!
이제 App Script에 권한을 위임하고 싶다고 가정해 보겠습니다. 다른 어설션을 추가하는 것입니다. 즉, 가지고 있는 마카롱에 다른 경고 를 추가 하고 기존 마카롱의 HMAC 값을 사용하여 서명하는 것입니다.
이런 식으로 (어설션 역할을 하는) 경고 와 함께 신뢰 체인을 구축할 수 있습니다 .
이제 서버가 지정된 사용자에게 작업이 허용되는지 확인할 때 마카롱 주의 사항에 서명하고 마지막 수준에 도달하여 마카롱을 확인하고 모두 올바른지 확인합니다. 모든 것이 좋다면 서비스에 액세스하는 데 필요한 권한이 모든 주의 사항에 대해 확인됩니다. 모든 것이 순조롭게 진행되면 사용자 또는 엔터티가 작업을 수행할 수 있는 액세스 권한을 얻습니다!
아름답지 않나요? :)
결론
JWT의 이 문제는 전혀 해결할 수 없습니다! 따라서 우리는 이 문제를 해결하기 위해 다른 구성이 필요하고 마카롱이 바로 이 문제를 해결하는 방법을 보았습니다!
이 게시물이 흥미로운 것을 배우는 데 도움이 되었기를 바랍니다. 나에게 이런 것이 있다는 것을 아는 것은 굉장한 계시였습니다! 개인적으로 너무 좋았어요 :)
마카롱에 대한 향후 게시물을 작성하고 더 자세히 설명하고 샘플 코드와 함께 몇 가지 예를 보여드릴 수 있습니다. 흥미롭게 들립니까? 해당 포스팅을 보고싶으시다면 말씀해주세요 :)
이 게시물을 즐겼습니까? 아래 댓글에 여러분의 생각을 알려주세요 :)
내 일을 즐기고 있고 나를 지원하고 싶다면 내 Patreon 페이지를 확인하십시오.
안녕!
다음 시간까지 계속 배워서 해피해킹 하세요 :)