ユーザーに特定のサービスを提供する Web サイト .NET を作成しています。service1.com としましょう。将来的には、service2.com があり、データベースを共有します。また、ユーザーが Google などに登録していない場合に備えて、Google、Facebook、Twitter でのログイン + カスタム サインアップを提供することで、ユーザー フレンドリーな認証を行いたいと考えています。DotNetOpenAuthライブラリを使用します。したがって、シナリオはSOに似ています。
現在、Googleには差し迫った問題があります。異なる領域に対して異なる主張された識別子を提供します。つまり、ユーザーのIDとして使用することはできませんが、ユーザーを解決するために電子メールを画像に追加する必要があります( SOが行っているように)。
それに加えて、Facebook Connect、Twitter、およびすべてのサービス サイトのすべての追加ログイン オプションをサポートする必要があることを意味します。
そこで、OpenID プロキシのアイデアを思いつきました。
- OpenID プロバイダー openid.service.com を独自の別のデータベースで作成します
- service1.com と service2.com はその証明書利用者であり、独自のデータベースを共有しています
- openid.service.com は、さまざまな方法でユーザーを認証できます。
- openid.service.com の新しいアカウント(SO のような基本的なサインアップ)
- OpenID (Gmail、Yahoo など)
- Facebook コネクト
- ツイッター
- ...
- ログイン オプションとサインアップ フォームは、すべてのサービス Web サイトの iframe に表示されます (SO サインアップのように)
- openid.service.com がオプションのいずれかによってユーザーを認証すると、要求された識別子を証明書利用者のコールバックに提供します
したがって、最終結果は次のようになります。
長所:
- サービスは、openid.service.com から提供された要求された識別子を使用して、ログインしているユーザーを識別できます
- 必要なドメインに簡単にサービスを追加できます
- openid.service.comが処理するため、ログインオプションを追加するのは簡単です
- openid.service.com が認証を処理するため、Google が主張する識別子は変更されません
短所:
- 認証チェーンが長くなります (サービスは Google などで直接認証されません)。
- ???
これはそのようなシステムを実装する適切な方法ですか?これには追加の欠点がありますか?