10

ユーザーが Google アカウントを使用して Web アプリケーションにログインする方法を理解するために、Google アカウント ユーザーのフェデレーション ログインについて読んでいます。

そのため、プロセスの終わりに向かって、Google は Google が提供する識別子を返します。これは として追加されopenid.claimed_idます。これは、Web アプリケーションがこの識別子を使用してユーザーを認識し、アプリケーションの機能とデータへのアクセスを許可することを意味します。私の質問は、この識別子は静的ですか? この識別子を使用して、同じユーザーを繰り返し識別できますか?

4

3 に答える 3

11

はい。openid.claimed_id 値がユーザー名であると考えてください。特に Google では、これは「直接識別」を真に実装する OpenID プロバイダーに当てはまります。このユーザー名が他の Web サイトと相関するとは考えないでください。設計上、自分の Web サイト以外の他の証明書利用者は、同じ Google ユーザーに対して異なる claim_id 値を取得します。

また、この claim_id は大文字と小文字を区別するようにしてください。

于 2010-01-13T03:25:24.607 に答える
7

あなたの質問に対する具体的な回答は、Google の OpenID API ドキュメントにあります。

Google が提供する識別子は、ユーザーの実際の G​​oogle アカウント名やパスワードとは関係なく、永続的な値です。ユーザーが Google ユーザー名やメール アドレスを変更しても、一定のままです。この識別子は「指定された ID」でもあります。つまり、Google は各依存者に異なる値を返します。Google はリクエスト パラメータ openid.realm を使用して証明書利用者を認識するため、サードパーティ アプリケーションがこの値を変更すると、すべてのユーザー ID が変更されます。

于 2010-01-21T17:26:12.513 に答える
1

実際、テスト ユーザーの google claim_id が変更されたインスタンスに遭遇しました。アプリへの OpenID の実装が終わりに近づいていましたが、明らかに理由もなく、応答データの claim_id が変更されました。

過去数週間、このアカウントでテストしてきましたが、予想どおり、claimed_id はずっと同じでした。すると、ワム、変わった!応答データを何度も確認して確認しましたが、データを取得するための基になるコードは変更されていませんでした。

現時点ではこれを処理する方法がわかりませんが、ループに陥ると思います。最初の認証の後、ユーザーは (ご想像のとおり) サイトに登録し、スクリーン ネームを設定します。claim_id が変更された場合、同じユーザーであることを確認するにはどうすればよいですか? ベスト プラクティスに従って、メール アドレスを使用することはできません。

編集

今、私は私の顔にパイを持っています!私は細部を 1 つ見逃していましたが、それが主要な詳細であることが判明しました。開発環境を変更し、別の v-host でホストしていました。これによりレルムが効果的に変更され、ドキュメントに従って claim_id 応答が変更されます。

コードでレルムが自動的に設定されているサブドメインに OID を実装しようとしていたので、これは私にとって良い教訓でした。ID を壊さずに他のすべてのサブドメインで同じユーザー データベースを使用することはできなかったため、今後の頭痛の種から解放されました。

レルムの更新

より詳しい情報

サブドメインの 1 つに対して OpenID ソリューションを開発している場合でも、最上位ドメインにレルムを指定するのが賢明な場合があります。

例: openid.realm = http://*.yourdomain.com

これにより、サインイン ページをすべてのサブドメインに拡張し、サブドメイン全体でユーザー ID を保持できます。

(オプション) 認証されたレルム。エンド ユーザーが信頼するよう求められているドメインを識別します。(例: "http://*.myexamplesite.com") この値は、openid.return_to で定義されたドメインと一致している必要があります。このパラメータが定義されていない場合、Google は openid.return_to で参照されている URL を使用します。

于 2013-09-10T05:53:33.187 に答える