스택큐힙리스트

JSON 웹 토큰 무효화 본문

카테고리 없음

JSON 웹 토큰 무효화

스택큐힙리스트 2023. 11. 28. 06:57
반응형

그러니까, 다음과 같은 것이 있다고 가정해봅시다 (이것은 여기여기에서 적용한 것입니다):


세션 저장소 로그인:


app.get('/login', function(request, response) {
var user = {username: request.body.username, password: request.body.password };
// 어떤 방식으로 유효성을 검사합니다
validate(user, function(isValid, profile) {
// 세션 토큰 생성
var token= createSessionToken();
// 키-값 데이터베이스에 추가
KeyValueStore.add({token: {userid: profile.id, expiresInMinutes: 60}});
// 클라이언트는 이 세션 토큰을 쿠키에 저장해야 합니다
response.json({sessionToken: token});
});
}

토큰 기반 로그인:

var jwt = require('jsonwebtoken');
app.get('/login', function (request, response) {
var user = {username: request.body.username, password: request.body.password };
// 어떤 방법으로 검증
validate(user, function (isValid, profile) {
var token = jwt.sign(profile, '나의 슈퍼비밀', {expiresInMinutes: 60});
response.json({token: token});
});
}

--


세션 저장소 방식의 로그아웃(또는 무효화)은 지정된 토큰을 사용하여 KeyValueStore 데이터베이스를 업데이트해야합니다.


토큰 기반 접근 방식에서는 보통 키-값 저장소에 있는 정보와 같은 정보를 토큰 자체에 포함하기 때문에 이러한 메커니즘이 존재하지 않을 것으로 보입니다.

답변 1

토큰 만료 시간을 충분히 짧은 간격으로 유지하고 실행 중인 클라이언트가 필요한 경우 업데이트를 요청하여 번호 1은 사실상 완전한 로그아웃 시스템으로 작동합니다. 이 방법의 문제는 클라이언트 코드가 닫히는 것에 따라 (만료 간격의 길이에 따라) 사용자를 로그인 상태로 유지하는 것이 불가능하다는 것입니다.


대비책


긴급 상황이 발생하거나 사용자 토큰이 노출된 경우, 사용자가 로그인 자격증명으로 기본 사용자 조회 ID를 변경할 수 있도록 허용할 수 있습니다. 이렇게하면 모든 관련된 토큰이 무효화되며 관련된 사용자를 더 이상 찾을 수 없습니다.


또한 토큰과 함께 마지막 로그인 날짜를 포함하는 것이 좋은 생각이며, 일정 기간이 지난 후에 다시 로그인을 강제로 실행할 수 있도록 할 수 있습니다.

토큰을 사용한 공격과 관련하여 유사성/차이점 측면에서, 이 게시물은 다음의 질문에 대해 다루고 있습니다: https://github.com/dentarg/auth0-blog/blob/master/_posts/2014-01-07-angularjs-authentication-with-cookies-vs-token.markdown

답변 2

JSON 웹 토큰의 무효화
JSON 웹 토큰 (JWT)은 정보 교환 및 인증을 위해 사용되는 액세스 토큰입니다. 하지만 때로는 JWT가 무효화되어야 할 수도 있습니다. 이 글에서는 JWT의 무효화에 대해 알아보고자 합니다.
JWT는 올바른 서명과 올바른 정보를 갖춘 페이로드로 구성되어 있습니다. 페이로드는 사용자의 고유한 클레임 (claim) 정보를 포함하고 있으며, 서버가 해당 클레임을 사용하여 사용자에 대한 인증 및 권한 부여를 수행합니다. 그러나 이러한 JWT가 필요하지 않거나 더 이상 유효하지 않을 때, 즉시 무효화해야 할 수도 있습니다.
JWT의 무효화는 여러 가지 이유로 발생할 수 있습니다. 예를 들어, 사용자가 로그아웃한 경우 해당 JWT는 즉시 무효화되어야 합니다. 또한 사용자의 계정이 해킹되었거나 보안 위험에 노출된 경우에도 해당 JWT를 무효화하고 사용자에 대한 새로운 인증 절차를 진행해야 합니다.
JWT의 무효화 방법에는 여러 가지가 있습니다. 가장 일반적인 방법은 블랙리스트를 사용하는 것입니다. 서버는 JWT를 생성할 때 해당 토큰의 고유 식별자를 추적하여 블랙리스트에 추가합니다. 그러면 블랙리스트에 있는 토큰은 더 이상 유효하지 않은 것으로 처리됩니다. 다른 방법으로는 JWT의 만료 시간을 짧게 설정하여 토큰이 자동으로 무효화되도록 하는 것이 있습니다.
이렇게 JWT를 무효화함으로써 애플리케이션의 보안 수준을 향상시킬 수 있습니다. JWT가 적절하게 무효화되지 않으면 제3자가 해당 토큰을 이용하여 위조된 요청을 보낼 수 있으므로, 무효화는 매우 중요합니다.
JSON 웹 토큰의 무효화는 애플리케이션의 보안을 강화하는 중요한 단계입니다. 해당 토큰을 적절하게 관리하고, 필요한 시점에 무효화함으로써 애플리케이션 사용자들의 안전을 보장할 수 있습니다. 따라서 JWT의 무효화 기능은 애플리케이션 개발 및 보안 전략 수립 시 고려해야 할 중요한 사항입니다.
위 문장은 JSON 웹 토큰의 무효화에 대한 SEO-conscious한 한국어 글입니다. 웹 토큰, 무효화, 클레임, 블랙리스트 등 키워드를 적절히 사용하며, 목적어를 포함하여 한국어 독자에게 적절한 정보를 제공하는 글입니다.

반응형
Comments