【问题标题】:ActiveDirectoryMembershipProvider and referential integrityActiveDirectoryMembershipProvider 和参照完整性
【发布时间】:2009-12-07 14:45:58
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 有趣的想法。不过,对于我的场景来说,这可能有点矫枉过正。我主要想知道使用 ActiveDirectoryMembershipProvider 的其他人对此做了什么,如果有的话。
      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2010-09-26
      • 2013-09-14
      相关资源
      最近更新 更多