活动目录可逆encryption单点login?

问题:创build和维护数百个学生帐户

我所在的学校在Server 2008上运行Active Directory。每年,我们的学生都必须使用第三方SaaS学校pipe理系统注册帐户。 这在过去创造了很多工作,因为要为学生编写代码,学生经常丢失代码或不知道如何input代码。 之后,设法注册的学生可能会忘记他们的用户名或密码,然后到我(单机系统pipe理员)进行密码重置等操作。

解决scheme1:询问用户密码

今年秋天,我们搬到了一个新的短信,显然不支持任何forms的批量学生注册。 政府计划与每个学生见面,要求他或她input用户名和密码,并手动为他/她创build一个帐户。 我想,如果我们能够整合这两个系统并避免这个问题,那不是很好吗? 当我联系第三方公司时,他们说他们没有集成Active Directory。

我决定创build自己的系统:一个数据库与一个作为学生帐户login脚本运行的程序结合在一起。 它是这样工作的:

  1. 当学生第一次login到Windows时,他们被要求input密码
  2. 密码将根据存储在Active Directory中的密码进行检查
  3. 如果它们匹配,密码将存储在数据库中(密码不能简单地从Active Directory转储到数据库中,因为Active Directory密码是只写的)
  4. 程序的服务器端组件使用存储在程序数据库中的Active Directory密码为第三方公司的学生创build帐户

新问题

现在,问题是,如果用户的密码在Active Directory中重置,它们不会在数据库中更新。 如果用户从工作站更改密码,则密码不会在数据库中更新。 还有数据库本身的安全问题。

解决scheme2:可逆encryption

我注意到活动目录可以用可逆encryption存储密码。 我知道这是没有正式logging的,而且很清楚,即使是写“密码检索”这个短语也带来了“世界末日”的可能性。 但是考虑到这个风险,我不认为我们的服务器有很大的危险性,即使是这样,攻击者也不会对学生的帐户做任何事情。

build议吗?

你会如何推荐我解决这个问题? 有没有一种方法可以放弃我的中间人数据库,并直接使用Active Directory中的信息? 我应该放弃尝试整合系统吗?

任何想法都是值得欢迎的,其中包括关于单点login的想法如何被置于首位的评论。

AD不是作为密码同步工具devise的; 它是一个目录。 从中刮取密码并对其进行解密(如果存储器服务,SAM密码被encryption的方式相同)不是一个可行的生产解决scheme或受支持的scheme。

有很多的身份pipe理解决scheme可以在AD中使用类似于login脚本的API来挂接密码更改并传播它们。 收集这些数据本身并不是一个可以编写脚本的事情; 你需要编写一个密码策略DLL。

正确的做法是使用AD联合身份validation,并让其他应用程序对AD进行身份validation,而不是使用自己的内部数据库。 这听起来并不像它支持这一点,但它可能是一些东西来看看。