【问题标题】:Is there a Maximum Length for userPrincipalName in Active Directory?Active Directory 中的 userPrincipalName 是否有最大长度?
【发布时间】:2008-11-10 14:02:17
【问题描述】:

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

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

【问题讨论】:

    标签: active-directory


    【解决方案1】:

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

    【讨论】:

    • 我的测试显示最大长度为 1024(在 Windows 2012 R2 下)。也许您正在测量 upn 的帐户名部分的长度(在 @domain.com 后缀之前)?
    【解决方案2】:

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

    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。

    在此上下文中,1024 表示八位字节(字节),而不是 Unicode 代码点,因为 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 格式编码(a Unicode 的超集)。服务器和客户端必须准备好 接收任意 Unicode 字符的编码,包括 当前未分配给任何字符集的字符。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 2014-08-03
        • 2014-08-16
        相关资源
        最近更新 更多