2017-01-04 2 views
3

Как указано на следующем слайде, необходимо, чтобы клиент отправил jwt обратно на сервер Authorization Header по следующему запросу.Как добавить JWT в заголовок авторизации?

enter image description here

Но как я могу определить authorisation header и добавить JWT на сервер?

Мой текущий статус:

  1. Пользователь отправить username и pasword к серверу с помощью post.
  2. Сервер создает JWT
  3. Сервер отправляет подписанный JWT обратно клиенту и сохраняет его в файле cookie.

Теперь мои вопросы:

В случае Вход

Как я понимаю, теперь его нужно отправить JWT обратно на сервер. Сервер проверяет токен и отправляет его для завершения процесса входа в систему.

Как добавить JWT в authentication header?

В случае запуска процесса и получать данные из расчета:

Я понимаю ли правильно, что клиент должен отправить JWT от входа на сервер, и второй JWT с данными? Или я могу отправить данные по POST?

+0

Вы проверяете подлинность с помощью API и, если вы предоставили действительные учетные данные, вы получаете обратно JWT. Вы отправляете JWT с будущими запросами, чтобы оставаться аутентифицированным. Вы можете отправлять данные с помощью POST, пока JWT находится в заголовке. Как вы это делаете, зависит от того, как вы делаете запрос. – JimL

+0

Как я понимаю, вы прокомментировали, процесс аутентификации завершился с этого момента, когда JWT хранится в файле cookie. И чтобы пройти аутентификацию, я должен отправить токен со всеми будущими запросами и проверить их на сервере и установить их снова. Но как я могу добавить JWT в заголовок? Это шаг, я пока не понимаю. –

+1

И как сказано, как вы это делаете, зависит от того, как вы делаете запросы :) – JimL

ответ

5

Итак, вы вполне правы с JWT. Все, что вам нужно сделать при отправке данных с клиента на сервер (после создания JWT), - это добавить его в заголовок запроса. Многие люди будут пытаться держать по тому же пути, как OAuth и добавить Bearer маркер похож на фрагмент узла ниже:

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> 
} 

Granted Я знаю, вы упомянули PHP, но рабочие процессы одинаковы, его просто синтаксис другой.

Теперь, чтобы убедиться, что этот токен присутствует, серверу необходимо будет подтвердить(), что токен действителен с указанным секретом. В каждом запросе, сделанном клиентом, для авторизованной конечной точки, вам нужно будет отправлять этот токен каждый раз.

+0

Как понятно, ваш код отрезан от сервера? Это правильно? –

+0

Фрагмент, который я показал от клиента. В моем ответе сервер будет uri = _https: //www.example.com/api/sample_ – LostJon

+0

ok, поэтому правильно сказать: мне нужно создать процесс для отправки «заголовка проверки подлинности» в качестве «носителя» 'back to the server - создать на клиенте (возможно, с angularJS)? –

1

Пользователь, упомянутый выше, запрашивал средства заголовков авторизации настроек или заголовков во ВСЕХ.

(Node.js запускается на сервере. Я понимаю, что принятый ответ выше относится к SERVER, удостоверяющему подлинность к ANOTHER SERVER, и что ответчик, вызывающий этот «код на стороне клиента», технически корректен в отношении серверно- к серверу, следуя модели клиент-сервер, кто запрашивает авторизацию с кем, но это не касается истинного вопроса: как браузер модифицирует заголовок авторизации, чтобы включить сохраненный токен и т. д.

Помимо html href, который не предоставляет средства для доступа или изменения отправленных заголовков, есть javascript-средство отправки запросов. Можно использовать стандартный XHR, чтобы продемонстрировать, как один устанавливает заголовки с помощью яваскрипта

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

Вы можете быть в состоянии найти PHP-шаблонный средство вписывания маркер в отображаемой странице (скрытый элемент?), Но Javascript работает в браузер предоставляет средства для обработки заголовков запросов. Стоит отметить, что файлы cookie автоматически отправляются по всем запросам для данного домена, в то время как локальное/сеансовое хранилище требует ручной установки их обычно.

Смежные вопросы