2016-11-12 2 views
0

У меня есть две конечные точки REST.Как я могу отправить токен JWT на внешний URL?

  1. accounts.mydomain.com/login - провайдер идентификации, отправляет маркер JWT в ответ, когда пользователь проходит аутентификацию с его именем пользователя/паролем.
  2. api.mydomain.com/users - Принимает вышеуказанный токен JWT как заголовок Authorization, проверяет его и отправляет пользователю JSON в качестве ответа, если токен действителен.

Я создал свой пользовательский интерфейс с помощью Angular2

  1. Войти страницу в myservice.mydomain.com, которая захватывает имя пользователя/пароль и POST s учетные данные для отдыха конечной accounts.mydomain.com/login и получает JWT фишку в качестве ответа. Ниже будет показана страница, когда будет получен токен JWT.
  2. Главная страница пользователей users.mydomain.com. Эта страница должна отображаться только в том случае, если указанный токен JWT проверен против остальной конечной точки api.mydomain.com/users.

я, хотя я бы послать маркер JWT от ответа страницы входа в users.mydomain.com?t=JWTtoken с помощью window.location.href и получить маркер из запроса пар, чтобы отправить его в api.mydomain.com/usersAuthorization заголовка.

Я знаю, что если размер токена JWT увеличивается, отправка маркера в параметры запроса не очень хороша.

Может ли кто-нибудь предложить мне лучший способ достичь вышеуказанного требования? Можно ли отправить токен JWT в заголовок вместо параметра запроса?

ответ

2

Определенно можно отправить токен JWT в виде заголовка. В Angular2 у вас есть коллекция заголовков API запросов, которую вы можете увеличить. У вас нет перехвата в Angular2, похоже, но вы всегда можете просто написать свою собственную оболочку поверх HTTP-клиента для хранения токена и добавить его к каждому запросу в заголовке.

Это, по сути, самый распространенный способ передачи маркера JWT или любого другого токена в API (вы можете отправить его также в файлы cookie, например, но я предпочитаю заголовок по разным причинам, таким как ремонтопригодность и безопасность).

Это, как вы установили заголовок:

import {Headers} from 'angular2/http'; 
var headers = new Headers(); 
headers.append(headerName, value); 

// HTTP POST using these headers 
this.http.post(url, data, { 
    headers: headers 
}) 

Вы можете прочитать больше о обертке в here.

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