2016-11-12 3 views
0

私は2つのRESTエンドポイントを持っています。JWTトークンを外部URLに送信するにはどうすればよいですか?

  1. - アイデンティティプロバイダは、ユーザが自分のユーザ名/パスワードで認証されると、JWTトークンを応答として送信します。
  2. api.mydomain.com/users - 上記のJWTトークンをAuthorizationヘッダーとして受け入れ、それを検証し、トークンが有効であればユーザーJSONを応答として送信します。

私はaccounts.mydomain.com/login 残りのエンドポイントにAngular2

  1. にユーザ名/パスワードとPOSTの資格情報をキャプチャしmyservice.mydomain.comでのログインページを使用して、私のUIを作成し、応答としてJWTトークンを取得しています。 JWTトークンが受信されると、下のページが表示されます。
  2. users.mydomain.comのユーザのホームページ。このページは、上記のJWTトークンが残りのエンドポイントapi.mydomain.com/usersと照合された場合にのみ表示されます。

I私はwindow.location.hrefを使用してusers.mydomain.com?t=JWTtokenにログインページの応答からJWTトークンを送信し、Authorizationヘッダーとしてapi.mydomain.com/usersにそれを送信するために、クエリのparamからトークンを得るでしょうけれども。

私は、JWTトークンのサイズが増加している場合は、クエリパラメータでトークンを送信するのがうまくいかないことを知っています。

誰も私に上記の要件を達成するためのよりよい方法を提案できますか?クエリパラメータの代わりにヘッダにJWTトークンを送信することは可能ですか?

答えて

2

JWTトークンをヘッダーとして送信することは間違いありません。 Angular2には、リクエストAPIに追加可能なヘッダーのコレクションがあります。 Angular2の傍受はありませんが、HTTPクライアントの上に独自のラッパーを作成して、トークンを格納し、ヘッダー内のすべての要求に追加することができます。

これはJWTトークンやその他のトークンをAPIに渡す最も一般的な方法です(クッキーで送信することもできますが、保守性やセキュリティなどさまざまな理由からヘッダーを優先します)。

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でラッパーの詳細を読むことができます:

は、これはヘッダーを設定する方法です。

関連する問題