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

如何在Entra ID(Azure)的SAML令牌中添加IsManaged受限声明

解决方案:在Entra ID SAML令牌中添加设备托管状态声明

一、直接添加受限声明的可行流程

你提到的http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged属于Entra ID的受限声明集合,无法通过常规UI配置添加,但可通过Microsoft Graph API实现:

  1. 获取目标应用的服务主体ID
    调用Graph API查询Workday对应的服务主体:

    GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '你的Workday应用名称'
    

    提取返回结果中的id字段(服务主体ID)。

  2. 创建自定义声明映射策略
    若没有现有策略,先调用POST /policies/claimsMappingPolicies创建新策略,请求体示例:

    {
      "definition": [
        "{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\",\"ClaimsSchema\":[{\"Source\":\"device\",\"SourceName\":\"isManaged\",\"Name\":\"http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged\",\"SamlClaimType\":\"http://schemas.microsoft.com/2012/01/devicecontext/claims/ismanaged\"}]}}"
      ],
      "displayName": "Workday设备托管声明策略",
      "isOrganizationDefault": false
    }
    

    保存返回的策略ID。

  3. 绑定策略到Workday服务主体
    调用PATCH API将策略关联到目标应用:

    PATCH https://graph.microsoft.com/v1.0/servicePrincipals/{服务主体ID}
    Content-Type: application/json
    
    {
      "claimsMappingPolicies@odata.bind": [
        "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/{自定义策略ID}"
      ]
    }
    

二、替代方案:间接传递设备托管状态

如果不想使用Graph API,可通过以下两种方式实现:

1. 用户自定义属性映射

  • 提前创建用户自定义扩展属性(如extension_xxxxxx_isManaged),通过Entra ID设备同步或Graph API,将设备的isManaged值同步到该用户属性。
  • 在Entra ID的Workday应用「用户属性和声明」页面,添加自定义声明,将该用户属性映射到Workday要求的SAML属性名称(例如Workday文档指定的IDP_ManagedDevice)。

2. 声明转换规则

  • 在Entra ID企业应用的「用户属性和声明」页面,点击「添加转换声明」。
  • 选择规则类型为「转换现有声明」,基于deviceId等设备相关声明,通过逻辑判断输出设备托管状态(如true/false),映射为Workday需要的属性。

注意事项

  • 仅当用户从Entra ID托管/注册设备登录时,才能获取有效的isManaged值。
  • 配置完成后,使用SAML跟踪工具验证令牌中是否包含目标声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 10:37:27