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 Biblioteca de Autenticação da Microsoft (MSAL) para Node.js suporta a obtenção de tokens a partir do mediador nativo de tokens. Ao usar o broker nativo, os tokens de atualização estão vinculados ao dispositivo em que são obtidos e não são acessíveis nem por msal-node nem pela aplicação. Isto proporciona um nível mais elevado de segurança que não pode ser alcançado apenas com msal-node por si só.
Este artigo explica como configurar o Windows broker, configurar prova de posse e compreender o comportamento específico do broker.
O suporte para corretores está disponível nas seguintes plataformas:
| Platform | Broker | Documentação |
|---|---|---|
| Windows | Gestor de Conta Web (WAM) | Windows broker (este artigo) |
| macOS | Plug-in de SSO empresarial da Microsoft (Portal da Empresa) | macOS broker |
| Linux | Microsoft Single Sign-on para Linux | Broker Linux |
O que é um corretor
Um broker de autenticação é um componente que corre na máquina do utilizador e gere handshakes de autenticação e o ciclo de vida dos tokens para contas ligadas. No Windows, esta função é desempenhada pelo Gestor de Contas Web (WAM). Os principais benefícios incluem:
- Segurança reforçada. As melhorias de segurança são implementadas através de atualizações do sistema operativo ou do broker sem necessidade de alterações no código da aplicação. Os tokens de atualização estão ligados ao dispositivo e protegidos contra exfiltração.
- Suporte a funcionalidades. Acesso a capacidades avançadas do sistema operativo, como o Windows Hello, as políticas de Acesso Condicional do Microsoft Entra e as chaves de segurança Fast Identity Online (FIDO), sem código de suporte adicional.
- Integração com sistemas. As aplicações ligam-se ao seletor de contas incorporado, permitindo aos utilizadores selecionar rapidamente uma conta existente em vez de voltarem a introduzir credenciais.
- Proteção de tokens. O intermediário garante que os tokens de atualização estão associados ao dispositivo e permite às aplicações obter tokens de acesso com prova de posse.
Arquiteturas suportadas
- Windows: x64, x86, ARM64
Pré-requisitos
- Node.js 18 ou posterior
- Instalar
@azure/msal-node-extensionscomo uma dependência - Regista o URI de redirecionamento do corretor no registo da tua aplicação. Para o valor necessário, veja Redirecionar URI.
Redirecionar URL
Registe o seguinte URI de redirecionamento na plataforma de aplicações móveis e desktop no portal Azure:
ms-appx-web://Microsoft.AAD.BrokerPlugin/<your-client-id>
Substitua <your-client-id> pelo ID de cliente da sua aplicação.
Ativar a funcionalidade
Ativar a corretagem de tokens requer apenas um parâmetro de configuração. Passe uma instância de NativeBrokerPlugin na configuração do broker:
import { PublicClientApplication, Configuration } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
Note
msal-node não recorrerá ao fluxo não intermediado em caso de falha. Só ative o fluxo do corretor em ambientes que o suportem para evitar falhas inesperadas.
Pode encontrar um exemplo funcional no sample auth-code-cli-brokered-app.
Parentalidade na janela
Para que os pedidos de autenticação sejam apresentados sobre a aplicação chamadora e impeçam outras interações, forneça o identificador da janela da aplicação à API acquireTokenInteractive.
Para aplicações de linha de comandos (CLI), é feita, nos bastidores, uma tentativa, na medida do possível, de encontrar o identificador da janela, mas não é fiável.
Se estiveres a usar Electron, usa a getNativeWindowHandle API e passa o resultado para acquireTokenInteractive:
import { BrowserWindow } from "electron";
const win = new BrowserWindow();
const pca = new PublicClientApplication(msalConfig);
pca.acquireTokenInteractive({
windowHandle: win.getNativeWindowHandle(),
});
Prova de propriedade
A prova de posse (PoP) do token de acesso é suportada ao obter tokens através do broker nativo. Para solicitar um token PoP, adicione as seguintes propriedades ao objeto de pedido fornecido a acquireTokenInteractive ou acquireTokenSilent:
Parâmetros da solicitação AT PoP
| Nome | Description | Obrigatório |
|---|---|---|
authenticationScheme |
Indica se a MSAL deve obter um token Bearer ou PoP. A predefinição é Bearer. |
Obrigatório |
resourceRequestMethod |
O nome em maiúsculas do método HTTP do pedido que irá usar o token assinado (GET, POST, PUT, etc.) |
Obrigatório |
resourceRequestUri |
A URL do recurso protegido para o qual o token de acesso está a ser emitido | Obrigatório |
shrNonce |
Um carimbo temporal assinado, gerado pelo servidor, codificado em Base64URL como uma string. Este nonce é usado para mitigar ataques de desfasamento do relógio e de manipulação temporal que visam permitir a pré-geração de tokens PoP. | Opcional |
Exemplo de utilização
Este exemplo solicita um token de prova de posse definindo o esquema de autenticação e as propriedades do pedido HTTP assinado:
import { PublicClientApplication, Configuration, AuthenticationScheme } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
const popTokenRequest = {
scopes: ["User.Read"],
authenticationScheme: AuthenticationScheme.POP,
resourceRequestMethod: "POST",
resourceRequestUri: "YOUR_RESOURCE_ENDPOINT",
shrNonce: "NONCE_ACQUIRED_FROM_RESOURCE_SERVER",
};
pca.acquireTokenInteractive(popTokenRequest);
pca.acquireTokenSilent(popTokenRequest);
Note
A prova de posse do token de acesso só é suportada através do fluxo nativo do broker e não está disponível no fluxo não intermediado.
Diferenças ao utilizar o intermediário do Windows
Existem algumas coisas que podem comportar-se de forma diferente ao adquirir tokens através do corretor nativo:
- O
forceRefreshparâmetro paraacquireTokenSilentchamadas não é suportado. Pode receber um token em cache do corretor independentemente do que este flag esteja definido. - Se o corretor precisar de pedir ao utilizador a interação, abre-se um prompt do sistema. Isto altera a experiência do utilizador (UX) porque a autenticação não ocorre numa janela do navegador.
- A prova de posse do token de acesso é suportada pelo mediador, mas não é suportada pelo fluxo sem mediador.