我正在嘗試爲我的網站實施OpenID身份驗證。這裏的情景:
我希望用戶能夠只使用OpenID的存儲必要的OpenID信息
- 登錄(用戶可以只獲得通過訪問OpenID提供商驗證無需創建電子郵件地址和密碼定製的賬戶),
- 通過電子郵件/密碼(用戶通過填寫表格在網站上註冊)
- 將開放標識附加到他/她的帳戶(openid +爲一個帳戶的電子郵件)。
現在我不知道我應該存儲什麼憑證來存放開放標識。並不確定數據庫架構。這裏的數據庫模式:當用戶登錄時,無論是使用OpenID /自定義成員資格
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.
現在,我只看驗證表格,並查找證書並獲得相應的用戶。如果沒有用戶存在,我創建一個新用戶並在認證表中添加一個條目。
主要問題:是存儲
Provider
和LoginId
(見上述意見,看看有什麼被存儲在這些領域)足夠的存儲OpenID認證的?我是否應該存儲任何其他數據,以便在用戶返回時我可以根據我保存的數據對他/她進行身份驗證?您是否建議使用其他更高效的方法來執行此操作?
謝謝。
我刪除了'Provider'列,並添加了'bit'類型的'IsOpenId'。什麼是分離認證表(用於openid和定製)的優點[而不是去除不必要的'密碼'列openid認證]? – Kamyar
我加強了我對你的回答。 –
完美!謝謝。 – Kamyar