Upsert federatedIdentityCredential

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

应用程序agentIdentityBlueprint 创建新的 federatedIdentityCredential 对象(如果不存在),或者更新现有 federatedIdentityCredential 对象的属性。

通过在Microsoft Entra应用程序注册或 agentIdentityBlueprint 与计算平台的标识提供者之间配置信任关系,可以使用该平台颁发的令牌对Microsoft 标识平台进行身份验证,并调用Microsoft生态系统中的 API。 最多可以向应用程序或 agentIdentityBlueprint 添加 20 个对象。

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

应用程序的权限

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Application.ReadWrite.All 不可用。
委派(个人 Microsoft 帐户) Application.ReadWrite.All 不可用。
应用程序 Application.ReadWrite.OwnedBy Application.ReadWrite.All

重要

在具有工作或学校帐户的委托方案中,必须为登录用户分配受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 此作支持以下最低特权角色。

  • 具有默认用户权限的非管理员成员用户 - 对于他们拥有的应用程序
  • 应用程序开发人员 - 对于他们拥有的应用程序
  • 云应用程序管理员
  • 应用程序管理员

agentIdentityBlueprint 的权限

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) AgentIdentityBlueprint.ReadWrite.All Directory.ReadWrite.All
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 AgentIdentityBlueprint.ReadWrite.All Directory.ReadWrite.All

重要

AgentIdentity* 权限当前无法通过Microsoft Entra 管理中心上的 API 权限体验获得同意。 若要使用这些权限,可以通过Microsoft图形 API调用来同意这些权限,如以编程方式授予或撤销 API 权限中所述。 有关这些 权限的详细信息,请参阅管理代理标识 的权限。

使用委托权限时,必须为经过身份验证的用户分配受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 此作支持以下最低特权角色。

  • 代理 ID 管理员。
  • 代理 ID 开发人员 - 创建代理标识蓝图。 具有此角色的主体被分配为其创建的蓝图的所有权,并且可以对该蓝图执行写入作。

HTTP 请求

对于 应用程序

  • 可以使用其 IDappId 对应用程序进行寻址。 idappId 在 Microsoft Entra 管理中心 中的应用注册中分别称为“对象 ID”和“应用程序 (客户端) ID”。
PATCH /applications/{id}/federatedIdentityCredentials(name='{name}')
PATCH /applications(appId='{appId}')/federatedIdentityCredentials(name='{name}')

对于 agentIdentityBlueprint

PATCH /applications/{id}/microsoft.graph.agentIdentityBlueprint/federatedIdentityCredentials(name='{name}')

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
Content-Type application/json. 必需。
Prefer create-if-missing. 对于 upsert 行为是必需的,否则请求被视为更新作。

请求正文

在请求正文中,提供 federatedIdentityCredential 对象的 JSON 表示形式。

下表列出了创建 federatedIdentityCredential 时所需的属性。 请注意, 名称 属性作为请求 URL 的一部分是必需的。

属性 类型 说明
观众 字符串集合 可在外部令牌中显示的受众。 此字段是必需的,对于Microsoft Entra ID,应设置为 api://AzureADTokenExchange 。 它说明了Microsoft 标识平台在传入令牌的aud声明中应接受的内容。 此值表示外部标识提供者中的Microsoft Entra ID,并且跨标识提供者没有固定值 - 可能需要在标识提供者中创建新的应用程序注册,以充当此令牌的受众。 此字段只能接受单个值,限制为 600 个字符。 必填。
claimsMatchingExpression federatedIdentityExpression 可为 Null。 如果未设置, null 则默认为 。允许对指定的声明使用与声明匹配的表达式。 如果定义了 claimsMatchingExpression则 subject 必须为 null。 有关支持的表达式语法和声明的列表,请访问 灵活 FIC 参考
发行 String 外部标识提供者 和 的 URL 必须与要交换的外部令牌的颁发者声明匹配。 颁发者和使用者的值的组合在应用上必须是唯一的。 其限制为 600 个字符。 必填。
subject String 可为 NULL。 如果未设置, null 则默认为 。 外部标识提供者中外部软件工作负载的标识符。 与访问群体值一样,它没有固定的格式,因为每个标识提供者都使用自己的格式-有时是 GUID,有时是冒号分隔的标识符,有时是任意字符串。 此处的值必须与提供给 Microsoft Entra ID 的令牌中的子声明匹配。 其限制为 600 个字符。 颁发者和使用者的组合在应用上必须是唯一的。 如果定义了 subject则 claimsMatchingExpression 必须为 null

响应

如果成功,如果 名称 为的应用程序对象不存在,此方法在 201 Created 响应正文中返回响应代码和新的 federatedIdentityCredential 对象。

如果 已存在名称 为的应用程序对象,此方法将更新 federatedIdentityCredential 对象并返回 204 No Content 响应代码。

示例

示例 1:为应用程序创建新的 federatedIdentityCredential(如果不存在)

以下示例创建 federatedIdentityCredential,因为不存在具有指定 名称 值的 federatedIdentityCredential。

请求

以下示例显示了一个请求。

PATCH https://graph.microsoft.com/beta/applications(uniqueName='app-65278')/federatedIdentityCredentials(name='fic01-app-65278')
Content-Type: application/json

{
    "issuer": "https://login.microsoftonline.com/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/v2.0",
    "subject": "a7d388c3-5e3f-4959-ac7d-786b3383006a",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#applications('bcd7c908-1c4d-4d48-93ee-ff38349a75c8')/federatedIdentityCredentials/$entity",
    "id": "d9b7bf1e-429e-4678-8132-9b00c9846cc4",
    "name": "testing02fic01-app-65278",
    "issuer": "https://login.microsoftonline.com/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/v2.0",
    "subject": "a7d388c3-5e3f-4959-ac7d-786b3383006a",
    "description": null,
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

示例 2:更新应用程序的现有 federatedIdentityCredential

以下示例更新 federatedIdentityCredential,因为存在具有指定 名称 值的 federatedIdentityCredential。

请求

以下示例显示了一个请求。

PATCH https://graph.microsoft.com/beta/applications(uniqueName='app-65278')/federatedIdentityCredentials(name='fic01-app-65278')
Content-Type: application/json
Prefer: create-if-missing

{
    "issuer": "https://login.microsoftonline.com/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/v2.0",
    "subject": "a7d388c3-5e3f-4959-ac7d-786b3383006a",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

响应

以下示例显示了相应的响应。

HTTP/1.1 204 No Content

示例 3:为 agentIdentityBlueprint 创建新的 federatedIdentityCredential(如果不存在)

以下示例为 agentIdentityBlueprint 创建 federatedIdentityCredential,因为不存在具有指定 名称 值的 federatedIdentityCredential。

请求

以下示例显示了一个请求。

PATCH https://graph.microsoft.com/beta/applications(uniqueName='app-65278')/microsoft.graph.agentIdentityBlueprint/federatedIdentityCredentials(name='fic01-app-65278')
Content-Type: application/json

{
    "issuer": "https://login.microsoftonline.com/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/v2.0",
    "subject": "a7d388c3-5e3f-4959-ac7d-786b3383006a",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#applications('bcd7c908-1c4d-4d48-93ee-ff38349a75c8')/federatedIdentityCredentials/$entity",
    "id": "d9b7bf1e-429e-4678-8132-9b00c9846cc4",
    "name": "testing02fic01-app-65278",
    "issuer": "https://login.microsoftonline.com/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/v2.0",
    "subject": "a7d388c3-5e3f-4959-ac7d-786b3383006a",
    "description": null,
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}