0

REST API에서 JWT 무기명 인증 스키마를 사용하고 있습니다. https://tools.ietf.org/html/rfc6750#page-10무기명 (JWT) 인증 스키마의 인증 정보 헤더

{ 
    "access_token":"mF_9.B5f-4.1JqM", 
    "token_type":"Bearer", 
    "expires_in":3600, 
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA" 
} 

설명하지만 몸이 이미 존재하는 경우 가입처럼 너무 다른 HTTP 요청에서 토큰을 반환해야로서 성공적인 인증 후 클라이언트로 JWT 토큰을 반환하는 경우, 현재 내가 몸에 액세스 토큰 응답을 사용하고 있습니다. 그래서, "Authentication-Info" 헤더를 사용하려고 생각하고있었습니다. 그러나 Bearer Scheme은 "인증 정보"헤더를 어디에도 지정하지 않습니다. jwt 토큰을 반환하기 위해 인증 정보 헤더를 사용해야합니까?

OAuth 2.0을 사용하지 않고 JWT 만 사용합니다.

답변

0

OAuth 2.0에서는 올바른 내용 일 수 있지만 일반 JWT에서는 훨씬 간단합니다. 일반적인 자체 제작 JWT를 사용하면 클라이언트는 Authorization이라는 HTTP 헤더에 토큰을 넣습니다. 헤더의 값은 다음과 같습니다.

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 

헤더 필드는 다른 이름으로도 호출 될 수 있습니다. 서버와 클라이언트는 이름에 동의해야합니다. 인증은 가장 일반적인 이름입니다.

서버는 일반적으로 로그인 끝점의 POST 요청에 응답하여 토큰을 발급합니다. 토큰은 로그인이 성공했을 때 응답 본문의 일부가 될 수 있습니다. 클라이언트는 위의 헤더를 사용하여 토큰을 저장하고 모든 요청과 함께 토큰을 보냅니다. 액세스 토큰 및 새로 고침 토큰과 관련된 모든 것을 잊어 버릴 수 있습니다. "일반"기본 JWT를 사용하는 경우 하나의 토큰 만 갖게되며 이는 Bearer 이후의 값입니다.

사용자가 가입 할 때 토큰을 발행 할 이유가 없습니다. 가입 후 로그인 할 때 얻을 수 있습니다.

일반 인증을 구현하는 경우 OAuth에 대한 RFC를 통해 this을 읽는 것이 좋습니다.

+0

비즈니스 요구 사항은 가입 즉시 사용자 로그인이므로 가입시 토큰을 반환합니다. 로그인 화면이 없어야합니다. –

+0

"Authorization"헤더를 사용하여 각 요청에서 토큰을 보내지 만, 질문은 로그인 요청에서 토큰을 클라이언트로 반환하는 방법입니다. –

+0

클라이언트가 게시물 요청을 보내면 서버는 응답으로 응답해야합니다. 일반적으로 상태 코드 200 및 메시지 : {success : true} 또는 이와 유사한 메시지. 이 요청에 토큰을 추가 할 수 있습니다. [This] (https://medium.freecodecamp.org/securing-node-js-restful-apis-with-json-web-tokens-9f811a92bb52) 블로그 게시물의 예가 있습니다 (** AuthController.js **). Node를위한 것이지만 모든 언어와 프레임 워크에서 개념은 동일합니다. 토큰은 레지스터 끝점에서 응답으로 보낼 수도 있습니다. – MikaS