0

ユーザーの詳細をパスワードとともに保存するテーブルがUsersあり、アプリケーションの認証はこれでうまく機能しています。

ただし、システムに統合FacebookしてGoogleログインしたいので、関連するスキーマの変更についてアドバイスしてください。

CREATE TABLE dbo.Users(
    UserId int IDENTITY(1、1)PRIMARY KEY、
    UserTypeId int、-Admin = 1、End User = 2(これにはマスターテーブルがありますが、簡単にするためにここでは削除します)
    UserName nvarchar(16)NOT NULL UNIQUE、
    UserPassword nvarchar(16)、
    FirstName nvarchar(64)、
    LastName nvarchar(64)、
    DateOfBirth日付、
    性別char(1)、
    PhoneNumber nvarchar(16)、
    メールnvarchar(128)UNIQUE、
    IsActiveビット、
    UpdateTime日時のデフォルトCURRENT_TIMESTAMP)

私が考えていることは次
のとおりです。1)ユーザーがFacebookまたはGoogleから認証されると、アプリケーションはクレーム(emailId)を持ちます。2)
アプリケーションはUsersテーブルにemailIdが存在することを検証し、存在する場合はログインを許可します。

Q1>では、これにはユーザーテーブルの既存の行の更新が必要ですか?
Q2>ユーザーレコードが存在しない場合(emailIdクレームレコードに基づく)、usersテーブルに新しいレコードを追加する必要があると思いますか?
Q3>追加の場合:ユーザー名とパスワードの値はどうなりますか?
Q4>ユーザー(追加したレコード)はFacebookにログインせずに通常のログインができますか?

ありがとう。

4

1 に答える 1

2

OpenIDログインを受け入れるには、ユーザーのOpenID-URLを受け入れて保存する必要があります。このURLは、電子メールアドレスと同じようにユーザーを識別します。

Q1:依存:同じユーザーに対してOpenIDログインと通常のログインの両方を許可する場合は、テーブルに別の列を追加する必要があります。混合ログインを許可しない場合は、Email列を使用してOpenIDURLを保存できます。

Q2:はい、新しいOpenID-URLが表示された場合は、不明なメールアドレスと同じように処理してください

Q3:ユーザーにユーザー名を選択するように依頼する必要があります-現在のユーザーにも同じことをしていると思います。同じユーザーに両方のログインを許可する場合は、ユーザーにパスワードの設定を依頼する必要があります。そうしないと、OpenIDプロバイダーを介してのみログインできます。

Q4:ユーザー名とパスワードを要求した場合のみ(Q3を参照)

同じユーザーにOpenIDを介したログインを許可し、従来のユーザー名/パスワードを使用すると、潜在的なセキュリティ問題が発生することに注意してください。ユーザーは、パスワードの設定とFacebook(またはGoogle)パスワードの入力を求めていることを理解できない場合があります。または、どこでも同じパスワードを気にせずに使用する可能性があります。彼らがそうし、あなたのデータベースがパスワードを適切に暗号化しない場合、あなたのデータベースはFacebookの名前暗号化されていないパスワードを保存します...あなたのサイトでたった10%が同じパスワードを使用したとしても-彼らがそれで何ができるか想像してみてください。

于 2013-03-09T18:15:06.247 に答える