是否有可能以编程方式更改MIT Kerberos密码?

首先,我不是一个基础设施人员,我是一个开发人员,所以请原谅,如果我留下重要的信息。 我只需要确定下面是否可能,如果是的话,如何进行。

当用户更改其Active Directory密码时,我想将其同步回到MIT Kerberos。

在AD方面,我发现有一些称为Password Filters的密码filter可以在密码更改时执行。 但是我对Kerberos一无所知。 是否有可能以编程方式更改用户密码? 如果是这样,可以使用C#吗? 还是必须是Java或C ++?

任何帮助表示赞赏。 在此先感谢您的意见。

当用户更改其Active Directory密码时,我想将其同步回到MIT Kerberos。

以目前的forms来说,这个陈述太模糊,实际上只能一个答案。

将Active Directory中的密码发送或“同步”到第三方KDC(密钥分发中心/数据库)不是Kerberos如何工作的一部分。 我也不能想到这样做的好理由。 永远。

Active Directory使用松散一致的数据库复制模型,以确保用户名和密码(以及其他许多)的数据库同步并保持最新,从一个域控制器(KDC)到下一个。 毋庸置疑,MIT Kerberos KDC不能参与复制。 (至less不能以适合专业组织的任何forms进行支持)

完成你所描述的内容在技术上是可行的,尽pipe非常不明智。

是否有可能以编程方式更改用户密码?

当然。 假设您有权这样做,您可以根据需要pipe理性地将Active Directory中的用户密码重置为任何您想要的密码。 您可以使用本地代码或托pipe代码来执行此操作。 这是一个简单的例子:

using (var context = new PrincipalContext( ContextType.Domain )) { using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, userName )) { user.SetPassword( "newpassword" ); // or user.ChangePassword( "oldPassword", "newpassword" ); user.Save(); } } 

关键的区别是“更改”用户的密码需要知道用户的当前密码。 可以在不知道用户的当前密码的情况下“重置”用户的密码,但需要pipe理权限。

但是,不知道与Active Directory中的密码同步到非AD数据库的原始问题有什么关系。

从AD方面看,有一个叫做Password Filters的东西

密码filter只能在本机(C或C ++)代码中开发。 不允许托pipe代码。 密码筛选器是加载到所有域控制器上的Lsass进程中的模块。 如果您计划开发一个,那么您必须非常小心,因为如果在lsass.exe中导致崩溃,则整个域控制器都会closures。 如果其中一个因为你的密码filter而崩溃,那么他们都可能会崩溃,因为他们也都运行相同的密码filter。 如果您的所有域控制器同时崩溃,则整个公司都将closures。

是的,你理论上可以使用密码filter。 密码filter可以logging发生在文本文件或单独数据库中的每个密码更改。 或者它可以通过networking将密码传输到另一台服务器。 你如何select传输和保护密码,完全取决于你。 你最好至less使用TLS。 我发誓,如果你传输或存储密码明文我会来find你在地狱和折磨你自己。

(只是开玩笑的最后一部分。)