Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A autenticação da caixa de ferramentas no Microsoft Foundry determina como as ferramentas se autenticam junto de serviços a jusante. As definições de autenticação são configuradas nas ligações do projeto, permitindo aos agentes usar acesso anónimo, credenciais partilhadas, identidades de serviço ou a identidade de um utilizador iniciado sem implementar lógica de autenticação no código do agente.
Este artigo explica como funciona a autenticação por toolbox e mostra como configurar o passthrough de identidade OAuth para um servidor MCP privado e o Work IQ, preservando as permissões e limites de acesso de cada utilizador.
Uma caixa de ferramentas centraliza a autenticação na ligação. A autenticação é uma propriedade da ligação, não um código no seu agente. Quando ligas uma ferramenta, selecionas um tipo de autenticação e o Foundry trata da obtenção, troca, atualização e injeção de tokens do lado do serviço. O seu código de agente mantém-se focado na lógica de negócio em vez dos fluxos de autenticação.
Por que a autenticação por utilizador é difícil de construir por si próprio
Se configurar você mesmo o acesso por utilizador a ferramentas protegidas pelo Entra, fica responsável por uma infraestrutura de segurança crítica em que é fácil cometer erros subtis:
- Implemente você mesmo o isolamento de tokens para cada utilizador. Deve particionar corretamente as caches de tokens por utilizador e inquilino. Uma chave de cache errada pode expor silenciosamente o acesso de um utilizador à API a jusante a outro utilizador, um erro que passa em todos os testes funcionais.
- Gerir o consentimento e o ciclo de vida por utilizador, por recurso. É necessário detetar falhas relacionadas com o consentimento, como
AADSTS65001, encaminhar os utilizadores pelo processo de consentimento, renovar tokens expirados e gerir corretamente novas tentativas após erros 401/403 para cada API em cada agente que escrever. - Absorver complexidade que escale linearmente com ferramentas e agentes. Cada nova ferramenta acrescenta outro âmbito, outra troca de tokens, outra entrada de cache, outro fluxo de consentimento, outro fluxo de nova tentativa e outro fluxo de cabeçalhos. À medida que se escala para centenas de ferramentas e milhares de agentes, reconstrói a mesma canalização frágil vezes sem conta.
As duas identidades em cada chamada de ferramenta
O modelo mental a que se deve agarrar: há sempre duas identidades em jogo, e tudo o que é difícil na autenticação por utilizador reside em mantê-las corretas, separadas e nunca cruzadas entre utilizadores simultâneos.
- Fronteira entre o agente e a caixa de ferramentas (a estável). O agente autentica-se na plataforma com a sua própria identidade de agente. Esta identidade limita o acesso à caixa de ferramentas em si, não às ferramentas individuais dentro dela.
- Fronteira entre a ferramenta e os dados (a por utilizador). Para a chamada de dados propriamente dita, o Foundry fornece ao serviço downstream credenciais que representam o utilizador com sessão iniciada. Dependendo do tipo de autenticação, essas credenciais provêm de um fluxo de autorização OAuth ou de um token de acesso do Microsoft Entra destinado a um público específico. O serviço a jusante devolve apenas o que o utilizador pode aceder e respeita as suas permissões e etiquetas de sensibilidade.
Como um conjunto de ferramentas gere a autenticação
Um conjunto de ferramentas retira do seu agente toda a responsabilidade pela autenticação e coloca-a na ligação:
- A autenticação está na conexão, não no agente. Escolhes um tipo de autenticação uma vez, quando ligas uma ferramenta. O código do agente continua sem autenticação.
- A fundição trata de todo o fluxo. Dependendo do que uma ferramenta precisa, o Foundry armazena e injeta chaves API, obtém credenciais para identidades de serviço, completa a autorização OAuth ou fornece um token de acesso Microsoft Entra específico para o público. O Foundry isola as credenciais de cada utilizador das de outros utilizadores.
- Basta construir lógica de negócio. O fluxo de autenticação nunca foi algo que tivesse de ser desenvolvido por si.
| O encargo do faça-você-mesmo | O que uma caixa de ferramentas faz em vez disso |
|---|---|
| Isolamento de token por utilizador | A Foundry isola automaticamente os tokens para cada autor da chamada. Não há nenhuma chave de cache que possa estar errada. |
| Consentimento e gestão do ciclo de vida, por utilizador e por recurso | A Foundry gere o fluxo de consentimento e o ciclo de vida dos tokens para cada utilizador, incluindo a aquisição e atualização dos tokens após a concessão do consentimento necessário. |
| Autenticação reimplementada por ferramenta e por equipa | Cria um kit de ferramentas com as respetivas ferramentas e autenticação uma vez e depois reutiliza-o em todos os agentes e ambientes de execução. |
Definir o tipo de autenticação na ligação
Escolhe o tipo de autenticação quando cria a ligação, no portal, com a CLI do Azure Developer ou através da API REST. Nunca em código de agente. Cada tipo de autenticação determina de quem a identidade chega à ferramenta:
authType |
Cuja identidade chega à ferramenta | Usa-o para |
|---|---|---|
none |
Anonymous | Servidores públicos (por exemplo, o servidor MCP do Microsoft Learn). |
custom-keys |
Uma chave ou cabeçalho API armazenado | SaaS baseado em teclas. O agente nunca vê o segredo. |
project-managed-identity |
Identidade gerida do projeto | Chamadas de serviço para serviço sem contexto de utilizador. |
agentic-identity |
A própria identidade do agente | Auditoria por agente e mínimo privilégio. |
oauth2 |
O utilizador que completa a autorização OAuth | Serviços compatíveis com OAuth, incluindo Work IQ e servidores MCP parceiros (por exemplo, Vercel). |
user-entra-token |
O utilizador da Microsoft Entra com sessão | Serviços Microsoft geridos que requerem um token Entra específico para um público, como pontos finais privados do espaço de trabalho para agentes de dados do Fabric. |
Tanto oauth2 como user-entra-token suportam acesso por utilizador, mas obtêm as credenciais de forma diferente. Com oauth2, o utilizador completa um fluxo de autorização OAuth, e o Foundry armazena e atualiza as credenciais resultantes. Com user-entra-token, o Foundry fornece ao serviço downstream um token de acesso do Microsoft Entra específico do público que representa o utilizador com sessão iniciada. Use o tipo de autenticação exigido pelo serviço.
Configure uma ligação para cada tipo de autenticação
Registar cada ligação com azd ai connection create. A forma do comando é sempre a mesma; As bandeiras diferem consoante o tipo de autenticação. Use --kind remote-tool para servidores MCP e A2A.
- Sem autorização
- Teclas personalizadas
- Passagem de identidade OAuth
- token de utilizador Entra
- Identidade gerida do projeto
- Identidade agentica
azd ai connection create my-mcp-conn \
--kind remote-tool \
--target https://public-mcp.example.com/mcp \
--auth-type none
Guia: Passagem de identidade OAuth
Este exemplo liga duas ferramentas protegidas pela Microsoft Entra para acesso por utilizador: um servidor privado de encomendas MCP e o Work IQ. Ambos usam o passthrough de identidade OAuth, pelo que cada chamada a jusante é executada como o utilizador que autoriza a ligação.
1. Criar uma ligação para cada ferramenta
# Private orders MCP: OAuth identity passthrough
azd ai connection create orders-mcp \
--kind remote-tool \
--target https://orders-mcp.example.com/mcp \
--auth-type oauth2 \
--authorization-url https://auth.example.com/authorize \
--token-url https://auth.example.com/token \
--client-id <oauth-client-id> \
--client-secret <oauth-client-secret> \
--scopes "openid offline_access orders.read"
# Work IQ: OAuth identity passthrough
azd ai connection create workiq-conn \
--kind remote-a2a \
--target https://workiq.svc.cloud.microsoft/a2a/ \
--auth-type oauth2 \
--authorization-url https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize \
--token-url https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
--client-id <oauth-client-id> \
--client-secret <oauth-client-secret> \
--scopes "api://workiq.svc.cloud.microsoft/WorkIQAgent.Ask offline_access"
2. Adicionar ambas as ferramentas a uma caixa de ferramentas
Cada ferramenta referencia a sua ligação por ID. Essa única referência é toda a diferença entre funcionar como uma conta de serviço partilhada e agir em nome do utilizador iniciado sessão. O teu agente não precisa de um corretor de tokens nem de um cache de tokens por utilizador.
Este exemplo requer azure-ai-projects (Python) ou @azure/ai-projects (TypeScript) versão 2.3.0 ou posterior.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import MCPToolboxTool, WorkIQPreviewToolboxTool
endpoint = "https://<your-foundry-account>.services.ai.azure.com/api/projects/<your-project>"
project = AIProjectClient(endpoint=endpoint, credential=DefaultAzureCredential())
orders_connection = project.connections.get("orders-mcp")
workiq_connection = project.connections.get("workiq-conn")
toolbox_version = project.toolboxes.create_version(
name="employee-toolbox",
description="Private orders MCP + Work IQ, both via OAuth identity passthrough.",
tools=[
MCPToolboxTool(
server_label="orders",
server_url="https://orders-mcp.example.com/mcp",
require_approval="never",
project_connection_id=orders_connection.id,
),
WorkIQPreviewToolboxTool(project_connection_id=workiq_connection.id),
],
)
print(f"Created toolbox: {toolbox_version.name}, version: {toolbox_version.version}")
Para JavaScript, consulte o exemplo atualizado de ligação ao projeto Toolbox e o exemplo Work IQ. O primeiro exemplo cria uma caixa de ferramentas apoiada por MCP que utiliza uma ligação de projeto e a anexa a um agente. O segundo exemplo mostra como referenciar a ligação ao projeto Work IQ.
3. Ligar o agente à caixa de ferramentas
O agente liga-se ao endpoint único do consumidor da toolbox, que serve sempre a versão predefinida. O agente autentica-se na plataforma com a sua própria identidade. Para cada ferramenta, o Foundry fornece credenciais que representam o utilizador que completou a autorização OAuth. O agente não possui código de autenticação específico de cada ferramenta.
from azure.identity import DefaultAzureCredential
from agent_framework import FoundryToolbox
# Agent-to-toolbox identity: the agent's own credential, scoped to the platform
credential = DefaultAzureCredential()
, timeout=120.0)
# Consumer endpoint always resolves to the toolbox's default version
CONSUMER_URL = f"{endpoint}/toolboxes/employee-toolbox/mcp?api-version=v1"
toolbox = FoundryToolbox(
name="employee_toolbox",
url=CONSUMER_URL,
http_client=http_client,
load_prompts=False,
)
agent = chat_client.as_agent(
name="employee-agent",
instructions="Help employees with their orders and Microsoft 365 context.",
tools=[toolbox],
)
O Foundry gera um link de consentimento na primeira vez que um determinado utilizador precisa de autorizar uma ferramenta. Depois de consentirem, as chamadas subsequentes utilizam as credenciais desse utilizador. O utilizador pode precisar de autorizar novamente a ferramenta se o token de atualização expirar ou for revogado.
Note
Os consumidores de um agente que utiliza a transmissão da identidade OAuth têm de ter, pelo menos, a função de Consumidor do Agente Foundry no projeto. O locatário do Microsoft Entra do utilizador tem de corresponder ao locatário do seu projeto do Foundry; a troca de tokens entre locatários não é suportada.
Para além do passthrough: o que mais uma caixa de ferramentas lhe oferece
Como a autenticação e o tráfego das ferramentas passam pela toolbox, beneficia de mais do que uma gestão de identidade simplificada:
- Limites de IA responsável. Os guardrails filtram as entradas e saídas de todas as ferramentas, por isso uma resposta MCP não confiável não pode contrabandear injeção rápida ou conteúdo inseguro de volta para o agente.
- Traz o teu próprio gateway de IA. Coloque os seus servidores MCP no API Management do Azure (APIM) para limitação de taxas, registo e política de rede.
- Versionamento. Crie e teste uma nova versão da caixa de ferramentas e depois promova-a para o padrão. Cada agente que aponta para o endpoint do consumidor recolhe automaticamente a versão promovida, sem alterações no código.