You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shibboleth检索AD架构未显示OID属性相关问题咨询

问题场景
  • 现有SSO部署链路:服务提供商(SP)对接Shibboleth作为身份提供商(IdP),Shibboleth以Active Directory(AD)为底层用户存储数据源。
  • SP侧已完成属性映射配置,将SAML属性urn:oid:2.16.840.1.113730.3.1.3映射为本地业务属性。
  • 排查中发现的矛盾点:导出AD全量schema对象后,未查询到任何关联该OID的属性;但SP端SAML日志显示,AD原生EmployeeID属性的取值被填充到了上述OID属性下。已知AD原生EmployeeID的AttributeID为1.2.840.113556.1.4.35,二者OID完全不匹配。
  • 已执行的排查操作:通过两条命令导出AD全量架构对象,返回结果均无2.16.840.1.113730.3.1.3相关条目,执行命令如下:
$schemaPath = (Get-ADRootDSE).schemaNamingContext
Get-ADObject -filter * -SearchBase $schemaPath -Properties *|select-object lDAPDisplayName,attributeID
ldifde -f xxx.ldif cn=Schema,CN=Configuration,DC=xxxx,DC=xxxx,DC=edu

核心疑问:AD架构查询结果中不存在2.16.840.1.113730.3.1.3相关条目,为何Shibboleth能正常返回该属性的对应取值?

原因解释

urn:oid:2.16.840.1.113730.3.1.3本身是inetOrgPerson标准定义中employeeNumber属性的官方OID,不属于AD原生schema定义的属性,在AD schema里查不到对应条目是正常现象,属性值的映射转换完全发生在Shibboleth IdP侧,和AD本身的属性定义无关。
具体逻辑如下:

  • Shibboleth IdP默认内置了一套LDAP存储属性到标准SAML OID属性的映射规则,这套规则独立于后端LDAP(即本次部署中的AD)自身的schema OID定义,不需要AD侧存在对应OID的属性就能生效。默认配置下,IdP从AD读取到原生employeeID属性(对应AD schema OID1.2.840.113556.1.4.35)的取值后,会直接按照内置规则将其封装为urn:oid:2.16.840.1.113730.3.1.3属性写入SAML断言返回给SP。
  • 整个属性转换过程发生在Shibboleth生成SAML响应的环节,IdP从AD拉取的始终是AD原生的employeeID属性,不会将转换后的OID属性写回AD,AD侧自然不会存在对应OID的schema条目,导出schema查不到结果完全符合预期。
  • 可以直接登录Shibboleth IdP服务器验证配置:老版本IdP查看conf/attribute-resolver.xml文件,新版本IdP查看conf/attributes/目录下的自定义属性定义文件,能找到明确的映射关系:属性输入源为AD的employeeID,输出的SAML属性名为urn:oid:2.16.840.1.113730.3.1.3。

这类默认映射是Shibboleth对接AD场景的常规配置:AD原生的属性命名、OID分配和标准inetOrgPerson、eduPerson schema规范存在大量差异,Shibboleth内置的默认映射规则就是为了完成这层适配,不需要修改AD侧schema就能输出符合标准的SAML属性。

内容的提问来源于stack exchange,提问作者wibbleman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:36:27