Welcome to Our Website

JSON Web Token(JWT)설명

JSON Web Token 은 응용 프로그램의 액세스 토큰을 만드는 데 사용되는 표준입니다.

이 방법으로 작동합니다:서버는 사용자 id 를 인증하는 토큰을 생성하여 클라이언트로 보냅니다.

클라이언트가 보내는 토큰으로 다시 서버를 위해 이후의 모든 요청도 서버에서 요청이 오는 특정 정체성입니다.

이 아키텍처는 사용자가 인증 된 후 REST 또는 GraphQL API 에 대한 API 요청을 수행하는 최신 웹 앱에서 매우 효과적이라는 것을 증명합니다.

누가 JWT 를 사용합니까?, 예를 들어 구글. Google Api 를 사용하는 경우 JWT 를 사용합니다.

JWT 는 암호화 방식으로 서명(지만 암호화되지 않고,따라서 HTTPS 를 사용하는 것이 필수할 때 사용자 데이터 저장에 JWT),도록 보장이있다 우리는 그것을 믿을 수 있습니면 우리는 그것을 받으로 중개인을 가로챌 수 있고 수정하거나,데이터 보유하고,무효화하지 않습니다.

즉,JWTs 는 종종 과용에 대해 비판을받으며,특히 덜 문제가되는 솔루션을 사용할 수있을 때 사용됩니다.주제를 중심으로 의견을 형성해야합니다., 나는 단지 당신이 당신의 처분에 가지고있는 모든 기회와 도구를 제시,다른 이상 기술을 옹호 아니에요.

그들은 무엇을 위해 좋은가? 주로 API 인증 및 서버 간 권한 부여.

JWT 토큰은 어떻게 생성됩니까?

노드 사용.,js 생성할 수 있습니다 첫 번째 부분 토큰의 이 코드를 사용하여

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

우리는 설정을 서명 알고리즘을HMAC SHA256(JWT 지원하는 여러 알고리즘),그 다음 우리는 버퍼에서 이 JSON-인코딩된체 우리는 인코딩을 사용하여 base64.이 작업을 수행하려면 어떻게해야합니까?

다음으로 페이로드를 추가합니다.이 페이로드는 모든 종류의 데이터로 사용자 정의 할 수 있습니다., 있다 예약,키를 포함하여issexp확인할 수 있는 발행자 및 만료 시간의 토큰을 발급합니다.

추가할 수 있습니다 당신의 자신의 데이터를 사용하여 토큰의 개체:

const payload = { username: 'Flavio' }

우리는 변환 이체,JSON-인코딩을 버리고 우리는 인코딩을 사용하여 결과를 base64,우리가 그랬던 것처럼하기:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

이 경우에는 부분 결과는eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

다음에,우리는 헤더에서 서명 및 페이로 콘텐츠를 만드는지 확인 우리의 내용을 변경할 수 없는 경우에도 도청으로 우리의 서명을 무효화됩니다. 이를 위해,우리가 사용하는crypto노드 모듈:

우리가 사용하는secretKey비밀 키를 만들기를 base64 인코딩된 표현의 암호화된 서명이 있습니다.,

값의 서명에서 우리의 경우

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

우리는 거의 한,우리는 그냥을 연결하는 이 3 부분의 헤더,페이로드 서명으로 구분하여 도트:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

API 인증

이것은 아마 할 수있는 유일한 합리적인 방법은 사용 JWT.

일반적인 시나리오는 다음과 같습니다:서비스에 가입하고 서비스 대시 보드에서 JWT 를 다운로드합니다. 이것은 서버에 대한 모든 요청을 인증하기 위해 지금부터 사용할 것입니다.,

또 다른 사례로,반대,전송 JWT 면 관리 API 를 클라이언트가 연결을,그리고 당신이 원하는 사용자를 보내는 이후 요청에 의해 전달합니다.이 경우 클라이언트는 토큰을 어딘가에 저장해야합니다. 최고의 장소는 어디입니까? HttpOnly 쿠키에서. 다른 방법은 모두 xss 공격을 받기 쉽기 때문에 피해야합니다. HttpOnly 쿠키는 JavaScript 에서 액세스 할 수 없으며 모든 요청에 따라 원본 서버로 자동으로 전송되므로 사용 사례에 완벽하게 적합합니다.,

최고의 JWT 라이브러리 선택

사용하는 언어 및 환경에 따라 여러 라이브러리 중에서 선택할 수 있습니다. 가장 인기있는에 나열되어 있습니다 jwt.io 웹 사이트.

jwts 를 세션 토큰으로 사용하지 마십시오

세션에 JWTs 를 사용하지 않아야합니다. 훨씬 더 효율적이고 데이터 노출이 적기 때문에 일반 서버 측 세션 메커니즘을 사용하십시오.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다