2017-01-04 6 views
3

次のスライドに記載されているように、クライアントはjwtを次の要求時にAuthorization Headerでサーバーに送り返す必要があります。認可ヘッダにJWTを追加するには?

enter image description here

しかし、どのように、私はauthorisation headerを定義して、サーバーにJWTを追加することができますか?

私の現在の状態:

  1. ユーザーはpostにより、サーバーにusernamepaswordを送信します。
  2. サーバがJWTを作成します
  3. サーバは署名したJWTをクライアントに送り返し、クッキーに保存します。ログイン

    の場合

    私は、サーバーへのJWTを送り返すために今その必要、それを理解したよう:

今私の質問。サーバーはトークンを確認して戻してログインプロセスを終了します。

JWTauthentication 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とは別に、リクエストを送信するjavascriptの手段があります。 1あなたがレンダリングされたページ(隠された要素?)にトークンを刻むのPHP-テンプレートの手段を見つけることができるかもしれませんジャバスクリプト

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

経由のヘッダを設定しますが、JavaScriptで実行されているか 一つは、証明するために標準XHRを使用することができますブラウザは要求ヘッダーを操作する手段を提供します。 ローカル/セッションストレージは手動で設定する必要がありますが、Cookieは特定のドメインのすべてのリクエストで自動的に送信されます。

関連する問題