JWT 토큰에 가장 적합한 Authorization
HTTP 헤더 유형 이 무엇인지 궁금합니다 .
아마 가장 인기있는 유형 중 하나는 Basic
입니다. 예를 들어 :
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
로그인 및 비밀번호와 같은 두 가지 매개 변수를 처리합니다. 따라서 JWT 토큰과 관련이 없습니다.
또한 Bearer 유형에 대해 들었습니다 .
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
그러나 나는 그 의미를 모른다. 곰과 관련이 있습니까?
HTTP Authorization
헤더 에서 JWT 토큰을 사용하는 특별한 방법이 있습니까? 우리를 사용해야합니까 Bearer
, 아니면 단순화하고 사용해야합니까?
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
감사.
편집하다:
아니면 JWT
HTTP 헤더 일 수도 있습니다.
JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
답변
클라이언트가 액세스 토큰 (JWT 또는 다른 토큰)을 보내는 데 가장 적합한 HTTP 헤더 Authorization
는 Bearer
인증 체계 가있는 헤더입니다 .
이 체계는 RFC6750에 의해 설명됩니다 .
예:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9TJV...r7E20RMHrHDcEfxjoYZgeFONFh7HgQ
보다 강력한 보안 보호가 필요한 경우 다음 IETF 초안 ( https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture) 도 고려할 수 있습니다 . 이 초안은 https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac에 대한 좋은 대안으로 보입니다 .
이 RFC 및 위의 사양이 OAuth2 Framework 프로토콜과 관련되어 있어도 클라이언트와 서버 간의 토큰 교환이 필요한 다른 컨텍스트에서 사용될 수 있습니다.
사용자 정의와는 달리 JWT
당신이 당신의 질문에 언급 방식 하나는 IANA에 등록됩니다 .Bearer
에 관한 Basic
및 Digest
인증 체계, 그들은 사용자 이름과 비밀 (참조하여 인증하기 위해 최선을 다하고 있습니다 RFC7616 및 RFC7617를 ) 그 상황에서 그렇게 적용되지합니다.
답변
짧은 답변
Bearer
인증 방식은 당신을 위해 무엇을 찾고 있습니다.
긴 대답
곰과 관련이 있습니까?
어 … 아니요 🙂
Oxford Dictionaries 에 따르면 , bearer 의 정의는 다음과 같습니다.
무기명 / ˈbɛːrə /
명사
무언가를 운반하거나 보유하는 사람이나 물건.
수표 나 돈을 지불하라는 명령을 내린 사람.
첫 번째 정의에는 메신저 , 에이전트 , 컨베이어 , 사절 , 캐리어 , 공급자 동의어가 포함됩니다 .
RFC 6750 에 따른 베어러 토큰 의 정의는 다음과 같습니다.
무기명 토큰
토큰을 소유 한 당사자 ( “소지자”)가 소유 한 다른 당사자가 토큰을 소유 할 수있는 속성을 가진 보안 토큰. 베어러 토큰을 사용하면 베어러가 암호화 키 자료 (소지 증명)를 소유하고 있음을 증명할 필요가 없습니다.
Bearer
인증 방식입니다 IANA에 등록 하고 원래 정의 RFC 6750 의 OAuth 2.0 인증 프레임 워크,하지만 아무것도 사용에서 당신을 멈추지 Bearer
의 OAuth 2.0을 사용하지 않는 응용 프로그램에 액세스 토큰에 대한 계획을.
가능한 한 표준을 고수하고 자체 인증 체계를 만들지 마십시오.
인증 체계를 Authorization
사용하여 요청 헤더 에 액세스 토큰을 보내야합니다 Bearer
.
Authorization
HTTP / 1.1에 의해 정의 된 요청 헤더 필드 에서 액세스 토큰을 전송할 때 클라이언트는Bearer
인증 체계를 사용 하여 액세스 토큰을 전송합니다.예를 들면 다음과 같습니다.
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer mF_9.B5f-4.1JqM
[…]
클라이언트는 HTTP 인증 체계
Authorization
와 함께 요청 헤더 필드를 사용하여 베어러 토큰으로 인증 된 요청을 작성해야합니다Bearer
. […]
토큰이 유효하지 않거나 누락 된 경우 Bearer
스킴이 WWW-Authenticate
응답 헤더에 포함되어야합니다 .
보호 자원 요청에 인증 신임 정보가 포함되어 있지 않거나 보호 자원에 액세스 할 수있는 액세스 토큰이없는 경우, 자원 서버는 반드시 HTTP
WWW-Authenticate
응답 헤더 필드 […]를 포함해야합니다 .이 사양으로 정의 된 모든 문제는 반드시 auth-scheme 값을 사용해야합니다
Bearer
. 이 체계 뒤에는 하나 이상의 auth-param 값이 와야합니다. […].예를 들어 인증없이 보호 된 리소스 요청에 대한 응답으로 :
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example"
만료 된 액세스 토큰을 사용한 인증 시도로 보호 된 자원 요청에 응답하여 다음을 수행하십시오.
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example", error="invalid_token", error_description="The access token expired"