用户安全属性

除了为用户对象命名属性,例如,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“C=US,O=InternetCA,CN=APublicCertificateAuthority”指定颁发者 DN“<I>”,并将主题 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>”或“<我>”和“<S>”。 不支持只有“<我>”。 应用程序不应修改“<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 路径。 此值可以是 null 字符串。

如果未设置 homeDrivehomeDirectory 应是本地路径,例如 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 值指示该值未知。 若要获取域中用户成功登录尝试次数的准确值,必须查询域中的每个域控制器,并且应使用值之和。

邮件

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

maxStorage

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

memberOf

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

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

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

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

此属性未存储-它是计算的后链接属性。

ntPwdHistory

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

otherMailbox

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

PasswordExpirationDate

密码过期日期不是用户对象的属性。 它是基于用户域的 pwdLastSetmaxPwdAge 的总和计算值。 若要获取密码过期日期,请获取 IADsUser.PasswordExpirationDate 属性。 不能修改用户的此属性;请改为设置 IADsDomain.MaxPasswordAge 属性以更改域的设置。

primaryGroupId

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

profilePath

profilePath 属性指定用户配置文件的路径。 此值可以是 null 字符串、本地绝对路径或 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 中,则 tokenGroups 用户 O 的属性将列出组 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 工作站/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 路径。 此值可以是 null 字符串。

userWorkstations

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

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