用户安全特性

除了用户对象的命名属性(如 objectGUIDobjectSidcndistinguishedName 等)外,还有其他用于登录、网络访问和访问控制的安全属性。 这些属性由 Windows 安全系统使用,可通过 Active Directory 用户和计算机管理单元来查看和管理。

accountExpires

accountExpires 属性指定帐户的过期时间。 此值会以一个大整数来存储,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。 TIMEQ_FOREVER(在 Lmaccess.h 中定义)的值表示帐户永不过期。

altSecurityIdentities

altSecurityIdentities 属性是一个多值属性,其中包含 X.509 证书或外部 Kerberos 用户帐户与该用户的映射,以便进行身份验证。 包括公钥验证包和 Kerberos 在内的各种安全软件包会在用户出示证书、UNIX Kerberos 票证等其他识别形式时使用这些数据来验证用户身份。 根据相应的用户帐户生成 Windows 2000 令牌,这样它们就能访问系统资源。

对于 X.509 证书,值应应该是由外部公共认证机构颁发的 509v3 证书中的颁发者和使用者名称,这些名称与用于查找身份验证帐户的用户帐户相对应。 SSL (Schannel) 包使用以下语法:X509:<somecertinfotype>somecertinfo。 例如,以下值指定了颁发者 DN”<I>“,其 DN 为”C=US,O=InternetCA,CN=APublicCertificateAuthority“,以及使用者 DN”<S>“,其 DN 为“C=US,O=Fabrikam,OU=Sales,CN=Jeff Smith”。

X509:<I>C=US,O=InternetCA,CN=APublicCertificateAuthority<S>C=US,O=Fabrikam,OU=Sales,CN=Jeff Smith

请注意,支持”<S>“或”<I>“以及”<S>“。 不支持仅使用“<I>”。 应用程序不应修改“<I>”或“<S>”中的值,因为不支持部分 DN 匹配。

对于外部 Kerberos 帐户,值应为 Kerberos 帐户名。 Kerberos 包使用以下语法:Kerberos:MITaccountname 例如,以下是 Fabrikam.com 帐户的值:

Kerberos:Jeff.Smith@Fabrikam.com

badPasswordTime

非复制。 badPasswordTime 属性指定用户上次尝试使用错误密码登录帐户的时间。 此值会以一个大整数来存储,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。 该属性在域中的每个域控制器上单独维护。 如果值为零,则表示上次密码错误的时间未知。 要获得域中用户上次密码错误时间的准确值,则必须查询域中的每个域控制器并使用最大值。

badPwdCount

非复制。 badPwdCount 属性指定用户尝试使用错误密码登录帐户的次数。 该属性在域中的每个域控制器上单独维护。 0 值表示值未知。 要获得域中用户尝试密码错误总数的准确值,必须查询域中的每个域控制器,并使用这些值的总和。

codePage

codePage 属性指定用户所选语言的代码页。 Windows 不使用此值。

countryCode

countryCode 属性指定用户语言的国家/地区代码。 Windows 不使用此值。

homeDirectory

homeDirectory 属性指定用户主目录的路径。 字符串可以为 null。

如果设置了 homeDrive 并指定了驱动器盘符,则 homeDirectory 应为 UNC 路径。 路径必须是 \\server\share\directory 形式的网络 UNC 路径。 此值可以是空字符串。

如果未设置 homeDrive,则 homeDirectory 应为本地路径,例如 C:\mylocaldir。

homeDrive

homeDrive 属性指定映射到由 homeDirectory 所指定 UNC 路径的驱动器盘符。 驱动器盘符必须采用下列形式来指定:

<drive letter>:

其中,“<驱动器盘符>”是要映射的驱动器盘符。 例如:

Z:

如果未设置此属性,homeDirectory 应为本地路径,例如 C:\mylocaldir。

lastLogoff

非复制。 lastLogoff 属性指定上一次注销的时间。 此值会以一个大整数来存储,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。 此大整数的上部分对应 FILETIME 结构中的 dwHighDateTime 成员,而下部分对应 FILETIME 结构中的 dwLowDateTime 成员。 该属性在域中的每个域控制器上单独维护。 值为零则表示上一次注销时间未知。 要获得用户在域中上一次注销时间的准确值,则必须查询域中的每个域控制器并使用最大值。

lastLogon

非复制。 lastLogon 属性指定上一次登录的时间。 此值会以一个大整数来存储,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。 此大整数的上部分对应 FILETIME 结构中的 dwHighDateTime 成员,而下部分对应 FILETIME 结构中的 dwLowDateTime 成员。 该属性在域中的每个域控制器上单独维护。 值为零则表示上一次登录时间未知。 要获得用户在域中上一次登录时间的准确值,则必须查询域中的每个域控制器并使用最大值。

lmPwdHistory

lmPwdHistory 属性是 LAN 管理器 (LM) 单向格式 (OWF) 中的用户密码历史记录。 LM OWF 用于与 LAN Manager 2.x 客户端、Windows 95 和 Windows 98 实现兼容性。 此属性仅由操作系统使用。 请注意,无法从密码的 OWF 形式中派生出明文密码。

logonCount

非复制。 logonCount 属性计算用户尝试登录此帐户的成功次数。 该属性在域中的每个域控制器上维护。 0 值表示值未知。 要获得域中用户成功登录尝试总次数的准确值,必须查询域中的每个域控制器,并使用这些值的总和。

mail

mail 属性是一个单值属性,其中包含用户的 SMTP 地址,例如 jeff@Fabrikam.com

maxStorage

maxStorage 属性指定用户可使用的最大硬盘空间。 使用 USER_MAXSTORAGE_UNLIMITED(在 Lmaccess.h 中定义)值以使用所有可用磁盘空间。

memberOf

memberOf 属性是一个多值属性,包含用户是其直接成员的组,但主组除外,主组由 primaryGroupId 表示。 组成员身份取决于从中检索此属性的域控制器 (DC):

  • 在包含用户的域的 DC 中,用户的 memberOf 相对于该域中组的成员身份而言是完整的;但 memberOf 不包含用户在其他域的域本地和全局组中的成员身份。
  • 在 GC 服务器上,用户的 memberOf 对于所有通用组的成员身份而言是完整的。

如果 DC 的这两个条件均为 true,则两组数据都包含在 memberOf

请注意,此属性列出的是成员属性中包含用户的组,而未包含嵌套前置任务的递归列表。 例如,如果用户 O 是组 C 和组 B 的成员,并且组 B 嵌套在组 A 中,那么用户 O 的 memberOf 属性将列出组 C 和组 B,但不会列出组 A。

该属性不会存储 - 它是一个计算的反向链接属性。

ntPwdHistory

ntPwdHistory 属性是 Windows NT 单向格式 (OWF) 的用户密码历史记录。 Windows 使用 Windows NT OWF。 此属性仅由操作系统使用。 请注意,无法从密码的 OWF 形式中反向派生出明文密码。

otherMailbox

otherMailbox 属性是一个多值属性,包含表单中的其他附加邮件地址,例如 CCMAIL: JeffSmith

PasswordExpirationDate

密码过期日期不是用户对象的属性。 该值是根据用户的 pwdLastSet 和用户域的 maxPwdAge 的总和计算得出的。 要获取密码到期日期,请获取 IADsUser.PasswordExpirationDate 属性。 不能修改用户的这一属性;而应设置 IADsDomain.MaxPasswordAge 属性来更改域的设置。

primaryGroupId

primaryGroupId 属性是一个单值属性,其中包含作为对象主组的组的 primaryGroupTokenmemberOf 属性中不包括对象的主组。 例如,默认情况下,用户对象的主组是“域用户”组的 primaryGroupToken,但“域用户”组并非用户对象 memberOf 属性的一部分。

profilePath

profilePath 属性指定用户配置文件的路径。 此值可以是空字符串、本地绝对路径或 UNC 路径。

pwdLastSet

pwdLastSet 属性指定上次更改密码的时间。 此值会以一个大整数来存储,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。

系统使用此属性的值和包含用户对象的域的 maxPwdAge 属性来计算密码到期日期。 即用户的 pwdLastSet 和用户域的 maxPwdAge 的总和。

此属性控制用户下次登录时是否必须更改密码。 如果 pwdLastSet 为零(即默认值),则用户必须在下次登录时更改密码。 值 -1 表示不要求用户在下次登录时更改密码。 用户设置密码后,系统会将此值设为 -1

sAMAccountType

sAMAccountType 属性指定了一个表示帐户类型的整数。 此值由操作系统在创建对象时设置。

scriptPath

scriptPath 属性指定用户登录脚本、.cmd、.exe 或 .bat 文件的路径。 字符串可以为 null。

tokenGroups

tokenGroups 属性是一个多值属性,包含用户作为直接和间接成员的所有组的 SID,包括主组的 SID。 只有当存在全局目录 (GC) 服务器时才能检索此属性,以便检索传递反向成员身份。

请注意,此属性列出了在成员属性中包含用户的组,以及在成员属性中包含这些组的组,以此类推。 例如,如果用户 O 是组 C 和组 B 的成员,并且组 B 嵌套在组 A 中,那么用户 O 的 tokenGroups 属性将列出组 C、组 B 和组 A。

tokenGroups 属性是一个非常有用的属性,只需两次 LDAP 查询即可获得组成员列表:第一次是从用户的 tokenGroups 属性中获取组 SID 列表,第二次是使用该 SID 列表获取每个组的名称属性。 它避免了多次搜索以扩展 primaryGroupId 属性和递归扩展 memberOf 属性的需要。

unicodePwd

unicodePwd 属性是用户密码。

要设置用户密码,如果脚本或应用程序允许用户更改自己的密码,请使用 IADsUser.ChangePassword 方法;如果脚本或应用程序允许管理员重置密码,请使用 IADsUser.SetPassword 方法。

Windows NT 单向格式 (OWF) 的用户密码。 Windows 使用 Windows NT OWF。 此属性仅由操作系统使用。 请注意,无法从密码的 OWF 形式中反向派生出明文密码。

userAccountControl

userAccountControl 属性指定了用于控制用户密码、锁定、禁用/启用、脚本和主目录行为的标志。 此属性还包含一个标志,用于指示对象的帐户类型。 用户对象通常已设置 UF_NORMAL_ACCOUNT。

Lmaccess.h 中定义了以下标志。

标记 说明
UF_SCRIPT 已执行的登录脚本。 必须为 LAN Manager 2.0 或 Windows NT 设置此值。
UF_ACCOUNTDISABLE 此用户帐户被禁用。
UF_HOMEDIR_REQUIRED 主目录是必需的。 在 Windows NT 和 Windows 2000 中,此值将被忽略。
UF_PASSWD_NOTREQD 不需要密码。
UF_PASSWD_CANT_CHANGE 用户无法更改密码。
UF_LOCKOUT 帐户当前已锁定。 清除此值可解锁先前锁定的帐户。 此值不能用于锁定先前锁定的帐户。
UF_DONT_EXPIRE_PASSWD 代表在帐户上永不过期的密码。

以下标志描述了帐户类型。 只能设置一个值。 无法更改帐户类型。

标记 说明
UF_NORMAL_ACCOUNT 这是表示典型用户的默认帐户类型。
UF_TEMP_DUPLICATE_ACCOUNT 这是主帐户位于另一个域中的用户的帐户。 此帐户允许用户访问该域,但无法访问信任该域的任何域。 用户管理器将这种帐户类型称为本地用户帐户。
UF_WORKSTATION_TRUST_ACCOUNT 这是作为该域的成员的 Windows NT Workstation/Windows 2000 Professional 或 Windows NT Server/Windows 2000 Server 的计算机帐户。
UF_SERVER_TRUST_ACCOUNT 这是作为此域成员的 Windows NT 备份域控制器的计算机帐户。
UF_INTERDOMAIN_TRUST_ACCOUNT 这是信任其他域的 Windows NT 域的帐户的许可。

userCertificate

userCertificate 属性是一个多值属性,其中包含颁发给用户的 DER 编码 X509v3 证书。 请注意,此属性包含由 Microsoft 证书服务颁发给此用户的公钥证书。

userSharedFolder

userSharedFolder 属性指定用户共享文档文件夹的 UNC 路径。 路径必须是 \\server\share\directory 形式的网络 UNC 路径。 此值可以是空字符串。

userWorkstations

userWorkstations 属性是一个单值属性,其中包含用户可以登录的工作站的 NetBIOS 名称。 每个 NetBIOS 名称之间以逗号隔开。

如果未设置任何值,则表示没有限制。 要禁止所有工作站登录此帐户,请在 userAccountControl 属性中设置 UF_ACCOUNTDISABLE 值(在 Lmaccess.h 中定义)。