我正在编写一个链接到 Active Directory 的应用程序,我需要将 userPrincipalName 存储在数据库表中,但我不知道该字段需要多大。
在 MSDN 上,没有给出长度,在RFC 822中也没有。现在,在我恢复到具有定义长度(sAMAccountName小于 20 个字符,NETBIOS 域名最大为 15 个字符)的 DOMAIN\Username 之前,我想知道是否有人知道标准或实现的限制是什么在 Windows 2003 和 Windows 2008 域中。
我正在编写一个链接到 Active Directory 的应用程序,我需要将 userPrincipalName 存储在数据库表中,但我不知道该字段需要多大。
在 MSDN 上,没有给出长度,在RFC 822中也没有。现在,在我恢复到具有定义长度(sAMAccountName小于 20 个字符,NETBIOS 域名最大为 15 个字符)的 DOMAIN\Username 之前,我想知道是否有人知道标准或实现的限制是什么在 Windows 2003 和 Windows 2008 域中。
在 Win2k3 SP2 上,它允许我创建的最长 userPrincipleName 是 1013 个字符。
今天在尝试为自己回答这个问题时,我偶然发现了一个记录在案的答案。
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 个代码点。
不,不能更改 Active Directory 的登录名中的字符长度。