0

私が作業しているプラ​​ットフォームでは、Express.jsサーバー上でReactフロントエンドを実行しています。また、localhostで開発するときは、ステージングでAPIを呼び出しますクラウド内の独自のドメインに設定されている(ローカルホストからの)環境。Cookie Auth:ローカルホストからライブサービスへのリクエストの作成

最近、ステージング環境のAPIゲートウェイレベル(Zuul)でCookie認証を設定しました。開発中(Zuulゲートウェイなし)にはReactアプリケーションをlocalhost上で直接実行しているので、アプリケーションは最初に認証されることなく(認証クッキーなし)ステージングAPIを呼び出しています。これは、APIへのすべてのリクエストでローカルホストのセットアップが失敗する原因となります。私は、ブラウザにトークンを注入するかアプリを強制的に設定するいくつかのソリューションを試しましたが、x-originリクエスト(localhostからステージングまで)には依然として問題があります。

私はフロントエンドのdevセットアップに質問し始めています。私たちのAPIが複数の実環境で設定されているため、APIをローカルで実行したり、ライブDBおよび中間層サービスに接続することは困難です。だから、私はローカルホストからステージング作業にこれらの要求を行う方法を見つけることを好むでしょう。

これらのサービスにアクセスする必要があるサーバー側とクライアント側の両方のリクエスト(ajax)があり、要求に対してAxiosを使用しています。私は/etc/hostsとプロキシ要求を設定することでこれを行う方法があるかもしれないと思っていましたが、どうやってこれが行われるのか分かりません。

認証があるマイクロサービス環境で開発する場合、フロントエンドアプリケーションのローカル開発セットアップに取り組むための推奨方法はありますか?ローカルで開発する際にライブAPIを使用しようとしてはいけませんか?提案は高く評価されました。

答えて

0

1つの問題と1つのアドバイスが思い浮かぶ。

  1. あなたは、クロスオリジンリソース共有(CORS)問題を打つ可能性があります。基本的に、ブラウザが悪意のある攻撃を避けるために別のドメインにヒットするのを防ぐならば、サービスが特に許可しない限り。たとえば、フロントエンドアプリケーションがwww.mydomain.com/appで動作し、apiがwww.mydomain.com/apiにある場合、問題は発生しません。ただし、フロントエンドアプリがwww.mydomain.comで動作し、apiがapi.mydomain.comにある場合、apiはwww.mydomain.comからのリクエストを明示的に許可する必要があります。異なるドメインとみなされるため、localhostと同じです。設定は、使用しているサーバーの種類によって異なります。そのドキュメントで探す必要があります。

  2. 今日のほとんどのAPIはRestアーキテクチャに準拠しており、これらのAPIはステートレスです。つまり、APIはクライアントの状態を気にしません。残念ながら、これはクッキーの場合ではありません。なぜなら、クッキーはサーバー側とクライアント側の両方に保持されなければならないからです。 APIの設計を改善したい場合は、トークン、具体的にはJSON Webトークン(JWT)を使用することをお勧めします。 JWTはステートレスであり、サーバーを処理するためには安く済むので、それを追跡する必要はありません。これは元々エンコーディングアルゴリズムで生成されたデジタル署名に基づいて動作し、デコードアルゴリズムを使用して検証が行われます。 Here良い完全な比較。

+0

私は答えを感謝しますが、私たちはこれらのアドバイスの両方を認識しています。 1 - CORSが有効、2 - JWTをクッキーに保存できます。 – seansean11

+0

2 - はい、サーバー側のレンダリングが必要な場合は必要です。また、クライアント側からクッキーを設定する場合は、パスを設定していることを確認してください。さもなければ、あなたは問題に遭遇します。 –

関連する問題