ActiveDirectoryMembershipProvider和参照完整性

时间:2009-12-07 14:45:58

标签: asp.net mysql active-directory asp.net-membership referential-integrity

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

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

2 个答案:

答案 0 :(得分:0)

我不知道你能通过MySQL做到这一点。如果您使用的是SQL Server,则可以编写一个触发器来调用C#dll来验证它们是否为AD成员。然后,如果他们不是,你可以阻止插入数据库。你可能可以用MySQL做这样的事情,但我对MySQL的了解非常渺茫。

答案 1 :(得分:0)

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

理论上,某些用户可以手动进入并键入引用无效AD帐户的SQL INSERT语句。但在实践中,希望你不是给一堆用户直接表访问。如果应用程序代码是唯一访问数据库的代码,应用程序代码在插入行之前验证帐户,并且测试验证代码,那么您应该没问题。

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