在System.DirectoryServices.Protocols中,Invoke("SetOption")的等价物是什么?



我有一个遗留的。net库,做以下事情:

const int adsOptionPasswordMethod = 7;
const int adsPasswordEncodeClear = 0;
user.Invoke ("SetOption", new object[] { adsOptionPasswordMethod, adsPasswordEncodeClear });

我现在正在使用。net 7中的System.DirectoryServices.Protocols,我想做这样的事情:

const int adsOptionPasswordMethod = 7;
const int adsPasswordEncodeClear = 0;
var setOptionsAccountControl = new DirectoryAttributeModification
{
Operation = DirectoryAttributeOperation.Replace,
Name = "SetOption",
};
modifyUserAccountControl.Add(adsOptionPasswordMethod);
modifyUserAccountControl.Add(adsPasswordEncodeClear);

但以上似乎是错误的。

根据文档,ADS_PASSWORD_ENCODE_CLEAR的值是1,但旧代码使用的是0,这是ADS_PASSWORD_ENCODE_REQUIRE_SSL的值,这需要使用SSL

所以如果旧的代码工作,那么它必须已经通过SSL(端口636)连接。

unicodePwd属性(密码的真实属性,尽管userPassword也可以工作)的文档说:

服务器要求客户端与DC之间有128位(或更高)SSL/tls加密连接,以便修改此属性。

如果它已经使用SSL,那么这就是设置密码所需要的全部。没有必要设置这些选项。

最新更新