JWT 소개: JSON 웹 토큰(JWT)은 JSON 객체 내에서 당사자 간 정보를 안전하게 전송할 수 있는 간결하고 자급자족적인 방식을 정의한 오픈 표준(RFC 7519)입니다. 이 정보는 디지털 서명을 통해 검증되고 신뢰할 수 있습니다. JWT는 비밀(HMAC 알고리즘을 사용)이나 RSA의 공개/개인 키 쌍을 사용하여 서명할 수 있습니다.
JSON 웹 토큰이 유용한 몇 가지 상황:
신원 확인:이것이 JWT를 사용하는 가장 흔한 사례입니다. 사용자가 로그인하면, 이후 요청마다 JWT가 포함되어 해당 토큰이 허용하는 경로, 서비스 및 자원에 접근할 수 있게 됩니다. 싱글 사인온은 낮은 오버헤드와 다양한 도메인 간 쉽게 사용할 수 있는 기능 덕분에 오늘날 널리 사용되는 기능입니다.
정보 교환:JSON 웹 토큰은 당사자 간 정보를 안전하게 전송하는 훌륭한 방법입니다. JWT는 서명이 가능하기 때문에, 예를 들어 공개/비공개 키 쌍을 사용하여 발신자가 주장하는 사람임을 확실히 할 수 있습니다. 또한, 서명은 헤더와 페이로드를 사용해 계산되므로 콘텐츠가 조작되지 않았는지도 확인할 수 있습니다.
공식 웹사이트:하이퍼링크 로그인이 보입니다.
JWT 정보를 온라인에서 분석하기:하이퍼링크 로그인이 보입니다.
JWT 매개변수 온라인 분석 하이퍼링크 로그인이 보입니다.
아래에서 제가 이해한 JWT는 틀렸으니, 조언을 부탁드립니다
우선, 이 도구는 MVC 웹사이트에서 사용하는 것이 권장되지 않습니다. 웹API에서 사용할 수 있습니다. 이 제품의 포지셔닝은 API이지 대체 웹사이트의 세션이 아닙니다!
asp.net 웹API 사용 튜토리얼:하이퍼링크 로그인이 보입니다.휠을 다시 만들지는 않을 거예요, 이 글이 쓰인 내용을 보면 괜찮아요.
JWT의 구성
JWT는 헤더, 페이로드, 서명 세 부분으로 구성되며, 그 사이에 점 기호가 있어 xx.yy.zz 형태를 형성합니다.
서명된 토큰의 경우, 변조 방지에도 불구하고 누구나 이 정보를 읽을 수 있다는 점에 유의하세요. 암호화되지 않은 한 JWT의 유효한 내용이나 헤더 요소에 민감한 정보를 넣지 마십시오.
예를 들어:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [서명] 쉽게 말해, 누구나 이 토큰을 복호화할 수 있지만, 정보의 진위는 검증할 수 없으며, 이 토큰을 생성한 서버만이 진위를 검증할 수 있으므로 민감한 정보를 저장하지 마세요.
여기서 문제가 있습니다. 사용자가 비밀번호를 변경하거나 로그인이 금지된다면, JWT는 어떻게 토큰의 유효성을 해결할 수 있을까요?
제 아이디어는 페이로드 섹션에 guid 같은 문자열을 추가한 뒤, 캐시에 존재하는 것입니다. 사용자 신원을 확인할 때 jwt뿐만 아니라 페이로드 정보도 검증할 수 있습니다. 캐시를 제어함으로써 유효성을 제어할 수 있습니다.
|