自分のサイトでOpenID認証を実装しようとしています。ここではシナリオです:
私は、ユーザーがちょうどのOpenID(ユーザがちょうどOpenIDプロバイダを訪問して確認していない得ることができ、電子メール、パスワードを使用してカスタムアカウントを作成する必要が。)、 を使用して必要なOpenID情報を保存する
- ログインできるようにしたいです
- 電子メール/パスワードを介して(ユーザーがフォームに記入してサイトに登録した)
- 自分のアカウントにオープンIDを添付します(openids + 1アカウントのメール)。
私はオープンIDにどのような資格情報を保存すべきか分かりません。 DBスキーマについてはわかりません。ここではデータベーススキーマです:
Table: Users
UserId => PK
... => Custom info. Not related to authentication.
Table: Authentication
AuthenticationId => PK
LoginId => (when custom site membership => email address) (when openId => openid unique address)
UserId => FK to Users.
Provider =>(when custom site membership => "CUSTOM") (when openId => openid provider address)
Password => filled when using custom membership. empty when using open id.
今、ユーザーがOpenIDを/カスタムメンバーシップを使用することによって、私はちょうど認証テーブルを見て、資格情報を探し、適切なユーザーを取得するかどうか、ログインすると。ユーザーがいない場合は、新しいユーザーを作成し、認証テーブルにエントリを追加します。
主な質問は:
Provider
とLoginId
OpenID認証を格納するための十分な(これらのフィールドに格納されているかを確認するには上記のコメントを参照)を格納していますか?追加のデータを保存して、ユーザーが戻ったときに私の保存データに基づいて認証できるようにする必要がありますか?これを実装する他の(より効率的な)アプローチをお勧めしますか?
ありがとうございます。
'Provider'カラムを削除し、' bit'タイプの 'IsOpenId'を追加しました。 (openidとcustomのための)認証テーブルを分ける賛成は何ですか[openid認証のために不要な 'Password'カラムを削除する代わりに? – Kamyar
私はあなたのために私の答えを強化しました。 –
パーフェクト!ありがとう。 – Kamyar