6

我正在编写一个链接到 Active Directory 的应用程序,我需要将 userPrincipalName 存储在数据库表中,但我不知道该字段需要多大。

在 MSDN 上,没有给出长度,在RFC 822中也没有。现在,在我恢复到具有定义长度(sAMAccountName小于 20 个字符,NETBIOS 域名最大为 15 个字符)的 DOMAIN\Username 之前,我想知道是否有人知道标准或实现的限制是什么在 Windows 2003 和 Windows 2008 域中。

4

3 回答 3

9

在 Win2k3 SP2 上,它允许我创建的最长 userPrincipleName 是 1013 个字符。

于 2008-11-27T06:54:26.237 回答
1

今天在尝试为自己回答这个问题时,我偶然发现了一个记录在案的答案。

2.381 属性 userPrincipalName按以下方式定义 userPrincipalName:

 cn: User-Principal-Name
 ldapDisplayName: userPrincipalName
 attributeId: 1.2.840.113556.1.4.656
 attributeSyntax: 2.5.5.12
 omSyntax: 64
 isSingleValued: TRUE
 schemaIdGuid: 28630ebb-41d5-11d1-a9c1-0000f80367c1
 systemOnly: FALSE
 searchFlags: fATTINDEX
 rangeUpper: 1024
 attributeSecurityGuid: e48d0154-bcf8-11d1-8702-00c04fb96050
 isMemberOfPartialAttributeSet: TRUE
 systemFlags: FLAG_SCHEMA_BASE_OBJECT | FLAG_ATTR_REQ_PARTIAL_SET_MEMBER

这根据rangeUpper属性定义将最大长度指定为 1024。

在此上下文中,1024 表示八位字节(字节),而不是 Unicode 代码点,如LDAP 表示和参考RFC 2252 LDAPv3 属性 6.10 目录字符串omSyntax: 64中定义的那样String(Unicode),将其描述如下:

6.10。目录字符串

(1.3.6.1.4.1.1466.115.121.1.15 DESC'目录字符串')

此语法中的字符串以 ISO 10646(Unicode 的超集)的 UTF-8 形式编码。服务器和客户端必须准备好接收任意 Unicode 字符的编码,包括当前未分配给任何字符集的字符。

由于 UTF-8 是一种可变长度编码,这意味着最大字符串长度是您可以将 UTF-8 编码为 1024 个八位字节(字节)的许多代码点。即:对于 1024 个代码点的纯 ASCII 字符串,对于具有非 ASCII 字符的任何内容,这意味着少于 1024 个代码点。

于 2020-11-16T23:03:50.223 回答
0

不,不能更改 Active Directory 的登录名中的字符长度。

于 2011-08-05T09:19:17.037 回答