0

I've gotten a good number of OAuth logins working on my site now. My implementation is based on the WebSecurity classes with amends to the code to suit my needs (I pulled the WebSecurity source into mine).

However I'm now facing a new set of problems. In my application I have opted to make the user email address the login identifier of choice. It's naturally unique and suits this use case.

However, the OAuth "standards" strikes again.

Some providers will return your email address as "username" (Google) some will return the display name (Facebook). As it stands I see two options given my particular scenario:

Option 1 Pull even more framework source code into my solution until I can chase down where the OpenIdRelyingParty class is actually interacted with (via the DotNetOpenAuth.AspNet facade) and make addition information requests from the OpenID Providers.

Option 2 When a user first logs in using an OpenID provider I can display a kind of "complete registration" form that requests missing info based on the provider selected.*

Option 2 is the most immediate and probably the quickest to implement but also includes some code smells through having to do something different based on the provider selected.

Option 1 will take longer but will ultimately make things more future proof. I will need to perform richer interactions down the line so this also has an edge in that regard.

The more I get into the code it does seem that the WebSecurity class itself is actually very limiting as it hides lots of useful DotNetOpenAuth functionality in the name of making integration easier.

Andrew (the author of DNOA) has said that the Attribute Exchange stuff happens in the OpenIdRelyingParty class but I cannot see from the DotNetOpenAuth.AspNet source code where this class is used so I'm unsure of what source would need to be pulled into my code in order to enable the functionality I need.

Has anyone completely something similar?

4

1 に答える 1

1

AttributeExchange は OpenID プロバイダー ( GoogleおよびYahoo! ) にのみ適用され、それぞれのソース ファイルで使用されている拡張子を確認できます。

ユーザー名として電子メール アドレスを使用しないことをお勧めします。メールアドレスは再利用できます (アカウントが期限切れになるか、閉鎖/キャンセルされ、メールアドレスが新しいユーザーに再割り当てされる可能性があります)。これが発生した場合、電子メール アドレスに基づくサイトは、古いユーザーのすべてのデータを新しいユーザーに「譲る」ことになります。大規模なプライバシー侵害と訴訟が発生する可能性があります。OpenID の場合は Claimed Identifier を使用し、OAuth の場合はサービス プロバイダー固有のユーザー ID 番号をユーザー テーブルのプライマリ識別子として使用することをお勧めします。確かに、ユーザーがそれがユーザー名であることを知っている限り、ユーザー名表示するWeb サイトのあらゆる場所で電子メール アドレスをキャプチャして表示することができます。

于 2012-11-23T04:57:21.763 に答える