私の e コマース サイトでは、ユーザーに openid ログインを提供しています。Facebook を除くすべての主要プロバイダーは、この openid エンドポイントを提供しました。Facebook は oauth 2.0 のみを提供していました。
その例外のために、ユーザーが facebooks oauth を使用してログインできる openid エンドポイントを自分でセットアップしました。
つまり、ユーザーが facebook を使用してログインする仲介サイトを作成し、そこから openid を使用して e コマース サイトにシームレスにログインします。これには、ヘッダーのリダイレクトのみが含まれ、エンド ユーザーに対して透過的に機能します。
現在、Amazonはシングル サインオン プロバイダーのリーグに参加しています。それらは oauth 2.0 のみをサポートします。
全体として、oauth 2.0 が最有力候補であり、openid ではないようです。これは、私が関心を持っているすべてのプロバイダーが今では oauth もサポートしているためです。
そこで、e コマース サイトに直接 oauth を実装することを考えました。
ただし、実装手順はプロバイダーによって大きく異なります。
ほとんどの場合、サイトに外部の JavaScript をロードする必要があります。サポートしたいすべての oauth プロバイダーに外部 JavaScript をロードすることは、避けたいオプションです。
Facebook は、javascript を含まない、完全にサーバー側の方法を提供します。
アマゾンはしません。
しかし、それはすべて oauth 2.0 ではないでしょうか?
標準が非常に緩和されているか、一貫して実装されていないように見えます。
プロバイダーに固有の構成とエンドポイントを渡してログインを達成するだけの一般的な oauth 2.0 クラスを持つことは可能ですか?
Zend の実装を見てみましたが、本当に巨大です... facebook の JavaScript を使用しない実装は本当に小さいです...
私はここで少し迷っています。誰かが私を正しい方向に向けることができますか?
複数の oauth プロバイダーを実装したいと考えています。確かにグーグル、フェイスブック、アマゾン、ツイッター。
これを同じコードベースで作成することは可能ですか、それとも sdk クラスと JavaScript を使用して個別に実装する必要がありますか?
私は問題なくそれを行うことができましたが、いくつかの理由(メンテナンス、柔軟性、新しいプロバイダーの追加など)で私の根性は本当に好きではありません..
そして、その中でoauth 2.0標準はどこにありますか?
どんな助けでも感謝します。
個人的な余談
この場を借りて、Oauth が好きではないことを簡単に指摘してしまったことをお詫びします。それを使用するすべてのサイトが oauth プロバイダーに登録する必要があります。また、これらのプロバイダーは、サイトとの協力に同意しない場合があります。私はその権限が好きではありません。openid の方が好きです。私はそれが完璧ではないことを知っていますが、私はそれを好みます. また、openid と oauth は、悪意のあるサイトがユーザーにログイン ボタンをクリックさせ、ユーザーがプロバイダー サイトにログインしていると信じ込ませてログインする偽のプロバイダー側を開くという攻撃に対して設計上脆弱です。ユーザーは URL を見て、それが本当に目的のサイトかどうかを確認する必要があります。これは根本的な問題であり、扱いが難しいことは承知していますが、指摘したいと思います。