DotNetOpenAuth を使用して Google ユーザーを識別しています。現在、彼らの電子メール アドレスを取得し、そのコピーをデータベースに保存しています。しかし、Google アカウントの電子メール アドレスを変更した場合はどうなるでしょうか。その後、私のコピーを彼らのプロフィールにリンクできなくなりました。
DotNetOpenAuth を通じて Google アカウントを一意に識別する方法はありますか?
DotNetOpenAuth を使用して Google ユーザーを識別しています。現在、彼らの電子メール アドレスを取得し、そのコピーをデータベースに保存しています。しかし、Google アカウントの電子メール アドレスを変更した場合はどうなるでしょうか。その後、私のコピーを彼らのプロフィールにリンクできなくなりました。
DotNetOpenAuth を通じて Google アカウントを一意に識別する方法はありますか?
IAuthenticationResponse.ClaimedIdentifier
ユーザーを一意に識別するに は、常に を使用してください。
OpenID のセキュリティ モデルは、この設計に基づいています。電子メール アドレスの使用は、多くの点で安全ではありません。どのプロバイダーも、ユーザーが特定の電子メール アドレスを所有していると主張する肯定的なアサーションを発行できます。OpenID は、OP が電子メール アドレスについて嘘をつくことを防げないため、電子メール アドレスとユーザー キーだけを使用すると、ユーザー スプーフィング攻撃に対して無防備になります。OP が不正をしようとしているわけではない場合でも、OP が電子メール アドレスを確認したのか、単にユーザーに電子メール アドレスを尋ねただけなのかがわからないため、通常は信頼できません。
Google が嘘をつかないと信頼している場合でも、電子メール アドレスをユーザー ID として扱わない理由がいくつかあります (軽減できるものもありますが、明らかではありません)。たとえば、Google では、ユーザーが Google アカウントの背後にある電子メール アドレスを変更できるようにしています。ユーザーがこれを行ってから Web サイトに戻った場合、サイトはそのユーザーを別のユーザーとして識別します。さらに悪いことに、別のユーザーが後で新しい Google アカウントのリサイクルされたメール アドレスを要求した場合、サイトはそのユーザーを古いユーザーとして認識し、新しいユーザーに古いユーザー データの束へのアクセスを許可します。
OpenID Claimed Identifiers は、この問題をすべて回避するように設計されています。