2017-01-04 4 views
3

다음 슬라이드에서 설명하는 것처럼 클라이언트가 jwt을 다음 요청시 Authorization Header으로 서버에 다시 보내야합니다.인증 헤더에 JWT를 추가하는 방법은 무엇입니까?

enter image description here

하지만 어떻게 내가 authorisation header을 정의하고 서버에 JWT를 추가 할 수 있습니까?

내 현재 상태 :

  1. 사용자가 post하여 서버에 usernamepasword을 보낼 수 있습니다.
  2. 서버가 JWT
  3. 을 작성합니다. 서버가 서명 된 JWT을 클라이언트로 다시 보내고 쿠키에 저장합니다. 이제

내 질문하십시오 로그인 내가 알고있는 것처럼

, 이제 필요한 경우

다시 서버로 JWT를 보낼 수 있습니다. 서버는 토큰을 검증하고 다시 보내서 로그인 프로세스를 완료합니다.

authentication header에 어떻게 추가 할 수 있습니까? 의 경우

는 프로세스를 실행하고 계산로부터 데이터를 수신 :

내가 클라이언트가 서버에 로그인 및 데이터와 두 번째 JWT에서 JWT을 보내 가지고, 바로 이해합니까? 또는 POST으로 데이터를 보낼 수 있습니까?

+0

API로 인증하고 유효한 자격 증명을 제공 한 경우 JWT가 반환됩니다. 나중에 JWT를 보내고 인증을 요청하십시오. JWT가 헤더에있는 한 POST를 사용하여 데이터를 보낼 수 있습니다. 당신이하는 일은 당신이 어떻게 요청하는지에 달려 있습니다. – JimL

+0

JWT가 쿠키에 저장되어있는이 순간에 인증 프로세스가 끝났습니다. 그리고 인증을 유지하기 위해 앞으로의 모든 요청과 함께 토큰을 보내고 서버에서 확인하고 다시 설정해야합니다. 그러나 헤더에 JWT를 어떻게 추가 할 수 있습니까? 이것은 단계입니다, 나는 아직 이해하지 못합니다. –

+1

그리고 어떻게 말했는지는 요청을 만드는 방법에 따라 달라집니다. – JimL

답변

5

그래서 JWT를 사용하는 것이 옳습니다. JWT 생성 후 클라이언트에서 서버로 데이터를 보낼 때 필요한 것은 요청 헤더에 추가하는 것뿐입니다. 대부분의 사람들은 아래의 노드 조각에 토큰 유사한 무기명의 OAuth 같은 경로를 따라 유지하고 추가하려고합니다

var rp = require('request-promise'); 
options = { 
    method: GET, 
    uri: 'https://www.example.com/api/sample', 
    headers: { 
    Authorization: "Bearer <insert_your_JWT_here>" 
    } 
} 
rp(options).then(function(res){ 
    <handle_response> 
} 

가 부여 당신이 PHP를 언급 알고 있지만, 워크 플로우가 같은, 그 바로 구문은 다른.

이제이 토큰이 있는지 확인하려면 서버가 verify()에 정의 된 암호로 유효하다는 것을 확인해야합니다. 클라이언트가 요청할 때마다 인증 된 엔드 포인트에 대해 매번이 토큰을 보내야합니다.

+0

코드가 잘리는 것은 서버 측에서 발생 했습니까? 이게 옳은 거니? –

+0

내가 보여준 스 니펫은 클라이언트에서 가져온 것입니다. 내 응답에서 서버는 uri = _https : //www.example.com/api/sample_ – LostJon

+0

입니다. 그렇기 때문에 다음과 같이 말할 수 있습니다. '인증 헤더'를 '무기명'으로 전송하는 프로세스를 만들어야합니다. '서버에 돌아가는 것은 클라이언트에서 (아마 angularJS로) 생성하는 것입니까? –

1

위의 사용자는 BROWSER-BASED 설정 권한 부여 헤더 또는 ALL에서 헤더를 요청했습니다.

(Node.js는 서버에서 실행됩니다. 위의 승인 된 대답은 다른 서버를 인증하는 SERVER를 나타내며이 "클라이언트 측 코드"를 호출하는 응답자는 서버 측 코드와 관련하여 기술적으로 정확하다는 것을 알고 있습니다. 누구와 허가를 요청하는지에 대한 클라이언트 - 서버 모델을 따르는 서버 간 통신. 그러나 실제 질문 : 브라우저가 저장된 토큰 등을 포함하도록 권한 헤더를 수정하는 방법

전송 된 헤더를 액세스하거나 변경하는 수단을 제공하지 않는 html href 외에도 요청을 보내는 자바 스크립트 방법이 있습니다. 하나는 당신이 렌더링 된 페이지 (숨겨진 요소?)에 토큰을 접하는의 PHP-템플릿 방법을 찾을 수 있습니다 자바 스크립트

xhr.open('GET', url, true); 
xhr.setRequestHeader("Authorization", "Bearer" + yourtoken); 
xhr.send(); 

를 통해 헤더를 설정하지만, 자바 스크립트 실행 방법 하나는 입증하기 위해 표준 XHR를 사용할 수 있습니다 브라우저는 요청 헤더를 조작하기위한 수단을 제공합니다. 로컬/세션 저장소는 일반적으로 수동으로 설정해야하지만 쿠키는 지정된 도메인에 대한 모든 요청에서 자동으로 전송됩니다.

관련 문제