Active Directory中的userPrincipalName是否有最大长度?

时间:2008-11-10 14:02:17

标签: active-directory

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

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

否则无法更改Active Directory登录名中的字符长度。

答案 2 :(得分:1)

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

2.381 Attribute 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。

在这种情况下,与Unicode代码点相反,1024表示八位字节(字节),因为omSyntax: 64LDAP Representations中定义为String(Unicode),并引用了描述它的引用RFC 2252 LDAPv3 Attributes 6.10 Directory String如下:

6.10。目录字符串

(1.3.6.1.4.1.1466.115.121.1.15 DESC'目录字符串')

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

由于UTF-8是可变长度编码,这意味着最大字符串长度是很多代码点,您可以将UTF-8编码为1024个八位字节(字节)。即:对于1024个代码点的纯ASCII字符串,对于任何非ASCII字符的字符串来说,其含义都小于1024个代码点。