Microsoft Live/Connect/Passport の ID を Silverlight/RIA で使用したいと考えています。
これには多くの利点があります。
- 人々にさらに別のユーザー名とパスワードのペアを押し付けることを回避します
- ユーザー アカウントの管理は Passport に完全に委任されており、アプリケーションやその UI の一部を構成するものではありません
- セキュリティと可用性に対する責任は、誰もが嫌う会社に取り除かれます
現在、RIA は ASP.NET のメンバーシップ スタックを使用しており、既定では SQL Server の aspnetdb に対応しています。
私はMembershipProviderの実装を検討しています。ここまでで、適切な参照をセットアップし、MembershipProvider をオーバーライドして、IDE が実装を必要とするすべてのメソッドをスタブできるようにしました。
私のアプリはこれらのサービスを提供していないため、EnablePasswordReset と EnablePasswordRetrieval が false を返すように設定しました。ValidateUser(username, password) が実装され、動作しており、WebClient を使用して Microsoft のサーバーにチェックを委任しています。それでも膨大な数のメソッドが残っており、そのすべてが NotImplementedException を脅かしており、RIA がどのメソッドを呼び出す可能性があるかはわかりません。これは私を導く...
質問
ユーザー アカウント管理が完全に Passport に委任されている場合、実際に実装する必要がある MembershipProvider の量を知っている人はいますか?
認証とアカウント管理が委任されていても、資格情報をキャッシュするのが賢明かもしれないということは頭をよぎります。ID が確立されると、インターネット接続がない場合でも使用できることが望ましいでしょう。たとえば、インターネット接続がない場合でも、Passport 資格情報を使用して Surface RT にログオンできます。
おそらく、SqlMembershipProvider から継承する必要があるため、ValidateUser はユーザー名がローカルで認識されているかどうかを確認し、そうでない場合は Passport で資格情報を試行し、合格した場合は暗黙的にローカル ユーザーを作成し、存在するが資格情報が失敗した場合は、 Passport がパスワードを受け入れた場合はローカル パスワードを更新します。
アイデアが気に入った場合は、入力を求めます。