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.
O Model Context Protocol (MCP) é um standard aberto que permite que aplicações de IA se conectem de forma segura com ferramentas externas, fontes de dados e serviços. O MSAL Browser suporta fluxos MCP ao exigir que todos os pedidos de token incluam um parâmetro resource e ao armazenar em cache os tokens de acesso indexados por esse recurso.
Note
Os fluxos MCP são suportados tanto para aplicações de navegador padrão que utilizam PublicClientApplication como para aplicações de Autenticação de Aplicações Aninhadas (NAA) que utilizam createNestablePublicClientApplication.
Para implementações do lado do servidor, veja MSAL Node MCP flows.
Pré-requisitos
- Registar uma aplicação na plataforma de identidade da Microsoft
-
@azure/msal-browserversão 5 ou superior instalada no seu projeto
Ativação do MCP
Defina isMcp: true na configuração auth ao criar o seu PublicClientApplication:
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
Para aplicações NAA, use a mesma configuração com createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Parâmetro de recurso
Quando isMcp é true, cada pedido de token deve incluir um resource parâmetro. Omitir isso gera um resource_parameter_required erro.
const tokenRequest = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
Importante
Defina o resource parâmetro diretamente no objeto de pedido. Não a passe por extraQueryParameters ou extraParameters ao mesmo tempo que a propriedade resource — isso gera um erro misplaced_resource_parameter.
O exemplo seguinte mostra as formas corretas e incorretas de definir o resource parâmetro:
// Correct
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
// Wrong — resource in both locations
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
extraQueryParameters: { resource: "https://example.microsoft.com" },
};
Cache com escopo de recursos
Quando isMcp está ativado, os tokens de acesso são armazenados em cache com o seu recurso associado. Este comportamento afeta a aquisição silenciosa de tokens:
- Impacto na cache: Se existir um token de acesso em cache para os mesmos escopos e recurso, ele é devolvido da cache.
- Cache miss: Se o recurso solicitado não corresponder a nenhum token em cache, o MSAL recorre à rede para adquirir um novo token para o recurso solicitado.
// First request — acquires token from network
const token1 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Same resource — returns cached token
const token2 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Different resource — falls back to network
const token3 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-b.microsoft.com",
account: account,
});
Tratamento de erros
Dois erros são específicos dos fluxos MCP:
| Código de erro | Description |
|---|---|
resource_parameter_required |
isMcp é true , mas o pedido não inclui um resource parâmetro. |
misplaced_resource_parameter |
Foi encontrado(a) um(a) resource tanto na propriedade resource como em extraQueryParameters ou extraParameters. Usa apenas um. |
Ambos os erros são apresentados como ClientAuthError. Para mais informações, consulte a documentação de erros.