Поделиться через


Upsert federatedIdentityCredential

Пространство имен: microsoft.graph

Важно!

API версии /beta в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.

Создайте новый объект federatedIdentityCredential для приложения или agentIdentityBlueprint , если он не существует, или обновите свойства существующего объекта federatedIdentityCredential .

Настроив отношение доверия между регистрацией приложения Microsoft Entra или agentIdentityBlueprint и поставщиком удостоверений для вычислительной платформы, вы можете использовать маркеры, выданные этой платформой, для проверки подлинности с помощью платформа удостоверений Майкрософт и вызова API в экосистеме Майкрософт. В приложение или agentIdentityBlueprint можно добавить не более 20 объектов.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Разрешения для приложения

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) Application.ReadWrite.All Недоступно.
Делегированные (личная учетная запись Майкрософт) Application.ReadWrite.All Недоступно.
Приложение Application.ReadWrite.OwnedBy Application.ReadWrite.All

Важно!

В делегированных сценариях с рабочими или учебными учетными записями вошедшему пользователю должна быть назначена поддерживаемая роль Microsoft Entra или настраиваемая роль с разрешением поддерживаемой роли. Для этой операции поддерживаются следующие роли с наименьшими привилегиями.

  • Пользователь, не являющийся членом-администратором, с разрешениями пользователя по умолчанию — для приложений, которыми он владеет
  • Разработчик приложений — для приложений, владеемых им
  • Администратор облачных приложений
  • Администратор приложений

Разрешения для agentIdentityBlueprint

Тип разрешения Разрешение с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) AgentIdentityBlueprint.ReadWrite.All Directory.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) Не поддерживается. Не поддерживается.
Приложение AgentIdentityBlueprint.ReadWrite.All Directory.ReadWrite.All

Важно!

  • Известная проблема. Если клиенту предоставлено разрешение Directory.AccessAsUser.All или Directory.ReadWrite.All , разрешения клиента на создание, обновление и удаление идентификаторов агента игнорируются, что может привести к сбою запросов с 403 Unauthorized ошибкой. Чтобы устранить эту проблему, удалите Directory.AccessAsUser.All разрешение или Directory.ReadWrite.All у клиента, запросите новые маркеры доступа и повторите запрос.

  • При использовании делегированных разрешений пользователю, прошедшему проверку подлинности, должна быть назначена одна из следующих поддерживаемых Microsoft Entra ролей:

    • Администратор идентификатора агента.
    • Разработчик идентификатора агента— создание схем удостоверений агента. Субъект с этой ролью является владельцем создаваемой схемы и может выполнять операции записи в этой схеме.

HTTP-запрос

Для приложения:

  • Вы можете обратиться к приложению, используя его идентификатор или appId. Id и appId называются идентификатором объекта и идентификатором приложения (клиента) соответственно в регистрациях приложений в Центр администрирования Microsoft Entra.
PATCH /applications/{id}/federatedIdentityCredentials(name='{name}')
PATCH /applications(appId='{appId}')/federatedIdentityCredentials(name='{name}')

Для agentIdentityBlueprint:

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

Заголовки запросов

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type application/json. Обязательный параметр.
Prefer create-if-missing. Требуется для поведения upsert, в противном случае запрос обрабатывается как операция обновления.

Текст запроса

В тексте запроса укажите представление объекта federatedIdentityCredential в формате JSON.

В следующей таблице перечислены свойства, необходимые при создании federatedIdentityCredential. Обратите внимание, что свойство name является обязательным в составе URL-адреса запроса.

Свойство Тип Описание
Аудитории Коллекция строк Аудитория, которая может отображаться во внешнем маркере. Это поле является обязательным и должно иметь значение api://AzureADTokenExchange для Microsoft Entra ID. В нем говорится, что платформа удостоверений Майкрософт должны принимать в утверждении aud во входящем маркере. Это значение представляет Microsoft Entra ID во внешнем поставщике удостоверений и не имеет фиксированного значения для всех поставщиков удостоверений. Возможно, вам потребуется создать новую регистрацию приложения в поставщике удостоверений, чтобы служить аудиторией этого маркера. Это поле может принимать только одно значение и имеет ограничение в 600 символов. Обязательно.
claimsMatchingExpression FederatedIdentityExpression Допускается значение null. null Значение по умолчанию , если не задано. Включает использование выражений, соответствующих утверждениям, в отношении указанных утверждений. Если определен параметр claimsMatchingExpression , субъект должен иметь значение null. Список поддерживаемых синтаксиса выражений и утверждений см. в справочнике по гибкому FIC.
Эмитента String T— URL-адрес внешнего поставщика удостоверений и должен соответствовать утверждению издателя для внешнего токена, который обменивается. Сочетание значений издателя и субъекта должно быть уникальным в приложении. Он имеет ограничение в 600 символов. Обязательно.
subject String Допускается значение null. null Значение по умолчанию , если не задано. Идентификатор внешней рабочей нагрузки программного обеспечения в пределах внешнего поставщика удостоверений. Как и значение аудитории, оно не имеет фиксированного формата, так как каждый поставщик удостоверений использует свой собственный — иногда GUID, иногда идентификатор с разделителями двоеточием, иногда произвольные строки. Здесь значение должно совпадать с вложенным утверждением в токене, представленном Microsoft Entra ID. Он имеет ограничение в 600 символов. Сочетание издателя и субъекта должно быть уникальным в приложении. Если задан субъект , 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. Создание нового объекта federatedIdentityCredential для agentIdentityBlueprint, если он не существует

В следующем примере создается объект federatedIdentityCredential для agentIdentityBlueprint, так как значение 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"
    ]
}