我有一个遗留的。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,那么这就是设置密码所需要的全部。没有必要设置这些选项。