ActiveDirectoryMembershipProvider и ссылочная целостность - PullRequest
0 голосов
/ 07 декабря 2009

В прошлом, когда я реализовывал свои собственные механизмы аутентификации, у меня была пользовательская таблица со связями с другими таблицами в базе данных MySQL моего приложения. Однако теперь, когда я рассматриваю возможность использования ActiveDirectoryMembershipProvider, я не вижу способа создать аналогичные отношения между пользователями AD и этими таблицами.

Как обычно решить эту проблему? Должен ли я просто принять тот факт, что кто-то потенциально может вставить записи с идентификаторами пользователей, которые не соответствуют существующим пользователям? Я не ожидаю, что это произойдет, но я привык обеспечивать целостность на уровне базы данных.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2009

Я думаю, вам придется отказаться от ссылочной целостности базы данных в этом случае. Просто добавьте код своего приложения на наличие учетной записи Active Directory перед добавлением записи в БД.

Теоретически, некоторые пользователи могут войти вручную и ввести инструкцию SQL INSERT, которая ссылается на недопустимую учетную запись AD. Но на практике, надеюсь, вы не даете куче пользователей прямой доступ к таблицам. Если код приложения - это единственная вещь, которая обращается к БД, код приложения проверяет учетную запись перед вставкой строки, и этот код проверки проверяется, тогда вы должны быть в порядке.

Чтобы быть в безопасности, у вас может быть ночной пакетный процесс, который проверяет все строки в ваших ссылочных таблицах на соответствие Active Directory. Если он обнаружит какие-либо несоответствия, он может отправить вам электронное письмо. Это не предотвратит нарушения целостности, но, по крайней мере, даст вам знать о них.

0 голосов
/ 07 декабря 2009

Я не знаю, в любом случае, вы могли бы сделать это через MySQL. Если бы вы использовали сервер SQL, вы могли бы написать триггер, который вызвал бы C # dll, который бы проверял, что они являются членами AD. Тогда, если бы они не были, вы могли бы заблокировать вставку в БД. Возможно, вы сможете сделать что-то подобное с MySQL, но мои знания MySQL довольно скудны.

...