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

如何在ADFS声明规则中拼接多个SAML属性生成自定义DisplayName

ADFS 自定义组合Display Name声明实现方案

ADFS原生支持通过自定义声明规则语言拼接多AD属性生成新的声明值,不需要调整AD侧数据、也不需要第三方应用做改造,直接在对应信赖方信任的声明规则里新增配置即可,具体操作步骤如下:

  • 定位目标信赖方配置
    打开ADFS管理控制台,依次展开「AD FS」-「信赖方信任」,在右侧列表找到对应第三方应用的信任条目,右键选择「编辑声明颁发策略」。
  • 前置校验
    确认现有已配置的4条属性传递规则正常运行,能正确从AD拉取到Given-Name(名,对应OID 2.5.4.42)、Surname(姓,对应OID 2.5.4.4)、Title(职务)三个属性的值,这是拼接逻辑生效的基础。
  • 新增自定义拼接规则
    在声明颁发策略窗口点击「添加规则」,规则模板选择列表最底部的「使用自定义规则发送声明」,点击下一步:
    1. 规则名称可自定义填写,比如发送组合格式的Display Name声明
    2. 在自定义规则文本框中填入以下规则代码:
# 拉取已存在的名、姓、职务声明值,拼接为指定格式后作为Display Name输出
c1:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/givenname", Issuer == "AD AUTHORITY"]
 && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", Issuer == "AD AUTHORITY"]
 && c3:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/title", Issuer == "AD AUTHORITY"]
 => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname", Value = c1.Value + " " + c2.Value + ", " + c3.Value, Issuer = c1.Issuer, OriginalIssuer = c1.OriginalIssuer, ValueType = c1.ValueType);
  • 适配特殊场景调整
    • 如果你现有配置里Given-Name、Surname、Title对应的传出声明类型不是上述代码里的默认URN,把c1、c2、c3匹配条件里的Type值替换为你实际使用的声明类型即可
    • 如果第三方应用要求Display Name对应的声明标识不是默认的displayname URN,直接把issue语句里的Type值替换为对方文档要求的准确声明URN
    • 如果存在部分用户未填写Title属性、不想输出结尾多余的逗号空格,可以替换为带空值判断的规则版本:
c1:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/givenname", Issuer == "AD AUTHORITY"]
 && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", Issuer == "AD AUTHORITY"]
 && c3:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/title", Issuer == "AD AUTHORITY"]
 => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname", Value = c1.Value + " " + c2.Value + (c3.Value == "" ? "" : ", " + c3.Value), Issuer = c1.Issuer, OriginalIssuer = c1.OriginalIssuer, ValueType = c1.ValueType);
  • 生效验证
    所有规则保存后,走一遍第三方应用的登录流程,抓包查看ADFS返回的令牌内容,确认displayname声明的值符合「名 姓, 职务」的格式即可。如果值异常,先排查对应用户的AD属性是否填写正确,再核对规则里的声明类型和实际配置是否匹配。

注意:新增规则不要修改原有已经正常运行的4条属性传递规则,避免影响第三方应用原有能正常获取的属性字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:24