Настройка проверки подлинности для средств протокола контекста модели (MCP)

Большинство серверов протокола контекста модели (MCP) требуют проверки подлинности для доступа к серверу и ее базовой службе. Правильная проверка подлинности гарантирует, что агенты могут безопасно подключаться к серверам MCP, вызывать свои средства и получать доступ к защищенным ресурсам при сохранении соответствующих элементов управления доступом.

В этой статье вы:

  • Выбор метода проверки подлинности на основе требований безопасности
  • Настройка проверки подлинности на основе ключей, Microsoft Entra или OAuth
  • Настройка и проверка подключения сервера MCP

Примечание

Если у вас еще нет учетной записи с издателем сервера MCP, создайте ее с помощью веб-сайта издателя.

Необходимые условия

Прежде чем начать, вам потребуется:

  • Доступ к порталу Foundry и проекту. Если у вас нет проекта, см. статью "Создание проектов" в Foundry.
  • Разрешения для создания подключений проекта и настройки агентов. Дополнительные сведения см. в разделе "Управление доступом на основе ролей" на портале Foundry.
  • URL-адрес конечной точки удаленного сервера MCP, к которому требуется подключиться.
  • Учетные данные выбранного метода проверки подлинности:
    • Проверка подлинности на основе ключей: ключ API, личный маркер доступа (PAT) или другой маркер.
    • Microsoft Entra аутентификация: назначение ролей для идентификации агента или управляемой идентификации проекта в основной службе.
    • Сквозная идентификация OAuth: управляемая конфигурация OAuth или регистрация приложения OAuth (пользовательское OAuth).

Выбор метода проверки подлинности

Как правило, существуют два сценария проверки подлинности:

  • Общая проверка подлинности. Каждый пользователь агента использует то же удостоверение для проверки подлинности на сервере MCP. Контекст пользователя не сохраняется.
  • Индивидуальная проверка подлинности: каждый пользователь аутентифицируется с использованием своей учетной записи, чтобы его пользовательский контекст сохранялся.

Чтобы выбрать метод, используйте следующее руководство.

Ваша цель Рекомендуемый метод
Использование одного общего удостоверения для всех пользователей Проверка подлинности на основе ключей или проверка подлинности Microsoft Entra
Сохранение удостоверения и разрешений каждого пользователя OAuth сквозная идентификация
Избегайте управления секретами, когда базовая служба поддерживает Microsoft Entra аутентификация Microsoft Entra
Подключение к серверу MCP, который не требует проверки подлинности Доступ без проверки подлинности

Совет

Если вы сомневаетесь, начните с аутентификации Microsoft Entra, если сервер MCP поддерживает эту функцию. Аутентификация Microsoft Entra устраняет необходимость управления секретами и обеспечивает встроенную ротацию токенов.

Для частных серверов MCP в виртуальной сети аутентификация Microsoft Entra является естественным решением, так как агент и сервер MCP находятся в одной частной сети.

Поддерживаемые методы проверки подлинности

Метод Описание Контекст пользователя сохраняется
На основе ключей Предоставьте ключ API или маркер доступа для проверки подлинности с помощью сервера MCP. Нет
Microsoft Entra — удостоверение агента Используйте удостоверение агента для проверки подлинности с помощью сервера MCP. Назначьте необходимые роли в базовой службе. Нет
Microsoft Entra — управляемая идентификация проекта Используйте управляемое удостоверение проекта для проверки подлинности с помощью сервера MCP. Назначьте необходимые роли в базовой службе. Нет
OAuth сквозная идентификация Предложите пользователям взаимодействовать с агентом, чтобы войти и авторизовать доступ к серверу MCP. Да
Доступ без проверки подлинности Используйте этот метод, только если сервер MCP не требует проверки подлинности. Нет

Проверка подлинности на основе ключей

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

Примечание

Пользователи, имеющие доступ к проекту, могут получить доступ к ключу API, хранящимся в подключении к проекту. Храните только общие ключи в подключении проекта. Для доступа, специфичного для пользователя, используйте сквозную передачу идентификации OAuth.

Передайте ключ API, личный маркер доступа (PAT) или другие учетные данные серверам MCP, поддерживающим проверку подлинности на основе ключей. Для повышения безопасности сохраните общие учетные данные в подключении проекта вместо передачи их во время выполнения.

При подключении сервера MCP к агенту на портале Foundry, система автоматически создаёт для вас подключение к проекту. Укажите имя учетных данных и значение учетных данных. Например, если вы подключаетесь к серверу MCP GitHub, можно указать следующее:

  • Имя учетных данных: Authorization
  • Значение учетных данных: Bearer <your-personal-access-token>

Когда агент вызывает сервер MCP, служба агента извлекает учетные данные из подключения к проекту и передает их серверу MCP.

Для обеспечения безопасности:

  • Используйте учетные данные с минимальными привилегиями, если это возможно.
  • Регулярно поворачивайте маркеры.
  • Ограничение доступа к проектам, содержащим общие секреты.

аутентификация Microsoft Entra

Используйте проверку подлинности Microsoft Entra, если сервер MCP (и ее базовая служба) поддерживает маркеры Microsoft Entra. Этот метод устраняет необходимость управления секретами и обеспечивает автоматическое обновление токенов.

Использование проверки подлинности удостоверения агента

Используйте удостоверение агента, если требуется проверка подлинности для определенного агента. Этот подход идеально подходит, если у вас несколько агентов, которым требуется разные уровни доступа к одному и тому же серверу MCP.

Используйте удостоверение агента для проверки подлинности с серверами MCP, поддерживающими проверку подлинности удостоверений агента. Если вы создаете агент с помощью Службы агентов, вы автоматически назначаете ему идентификатор агента.

Перед публикацией все агенты в проекте Foundry используют одно и то же удостоверение агента. После публикации агента агент получает уникальное удостоверение агента.

Убедитесь, что удостоверение агента имеет необходимые назначения ролей в базовой службе, которая управляет сервером MCP.

Когда агент вызывает сервер MCP, служба агента использует доступное удостоверение агента для запроса токена авторизации и передает его серверу MCP.

Использование аутентификации с управляемым удостоверением проекта

Используйте управляемое удостоверение проекта, если требуется, чтобы все агенты в проекте использовали одинаковый уровень доступа или когда серверу MCP требуется управляемое удостоверение, а не удостоверение агента.

Используйте управляемое удостоверение проекта Foundry для проверки подлинности с серверами MCP, поддерживающими проверку подлинности управляемых удостоверений.

Убедитесь, что управляемое удостоверение проекта имеет необходимые назначения ролей в базовой службе, обеспечивающей работу сервера MCP.

Когда агент вызывает сервер MCP, Служба агента использует идентификатор проекта для запроса маркера авторизации и передает его серверу MCP.

OAuth сквозная идентификация

Примечание

  • Чтобы использовать сквозную передачу удостоверения OAuth, пользователи, которые взаимодействуют с вашим агентом, должны иметь как минимум роль Foundry User в проекте. Тенант Microsoft Entra пользователя должен соответствовать тенанту вашего проекта Foundry. Обмен маркерами между клиентами не поддерживается.
  • Мы настоятельно рекомендуем вам добавить offline_access в список областей действия, чтобы токен автоматически обновлялся после истечения срока его действия.

Важно

Недавно были переименованы роли RBAC в Foundry. Foundry User, Foundry Owner, Foundry Account Owner и Foundry Project Manager ранее назывались пользователь Azure AI, владелец Azure AI, владелец учетной записи Azure AI и руководитель проекта Azure AI. Пока новое название внедряется, в некоторых местах вы всё ещё можете видеть прежние названия. Идентификаторы ролей и основные разрешения не меняются из-за переименования.

Сквозная идентификация OAuth доступна для аутентификации на серверах MCP от Microsoft и других компаний, а также на поддерживающих сервисах, соответствующих OAuth, включая Microsoft Entra.

Используйте сквозное прохождение идентификации OAuth, чтобы побудить пользователей, взаимодействующих с вашим агентом, войти на сервер MCP и его базовую службу. Служба агента безопасно сохраняет учетные данные пользователя и использует их только в контексте агента, взаимодействующего с сервером MCP.

При использовании сквозной аутентификации OAuth служба агента создает ссылку на предоставление доступа, когда определенный пользователь впервые нуждается в авторизации доступа. После входа и согласия пользователя агент может обнаруживать и вызывать средства на сервере MCP с учетными данными этого пользователя.

Служба агента поддерживает два варианта OAuth: управляемый OAuth и настраиваемый OAuth.

  • С помощью управляемого приложения OAuth Microsoft или издателя сервера MCP управляет приложением OAuth.
  • С помощью настраиваемого OAuth вы приведете собственную регистрацию приложения OAuth.

Важно

При использовании управляемого OAuth с Microsoft Entra служба Agent Service не позволяет отправлять на пользовательские или сторонние серверы MCP токены, область действия которых ограничена известной аудиторией Microsoft. При попытке этого служба агента возвращает ошибку: Cannot pass Microsoft token to untrusted MCP endpoint.

Ваш пользовательский сервер MCP должен быть зарегистрирован для аудитории, которую вы контролируете, а не для известной аудитории Microsoft. Не проектируйте сервер MCP так, чтобы он полагался на сквозную передачу своего токена аутентификации в дочерний сервис Microsoft. Чтобы удовлетворить это требование, используйте настраиваемый OAuth с собственной регистрацией приложения Microsoft Entra.

Примечание

Если вы используете пользовательский OAuth, вы получите URL-адрес перенаправления после настройки. Добавьте URL-адрес перенаправления в приложение OAuth, чтобы служба агента могла завершить поток.

При настройке пользовательского OAuth укажите следующие сведения:

  • Идентификатор клиента: обязательный
  • Секрет клиента: необязательный (зависит от приложения OAuth)
  • URL-адрес проверки подлинности: обязательный
  • URL для обновления: обязательный (если у вас нет отдельного URL для обновления, вместо него можно использовать URL токена).
  • URL-адрес токена: обязательный
  • Области действия: необязательны (добавьте offline_access, чтобы включить автоматическое обновление токена). При указании нескольких областей разделяйте их одним пробелом, а не запятыми. Это следует спецификации OAuth 2.0.

Поток с использованием сквозной аутентификации OAuth

Область применения OAuth определяется именем инструмента (подключения) для каждого проекта Foundry. Каждому новому пользователю, использующим новое средство (подключение) в проекте Foundry, предлагается предоставить согласие.

  • Когда пользователь впервые пытается использовать новое средство в проекте Foundry, выходные данные ответа предоставляют ссылку согласия.response.output_item Ссылку на согласие можно найти в типе oauth_consent_request элемента, в разделе consent_link. Представьте эту ссылку согласия пользователю.

    "type":"response.output_item.done",
    "sequence_number":7,
    "output_index":1,
    "item":{
        "type":"oauth_consent_request",
        "id":"oauthreq_10b0f026610e2b76006981547b53d48190840179e52f39a0aa",
        "created_by":{},
        "consent_link":"https://logic-swedencentral-001.consent.azure-apihub.net/login?data=xxxx"
    }
    

    См. пример . Снимок экрана: диалоговое окно согласия на портале Foundry.

  • Пользователю предлагается войти и предоставить согласие после проверки необходимого доступа. После успешного предоставления согласия пользователь видит диалоговое окно, как показано в этом примере: снимок экрана, на котором показано диалоговое окно подтверждения после предоставления согласия OAuth на портале Foundry.

  • После закрытия диалогового окна необходимо отправить другой ответ с идентификатором предыдущего ответа.

    # Requires: azure-ai-projects >= 2.0.0
    from azure.ai.projects import AIProjectClient
    from azure.identity import DefaultAzureCredential
    
    # Submit another response after user consent
    response = client.responses.create(
         previous_response_id="YOUR_PREVIOUS_RESPONSE_ID",
         input=user_input,
         extra_body={
             "agent_reference": {"name": agent.name, "type": "agent_reference"},
             "tool_choice": "required",
             "stream": True
         },
    )
    

После входа пользователя и предоставления согласия один раз они не должны давать согласие в будущем.

Примечание

Если пользователь отказывается от согласия, вызов средства MCP завершается сбоем и возвращает ошибку. Приложение должно правильно обрабатывать этот случай и сообщить пользователю, что инструменту требуется авторизация для работы.

Используйте собственную регистрацию приложения Microsoft Entra

Примечание

Серверы MCP агента 365 доступны только для клиентов Frontier.

Чтобы использовать проброс идентификации с сервисами Microsoft, предоставьте свою собственную регистрацию приложения Microsoft Entra. Используя собственную регистрацию приложения Microsoft Entra, вы управляете тем, какие разрешения предоставляете.

Следующие действия используют сервер MCP агента 365 в качестве примера:

  1. Следуйте инструкциям по регистрации app, чтобы создать приложение Microsoft Entra и получить идентификатор клиента и секрет клиента.

  2. Предоставьте разрешения с определенным объемом приложению Microsoft Entra.

    Для серверов MCP агента 365 перейдите к разделу "Управление>разрешениями API " и выполните поиск средств агента 365. Если не удается его найти, выполните поиск ea9ffc3e-8a23-4a7d-836d-234d7c7565c1. Назначьте необходимые разрешения и предоставьте согласие администратора для вашего клиента.

    Ниже приведены разрешения для каждого сервера MCP:

    • Microsoft Outlook почтовый сервер MCP (сервер Frontier): McpServers.Mail.All
    • сервер MCP календаря Microsoft Outlook Frontier: McpServers.Calendar.All
    • Microsoft Teams MCP Server (Frontier): McpServers.Teams.All
    • Microsoft 365 сервер профиля пользователя MCP (Frontier): McpServers.Me.All
    • Microsoft SharePoint и сервер MCP OneDrive (Frontier): McpServers.OneDriveSharepoint.All
    • Microsoft SharePoint Списки сервера MCP (Граница): McpServers.SharepointLists.All
    • сервер Microsoft Word MCP (Frontier): McpServers.Word.All
    • Microsoft 365 Copilot (поиск) MCP-сервер (граница): McpServers.CopilotMCP.All
    • Microsoft 365 Admin Center MCP Server (Frontier): McpServers.M365Admin.All
    • Microsoft Dataverse MCP Server (Frontier): McpServers.Dataverse.All
  3. Вернитесь на портал Foundry и настройте сервер MCP. Подключите средство, перейдите к custom и выберите MCP. Укажите имя и конечную точку сервера MCP, а затем выберите OAuth Identity Passthrough:

    • Идентификатор клиента и секрет клиента
    • URL-адрес токена: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    • URL-адрес проверки подлинности: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
    • URL-адрес обновления: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    • области действия: ea9ffc3e-8a23-4a7d-836d-234d7c7565c1/{permission above} offline_access (разделённые пробелами, согласно спецификации OAuth 2.0)
  4. После завершения настройки вы получите URL-адрес перенаправления. Добавьте его в приложение Microsoft Entra.

Доступ без проверки подлинности

Используйте неуверенный доступ только в том случае, если сервер MCP не требует проверки подлинности. Этот метод подходит для общедоступных серверов MCP, которые предоставляют открытый доступ к своим средствам или для частных серверов MCP в виртуальной сети, которые используют изоляцию на уровне сети вместо явной проверки подлинности.

Важно

Даже если проверка подлинности не требуется, убедитесь, что вы понимаете условия обслуживания и ограничения скорости сервера MCP перед подключением.

Настройка проверки подлинности для сервера MCP

  1. Определите удаленный сервер MCP, к которому вы хотите подключиться.

  2. Создайте или выберите подключение проекта, включающее конечную точку сервера MCP, тип проверки подлинности и все необходимые учетные данные.

    При подключении сервера MCP на портале Foundry портал создает подключение к проекту.

  3. Создайте или обновите агента с помощью инструмента mcp, используя следующую информацию:

    1. server_url: URL-адрес сервера MCP. Например, https://api.githubcopilot.com/mcp/.
    2. server_label: уникальный идентификатор этого сервера MCP для агента. Например, github.
    3. require_approval: при необходимости определите, требуется ли утверждение. Поддерживаемые значения:
      • always: разработчику необходимо предоставить утверждение для каждого вызова. Если вы не предоставляете значение, это значение по умолчанию.
      • never: утверждение не требуется.
      • {"never":[<tool_name_1>, <tool_name_2>]}: вы предоставляете список инструментов, которые не требуют утверждения.
      • {"always":[<tool_name_1>, <tool_name_2>]}: вы предоставляете список инструментов, требующих утверждения.
    4. project_connection_id: имя подключения, которое хранит конечную точку сервера MCP, выбор проверки подлинности и соответствующие сведения. Если вы предоставляете разные конечные точки в соединении по сравнению с server_url, то используется конечная точка в соединении.
  4. Запустите агент.

  5. Если модель пытается вызвать средство на сервере MCP, требующее одобрения, или если пользователю необходимо войти в систему для передачи удостоверения OAuth, просмотрите данные ответа:

    • Ссылка на согласие: oauth_consent_request
    • Запрос на утверждение: mcp_approval_request

    После входа пользователя или утверждения вызова отправьте еще один ответ, чтобы продолжить.

Проверить

После настройки проверки подлинности убедитесь, что подключение работает правильно:

  1. Инициируйте вызов инструмента MCP из агента, отправив запрос, который заставляет агента использовать один из инструментов сервера MCP.
  2. Подтвердите успешное завершение вызова инструмента. Вы должны увидеть результаты работы средства в ответе агента без ошибок аутентификации.
  3. Если вы используете сквозную передачу удостоверения личности с использованием OAuth:
    • Подтвердите, что новый пользователь получает ссылку на согласие (oauth_consent_request в ответе).
    • После согласия пользователя подтвердите, что последующие вызовы инструментов завершатся успешно, не запрашивая согласие еще раз.
    • Проверьте правильность работы потока согласия для каждого пользователя с другим пользователем.

Устранение неполадок

Проблема Причина Разрешение
Вы не получаете oauth_consent_request, когда ожидаете его Средство MCP не настроено для сквозной передачи данных идентификации OAuth или вызов средства не был выполнен. Убедитесь, что подключение проекта настроено для передачи идентификации через OAuth, и обеспечьте, чтобы ваша подсказка приводила к активации инструмента MCP агентом.
Получение согласия завершено, но обращения к инструментам по-прежнему завершаются ошибкой. Отсутствие доступа в базовой службе Убедитесь, что пользователь имеет доступ к базовой службе и имеет роль пользователя Foundry (или выше) в проекте.
Проверка подлинности на основе ключей завершается ошибкой Недопустимый или истекший срок действия ключа или токена, либо сервер MCP ожидает другой формат заголовка или значения. Повторно создайте или измените учетные данные и обновите подключение проекта. Подтвердите требуемый формат имени заголовка и значения в документации по серверу MCP.
сбой аутентификации Microsoft Entra Удостоверение не имеет обязательных назначений ролей Назначьте необходимые роли идентификатору агента или управляемому удостоверению проекта в базовой службе, а затем повторите попытку.
Вызовы инструментов непредвиденно блокируются require_approval имеет значение always (по умолчанию), или для вызываемого средства требуется утверждение конфигурации. Обновите require_approval, чтобы соответствовать требованиям одобрения.
Сервер MCP возвращает "несанкционированный" несмотря на допустимые учетные данные Имя или формат заголовка учетных данных не совпадает с тем, что ожидает сервер MCP. Проверьте документацию сервера MCP для точного имени заголовка (например, Authorization, X-API-Key, или Api-Key) и формата значений (например, Bearer <token> по сравнению с просто <token>).
Токены OAuth истекают, и спустя некоторое время вызовы инструментов перестают выполняться. "Срок действия сеанса истек. Повторите проверку подлинности с указанным URL-адресом". Недопустимый маркер обновления или неверный URL-адрес обновления Проверьте правильность URL-адреса обновления. Если вы использовали URL-адрес токена в качестве URL-адреса обновления, убедитесь, что поставщик OAuth поддерживает обновление токена на этом конечном узле. Пользователю может потребоваться снова предоставить согласие, если маркеры обновления отозваны. Убедитесь, что при создании OAuth-подключения для аутентификации вы добавили offline_access в scope.
Частный сервер MCP недоступен от агента Сервер MCP не находится в выделенной подсети MCP, отсутствует делегирование подсети или разрешение частного DNS завершается ошибкой. Убедитесь, что сервер MCP развернут в подсети MCP с помощью делегирования Microsoft.App/environments. Проверьте конфигурацию частной зоны DNS. Разверните, используя шаблон 19-hybrid-private-resources-agent-setup.

Размещение локального сервера MCP

Если вы разработали пользовательский сервер MCP или хотите использовать сервер MCP с открытым исходным кодом, работающий локально, необходимо разместить его в облаке перед подключением к службе агента.

Среда выполнения службы агента принимает только удаленную конечную точку сервера MCP. Если вы хотите добавить средства с локального сервера MCP, необходимо самостоятельно разместить его на Контейнеры приложений Azure или Функции Azure для получения удаленной конечной точки сервера MCP.

Удаленная конечная точка может быть общедоступной конечной точкой или частной конечной точкой в виртуальной сети. Для частных серверов MCP разверните приложение-контейнер в выделенной подсети MCP с только внутренним входом, делегированной Microsoft.App/environments. Чтобы приступить к работе, используйте шаблон 19-hybrid-private-resources-agent-setup . Дополнительные сведения о поддержке средств в изолированных от сети средах см. в разделе "Средства агента" с сетевой изоляцией.

При попытке размещения локальных серверов MCP в облаке следует учитывать следующие моменты:

Настройка локального сервера MCP Размещение в Контейнеры приложений Azure Хостинг в Функции Azure
Транспорта Требуются HTTP POST/GET эндпоинты. Требуется потоковая передача HTTP (ответы должны поддерживать кусковую кодировку передачи для потоковой передачи в стиле SSE).
Изменения кода Контейнеру требуется реконструкция. Файлы конфигурации, специфичные для Функции Azure, необходимые в корневом каталоге.
Проверки подлинности Требуется реализация пользовательской проверки подлинности. Используйте встроенную проверку подлинности или пользовательский код.

Функции Azure требует ключ по умолчанию, но вы можете отключить требование ключа в host.json.
Стек языков Любой язык, который выполняется в контейнерах Linux (Python, Node.js, .NET, TypeScript, Go). Python, Node.js, TypeScript, Java, только .NET.
Требования к контейнерам Только Linux (linux/amd64). Привилегированные контейнеры не поддерживаются. Контейнерные серверы не поддерживаются.
Зависимости Все зависимости должны находиться в образе контейнера. Зависимости на уровне ОС (например, Playwright) не поддерживаются.
Состояние Только в режиме без сохранения состояния. Только в режиме без сохранения состояния.
UVX/NPX Поддерживается. Не поддерживается. Команды npx запуска не поддерживаются.

Дальнейшие действия