8

CORSとAngular.jsでNode.jsを使用して簡単なログインを行っています。

つまり ---もPOSTclient.example.comを作成しており、成功するとセッション cookie も返され、セッション cookie によって保護されているようなGETサービスにもアクセスできます。api.example.com/loginclient.example.comapi.example.com/secret

セッション Cookie によって保護されていない GET 要求を行うことは問題ではありません。

最終的に、ここでの目標は、上記の規則が不可能であっても、CORS をローカル戦略 (ユーザー名とパスワード) を使用して REST API に対してクライアント側アプリを認証することです。

どこからでも学ぶための実用的な実装が見つかりません---正しい方向に私を向けますか?

おまけ:実際の例を示します。

4

1 に答える 1

2

問題は非常に単純です。ブラウザーは、あるドメインに設定された Cookie を別のドメインに送信することを許可していません。
これはセキュリティのためです。セッション Cookie が任意のドメインからアクセスできる場合、任意のサイトが csrf を実行できます (定義上、必要なのは csrf を実行することです。あるサイトのセッションを別のサイトで使用します)。

それを回避する方法はありますが、適用する際には注意が必要です。

  • 最も簡単な方法は、Jsonp を使用してログインし、クロスドメイン リクエストを作成することです。jsonp は基本的に、Cookie のクロスドメイン ポリシーを破ります。

  • client.example.comにあるページにiFrame を埋め込むことができます。api.example.com親と iFrame は、投稿メッセージを使用して通信できます。

どちらの方法も (その性質上) csrf リクエストに対してオープンであるため、アクセスを許可する情報には特に注意する必要がありclient.example.comます。

于 2013-04-23T05:57:14.513 に答える