我们有一个用于接收新客户的 C# Web 应用程序,最后用户输入一个密码值,当我们调用 userPrincipal .NET 方法来创建他们的用户对象时,我们将其应用于他们的新 Active Directory 用户对象。我们的代码还在我们的 Azure AD 租户中创建了一个帐户,并为 Azure AD Connect 设置了正确的值 (ImmutableID),以便在下一次通过时导入和加入这两个帐户(30 分钟的 AADC 循环等待时间不符合我们的要求)。我们将密码哈希从本地 AD 同步到 Azure AD,我们在 AD 中启用了密码复杂性,我们在 Azure AD 中启用并添加了我们自己的词汇表到禁用词(子字符串)工具。我们正在考虑在我们的 DC 上安装 MS“密码保护”服务,该服务还将在本地更新密码时应用 Azure 禁止字词检查。
为了简短起见,我们真的很想根据所有密码策略预先验证用户输入的密码,包括禁止词列表(假设我们在所有本地 DC 上安装了该服务),但我们找不到.NET 中的一种方法或服务,它将预先验证建议的密码是否通过了所有活动密码策略。我们的用户倾向于使用 Azure 自助服务密码重置,以后很少更改本地密码。但是在 C# 编程中,您似乎必须实际请求添加新的 AD 用户名才能让 .NET 从 .NET 中的 userPrincipal 方法评估密码值和返回信号状态
任何人都有任何棘手的想法,如何在没有添加实际新用户的上下文的情况下根据 AD 密码策略预先验证密码,但假设将提交的 sAMAccountName 尚不存在于 Active Directory 中?我们考虑为唯一的临时用户名创建一个具有 GUID 哈希或 base64 的临时 AD 用户,从 .NET 获取任何密码评估反馈,然后删除临时用户对象,但这只是检查密码的大量开销,会触发复制并生成 beaucoup EventViewer 和 AD-AuditPlus 日志事件,大量垃圾网络流量。谢谢你。