几个月来,我一直在努力寻找解决方案。 从字面上看,老少皆宜,祈祷开源社区中的某人具有足够的知识,可以为MySQL社区提供一个LDAP连接器以连接到Active Directory。 nothing,没事。 所以我想我会尝试做类似的事情。
我的业务问题如下:
我使用Windows Server 2003上的Active Directory来管理我的小型公司网络,包括Exchange Server电子邮件地址,文件权限等。
我想建立一个客户内部网,该网将连接我内部业务的世界-员工沟通,软件代码等-并通过一个界面让客户可以看到我的身份
实际为他们做的事情,花费了多长时间,花费了多少,同时跟踪与项目有关的所有沟通。 简而言之,是全面的业务管理,项目管理,现金流和付款处理以及版本跟踪和通讯管理。在您问之前,我从来不喜欢自己设定简单的任务。
我停止使用Microsoft SQL Server,因为简而言之,它使我无法接受。 重要时刻。 我发现MSSQL Express Edition不会发送邮件(尽管从Web开发人员的请求来看,MSSQL SP2显然已经改变了这一点,因为小型数据库的最常见用法是在小型Web应用程序中-并让它们自动发送邮件是天哪!)。
所以我写了一段很酷的代码来从MySQL发送邮件(因为没有本机功能),然后我想,如果我可以为MySQL编写此扩展功能,使其具有更好的功能,那为什么不使用它呢?我要建立的超级内联网平台?
仅一个障碍-如何将Active Directory数据与MySQL匹配,而无需为MySQL Enterprise PLUS支付高额的许可费,以及用于LDAP连接的附加解决方案(以及AFAIK,Active Directory集成仅适用于MySQL Cluster Edition-因此需要三台服务器,我绝对没有!)。
因此,我提出了以下理论:
- 向您的Active Directory用户添加一个自定义字段,该字段指定一个布尔值以表明该用户在MySQL数据库架构中具有匹配的用户名,或者是一个字符串值,该字符串值说明在MySQL模式中的用户名。
- 当用户登录到ASP Web应用程序时,代码将使用LDAP查询数据库以查找此自定义字段。 如果找到它,它将知道MySQL数据库中存在(或应该是)匹配的用户。 如果此自定义字段丢失或为空,则用户将从您的Web应用程序启动。
- 当AD用户登录时(如果登录成功,则为状态200),然后我们尝试使用通过LDAP自定义字段指定的用户名连接到MySQL DB模式。
是的-我们测试两件事:
1)他们是
应该访问MySQL DB(LDAP自定义字段)?2)他们已经有MySQL登录了吗?
如果第一个错误,则我们将其踢开,因为它们并不意味着首先存在。
如果第二个为假,则我们知道他们之前尚未登录-因此我们使用SQL语句在主表中创建一个新用户,并为其输入AD密码(这是从HTTP变量“ AUTH_PASSWORD”中获得的)。
那么,当用户更改其AD密码时会发生什么?好的问题-我还没有解决这个问题,但是我认为这是一个自定义脚本,您可以将其写入Active Directory网络上的组策略中,然后该组策略将更改关联的MySQL用户名的密码。 要么,要么让用户在您的Web应用程序中更改其AD密码-这样,您可以编写代码以同时更新两个密码。
笔记:
- 我还没有练习过! 除非您使用至少256位SSL证书或在公司Intranet上使用它, 否则我永远不会在面向Internet的Web应用程序中推荐它。
- 我建议创建一个专业的桌面应用程序以管理允许哪些用户访问MySQL应用程序-最好是您的网络管理员。 使用VB和/或.NET,您可以相当轻松地查询和编辑AD数据。
- 如果您非常熟练使用MySQL权限库结构,则可以为您的Web应用程序创建“配置文件”,类似于“用户”,“高级用户”,“管理员”等。 这样,您可以实现一定程度的委派。
- 在学习ASP.NET时,我想简要指出一下-该解决方案已完全解决,使用了两种身份验证系统-Windows Auth和Forms Auth的混合,并在两者之间混合了变量(我确定我将尽快对此做下一篇文章)。
医务工作者
From: https://bytes.com/topic/asp-classic/insights/795159-mysql-integrated-windows-authentication