0

过去,当我实现我自己的身份验证机制时,我将拥有一个与我的应用程序的MySQL数据库中的其他表有关系的用户表。但是,现在我正在考虑使用ActiveDirectoryMembershipProvider,我无法在AD用户和这些表之间创建类似的关系。ActiveDirectoryMembershipProvider和参照完整性

解决此问题的正常方法是什么?我是否应该接受这样一个事实:有人可能会插入带有与现有用户不符的用户ID的记录?我并不现实地期望发生这种情况,但我习惯于在数据库级别确保完整性。

回答

0

我认为在这种情况下,您将不得不放弃数据库参照完整性。只需让您的应用程序代码在将记录添加到数据库之前检查Active Directory帐户的存在。

从理论上讲,一些用户可以手动进去,键入其中涉及到一个无效AD帐户SQL INSERT语句。但实际上,希望你不会给一堆用户直接访问表。如果应用程序代码是唯一访问数据库的应用程序代码,那么应用程序代码将在插入该行之前验证该帐户,并且验证代码已经过测试,那么您应该可以。

为安全起见,你可以有一个夜间批处理过程,验证您的引用表(S)对Active Directory中的所有行。如果发现任何不一致,它可以发送给你一封电子邮件。这不会阻止完整性违规,但至少它会让你知道它们。

0

无论如何,我不知道你可以通过MySQL来做到这一点。如果你使用的是SQL服务器,你可以编写一个触发器来调用一个C#dll来验证它们是AD成员。那么如果他们不是,你可以阻止插入数据库。你可能可以用MySQL做这样的事情,但我对MySQL的知识很渺茫。

+0

有趣的想法。虽然可能对我的场景有点矫枉过正。我主要想知道其他使用ActiveDirectoryMembershipProvider的人如何做,如果有的话。 – 2009-12-07 15:10:45