2009-07-21 21 views
1

私はすべての認証の部分を動作させることができましたが、私は登録の設定について混乱しています。ASP.NET、OpenIDと登録の混乱

登録すると、OpenIDが既存のアカウントに添付されていない場合は、新しいアカウントを作成する必要があります。

私は単に登録ページ(登録用フィールドから)に戻り、ユーザーが登録されていれば別のページにリダイレクトする必要がありますか?

最初にユーザーに署名しなくても(formsauthentication.redirectfromloginpage)、すべてのページで新しいものであるかどうかをチェックすることなく、クリーンでシンプルな登録フローを設定する方法はありますか?

申し訳ありませんが、これはひどく言われている場合、私はそれを説明することは困難です他のほとんどのもののように!

おかげ

答えて

2

は理想的には、登録が全く単にOpenIDを超えて必要とされません。あなたのサイトは、すべての機能を提供するためにユーザー識別子以上のことを知るには、が必要ですか?

あなたのサイトが、OpenIDが提供する識別子以上のものを要求せずに(情報だけであっても)ユーザーにサービスを提供できれば、登録ページは一切ありません。これはユーザーにとってははるかに優れており、新しいユーザーがサイトにアクセスする際の障壁が低くなります。次に、ユーザーが自分自身についてより多くの情報をあきらめる必要があるものを提供するページにユーザーがアクセスすると、そのときに登録ページを貼り付けます。

すべての新規ユーザーの登録ページを貼る必要がある場合は、誰かがOpenIDでログインするたびにチェックを行うことをおすすめします。ログインが成功したときにOpenIDクレームIDを認識したら、それらを通過させます。そうでなければ、それらのデータベースエントリを作成して登録フォームにリダイレクトします。

シンプルな登録やアトリビュートエクスチェンジなどのOpenID拡張機能を使用することで、ユーザーがOpenIDプロバイダから事前に記入された登録フォームを入手できるように、エクスペリエンスを最適化することができます。

+0

実際、私はそれについて考えても個人情報は必要ありません。私はいつもそれをFacebookスタイルにすることができます(少なくとも英国では)、後で自発的にユーザー名を入力させることができます。ありがとう。ああ、ところで、あなたのブログはOpenIDに関連したことで私を何度も助けてくれました。素晴らしい仕事をありがとう! – j82374823749

+0

最後に、ユーザーが入力したOpenIDを「正規化」してプロバイダにリダイレクトする方法があります。例えば、ユーザは "abcd.myopenid.com"と入力することができますが、そのOpenIDとプロバイダから返されたものは "http://abcd.myopenid.com/"です – j82374823749

+0

私は本当に正規化をしてうれしいです多くの人々がそれを間違えてしまう傾向があるので、セキュリティホールにつながる疑問。 ユーザーが入力した内容を「正規化」することはできますが、それはいかなる意味でも信頼できませんので、保存しないでください。ユーザーアカウントを検索するために保存して使用する*唯一の*識別子は、肯定的なアサーションでプロバイダから返されるクレームIDです。 OpenID仕様はこの点でさらに深くなっていますが、DotNetOpenAuthを使ってこの作業をすべて行い、IAuthenticationResponseオブジェクトからClaimedIdentifierを取得するだけです。 –