2016-04-18 10 views
0

2つのサービスの基本フレームワークとしてSilexを使用したいと思います。私は一般的にクッキー/セッションを避けようとしており、ヘッダーを使って 'やる'ことをしようとしているので、さまざまなクライアントやapi(モバイル、ウェブなど)で使用されます。Microserviceアーキテクチャを使用したSilexアプリケーションのトークン/ステートレス認証

私が達成しようとしているかのセットアップ/流れ:authservice.domain.comにWebページ生成の要求に自分の携帯アプリ/中

  1. ユーザーログインは、あるレスポンスとして新しいトークンを取り戻します同様トークンストアに登録

  2. ウェブやモバイルアプリからのユーザーのアクセスがproducts.domain.comトークンはヘッダから読み取られ、店舗にチェックされている

すべてが美しく見えますが、何とかSilexがログインステップの後にリクエストにヘッダーを追加することはできません。レスポンスに追加することはできますがリクエストすることはできません(ミドルウェアの前後で使いました。 $ app-> after/before)... btw。私はそれを理解しているかどうかはわかりませんが、ヘッダーをこのように設定するときにユーザーが更新ページボタンを押すと、カスタムヘッダーが失われることはありませんか?結局のところ、Cookie /セッションなしでヘッダーにトークンを保持し続けることは可能ですか?

ここで私は(と私はクロームでそれを見ることができます)トークン取得した後、それが応答にセットを取得する実行しているんだけど、それはリクエストに応じて設定され得ることはありませんサンプルコードだ - 私は、ミドルウェア

前に使用しても同様に試してみましたが、
$this->after(function(Request $request, Response $response) { 
     $response->headers->set("X-token","2"); 
     $request->headers->set("X-token","2"); 
    }); 

私はこれをどのように達成することができますか?だから...クッキーや(apiゲートウェイ)セッションでトークンを保持せずにプレーン(Silex:))PHPで複数のサービスに渡ってヘッダーを使用するステートレス認証?

+0

リクエストは、サーバーではなくクライアントによって送信され、ユーザーはそれを読み取るため、サーバーにデータを追加することはできません。あなたが積極的に何かを要求しても、ブラウザからのものであれば、データを追加することはできません – DanFromGermany

+1

Symfonyセキュリティマニュアルをチェックしましたか? [stateless APIキー認証](http://symfony.com/doc/2.8/cookbook/security/guard-authentication.html)の達成方法に関するチュートリアルがあります。また、あなたがやろうとしているものである[JWTのセキュリティプロバイダ](https://github.com/cnam/security-jwt-service-provider)もあります。 – mTorres

答えて

2

私はあなたの質問に答えてもらえませんが、WSSE認証メカニズムを見てみると、ステートレスであり、ヘッダーで動作するので、探しているものかもしれません。

公式の文書hereにsymfony2の実装例があります。これはまた、hereとよく説明されています。

あなたは多分あなたがそれらを試してみる必要があり、同様サイレックスのためのWSSEを実装githubのLIBSのを見つけることができます。

希望これは、あなたや他の人々を助けますSilexで素敵なRESTful-ish/statelessメカニズムを実現する方法を探していて、あなたの探しているものではない場合はごめんなさい。

関連する問題