JWT 문제 해결(2부)

쿠키보다 마카롱이 더 맛있어요 :)

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 페이지를 확인하십시오.

안녕!
다음 시간까지 계속 배워서 해피해킹 하세요 :)

Suggested posts

길을 잃은 플랫폼 TryHackMe

길을 잃은 플랫폼 TryHackMe

사실 저는 TryHackMe 플랫폼에 대해 긍정적으로 확신했습니다. CTF와 달리 콘텐츠는 영구적으로 사용할 수 있고 가격 모델이 절대적으로 합리적이기 때문입니다.

JWT 인증 및 권한 부여로 Spring Boot를 보호하는 방법

JWT 인증 및 권한 부여로 Spring Boot를 보호하는 방법

학습자 여러분 안녕하세요, Spring boot3.0과 JWT를 이용한 스프링 보안 구현에 대해 알아보겠습니다.

Related posts

예술은 비정치적인가?

예술은 비정치적인가?

어제 우리는 스웨덴 가수 Loreen이 트로피를 집으로 가져가서 ABBA가 대회에서 우승한 지 50년 만에 스웨덴의 왕관을 다시 가져가면서 두 번 우승한 최초의 여성이 되는 반짝반짝하고 혼란스러운 그랜드 피날레로 올해 유로비전 송 콘테스트의 문을 닫았습니다. "워털루"와 함께. 그들은 계속해서 팝 음악의 정경에서 가장 큰 행위 중 하나가 되었습니다.

느린 침식: 사람들이 경력을 낭비하는 방식 공개

느린 침식: 사람들이 경력을 낭비하는 방식 공개

오늘날과 같이 급변하고 경쟁이 치열한 세상에서 경력은 개인의 성장, 재정적 안정 및 전반적인 삶의 만족도에 중요한 역할을 합니다. 그러나 많은 사람들은 침체와 불만족의 끊임없는 순환에 휩싸여 직업 생활에서 점차 쇠퇴하고 있습니다.

기다림의 계절에 할 수 있는 것(기술 분야에서 첫 직장을 얻기 위해 기다림)

기다림의 계절에 할 수 있는 것(기술 분야에서 첫 직장을 얻기 위해 기다림)

새로운 직업으로 전환하는 것은 혼자서 하려고 한다면 매우 어려울 수 있습니다. 귀하와 동일한 학습 수준에 있고 유사한 목표, 끈기 및 추진력을 공유하는 책임 파트너를 찾는 것이 중요합니다.

Work Week에서의 학습은 생각보다 중요합니다.

Work Week에서의 학습은 생각보다 중요합니다.

우리는 종종 우리에게 좋다고 알고 있는 것을 구현하는 데 어려움을 겪고 있습니다. 중요한 다른 사람에게 우리가 그들을 사랑한다고 말하는 것부터 해적처럼 이야기하는 것을 기억하는 것까지, 그들이 이미 그런 일을 하고 있기 때문에 하루, 일주일 또는 한 달의 이벤트가 필요하지 않다고 주장하는 사람들이 항상 있을 것입니다.