Какова лучшая схема базы данных для обработки нескольких типов входа при использовании паролей и смарт-карт? - PullRequest
0 голосов
/ 28 января 2019

Я видел много вопросов, касающихся нескольких учетных записей (например, Facebook, OAuth, Password и т. Д.) И как их обрабатывать при проектировании базы данных, однако я не уверен, как лучше всего удовлетворить мои требования.

У меня есть таблица «Пользователи», каждый из которых может войти в мою серверную систему (веб-приложение), ИЛИ приложение для конечных пользователей, использующее формы для выигрыша.

Когда пользователь зарегистрирован, им может быть предоставлен пользователь.Имя и пароль, или смарт-карта, или и то, и другое.

Некоторые пользователи могут затем использовать свою смарт-карту для входа в мою серверную систему из клиентского настольного приложения, а пользователи с паролем могут войти в систему через Интернет.

Теперь, если у некоторых пользователей есть и пароль, и возможность смарт-карты, а у некоторых есть только пароль ИЛИ опция смарт-карты.

Кроме того, у каждого пользователя есть роль (администратор, пользователь и т. Д.) Инабор из 1x или более кодов аутентификации (это коды доступа, которые используются при входе в систему со смарт-картой).

Поэтому я подумал об использовании следующего подхода.

  1. Таблица пользователей
  2. Таблица счетов
  3. Таблица смарт-карт
  4. Таблица паролей

Таблица пользователей содержит информацию о пользователе (имя, адрес электронной почты и т. Д.)

Ссылки на таблицу учетных записей с таблицей пользователей показывают, какой тип учетной записи у них есть, а также ссылки на таблицы смарт-карт и паролей, поэтому каждая учетная запись пользователя может иметь одну или несколько смарт-карт и одну или несколькопароли и т. д.

Моя проблема с вышеизложенным означала бы, что у пользователя есть только пароль, запись для смарт-карты будет NULL и т. д. Это нормально?

Есть ли лучшеспособ справиться с этим?

В конце концов, не у всех пользователей будут все способы входа в систему, а у некоторых будет, поэтому я не мог придумать ни одного дизайна, который мог бы избежать значений NULL где-нибудь втаблицы.

Спасибо

...