Я пытаюсь реализовать аутентификацию 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.
Теперь, когда пользователь входит в систему, независимо от того, используется ли членство в openid / custom, я просто смотрю на таблицу аутентификации, ищу учетные данные и получаю подходящего пользователя. Если пользователей нет, я создаю нового пользователя и добавляю запись в таблицу аутентификации.
Главный вопрос: достаточно ли хранения Provider
и LoginId
(см. Комментарии выше, чтобы узнать, что хранится в этих полях) для хранения аутентификации openid? Должен ли я хранить какие-либо дополнительные данные, чтобы при возвращении пользователя я мог аутентифицировать его / ее на основе моих сохраненных данных?
Вы предлагаете какой-либо другой (более эффективный) подход для реализации этого?
Спасибо.