2 つの部分に分割された Web アプリがあります。
- JavaScript フロントエンド。(myfrontend.com)
- API バックエンド (node.js)。(mybackend.com)
これら 2 つの部分は異なるドメインでホストされています。最終的には同じバックエンド (つまり、モバイル Web アプリなど) のフロントエンドをさらに構築するため、このようにする必要があります。
私が今認証している方法:
ユーザーが myfrontend.com からログインすると、資格情報が mybackend.com に (ajax) 送信され、DB に対してチェックされます。彼らがチェックアウトしない場合、何も起こらず、mybackend.com はエラー コードで応答します。
彼らがチェックアウトする場合、express.js の Cookie セッションを使用し、mybackend.com は Cookie (mybackend.com ドメイン用) で応答します。サーバーは、DB から取得したユーザー ID をセッションにリンクします。
それ以降、mybackend.com へのすべてのリクエストには Cookie が含まれ、バックエンドは Cookie を使用してセッションを見つけ、セッション内のユーザー ID 情報を使用して正しく応答します。
最初はこれに CORS の問題がたくさんありましたが、すべての適切なヘッダー (withCredentials など) を設定した後、すべてのブラウザーですべてがうまく機能しています。
これは非常に洗練されたソリューションだと思いました。すべてのユーザー情報はバックエンドで厳重に隔離されており、フロントエンドはユーザー データをまったく受信せず、有効期間が短い Cookie のみを受信するためです。
だから私は2つの質問があります:
これは、この種のことを行う正しい方法ですか?OAuth はこれとはどのように実装されていますか? また、利点はありますか?
Chrome でサードパーティの Cookie をオフにすると、これが機能しなくなります。ただし、サファリでサードパーティの Cookie をオフにしても、これは正常に機能します。どうしたんだ?「mybackend.com」に ajax を実行すると、「mybackend.com」の Cookie がサードパーティの Cookie と見なされるのはなぜですか? iframe などを使用してもよろしいでしょうか。これについて心配する必要がありますか?