Inicializar aplicativos clientes confidenciais no MSAL Node

Este artigo mostra como inicializar o objeto ConfidentialClientApplication no MSAL Node. Você aprenderá a usar segredos e certificados com segurança e como configurar a autoridade.

Pré-requisitos

Antes de inicializar um aplicativo, primeiro você precisa registrá-lo no centro de administração do Microsoft Entra, estabelecendo uma relação de confiança entre seu aplicativo e o plataforma de identidade da Microsoft.

Depois de registrar seu aplicativo, você precisará de alguns ou todos os valores a seguir que podem ser encontrados no centro de administração do Microsoft Entra.

Valor Obrigatório Description
ID do aplicativo (cliente) Obrigatório Um GUID que identifica exclusivamente o seu aplicativo na plataforma de identidade da Microsoft.
Autoridade Optional A URL do provedor de identidade (a instância) e o público de entrada do seu aplicativo. A instância e o público-alvo de login, quando concatenados, comem a autoridade.
ID do Diretório (locatário) Optional Especifique a ID do diretório (locatário) se você estiver criando um aplicativo de linha de negócios exclusivamente para sua organização, geralmente conhecido como um aplicativo de locatário único.
URI de redirecionamento Optional Se você estiver criando um aplicativo da Web, o redirectUri especifica onde o provedor de identidade (a plataforma de identidade da Microsoft) deve retornar os tokens de segurança que emitiu.

Inicializando o ConfidentialClientApplication objeto

Para usar o MSAL Node, você precisa instanciar um objeto ConfidentialClient.

Usando segredos e certificados com segurança

Os segredos nunca devem ser codificados. O pacote dotenv npm pode ser usado para armazenar segredos ou certificados em um arquivo .env (localizado no diretório raiz do projeto) que deve ser incluído em .gitignore para evitar uploads acidentais dos segredos.

Os certificados também podem ser lidos de arquivos por meio do módulo fs do NodeJS. No entanto, eles nunca devem ser armazenados no diretório do projeto. Os aplicativos de produção devem buscar certificados de Azure KeyVault ou outros cofres de chaves seguros.

Consulte certificados e segredos para obter mais informações.

Confira o exemplo de MSAL: auth-code-with-certs

import * as msal from "@azure/msal-node";
import "dotenv/config"; // process.env now has the values defined in a .env file

const clientAssertionCallback = async (config) => {
    // network request that uses config.clientId and (optionally) config.tokenEndpoint
    const result = await Promise.resolve(
        "network request which gets assertion"
    );
    return result;
};

const clientConfig = {
    auth: {
        clientId: "your_client_id",
        authority: "your_authority",
        clientSecret: process.env.clientSecret, // OR
        clientCertificate: {
            thumbprintSha256: process.env.thumbprint,
            privateKey: process.env.privateKey,
        }, // OR
        clientAssertion: clientAssertionCallback, // or a predetermined clientAssertion string
    },
};
const cca = new msal.ConfidentialClientApplication(clientConfig);

Consulte problemas comuns ao importar certificados.

Noções básicas de configuração

As opções de Configuração do nó têm parâmetros common e parâmetros specific por fluxo de autenticação.

  • clientId é obrigatório para inicializar um aplicativo cliente público
  • authority o padrão é https://login.microsoftonline.com/common/ se o usuário não defini-lo durante a configuração
  • Uma credencial de cliente é obrigatória para clientes confidenciais. A credencial do cliente pode ser:
    • clientSecret é uma sequência de caracteres secreta gerada e definida no registro do aplicativo.
    • clientCertificate é um certificado configurado no registro do aplicativo. O thumbprintSha256 é uma impressão digital X.509 SHA-256 do certificado, e o privateKey é a chave privada codificada em PEM. x5c é a cadeia de certificados X.509 opcional usada em cenários de autenticação de nome do titular/emissor.
    • clientAssertion é um objeto ClientAssertion que contém uma cadeia de caracteres de asserção ou uma função de retorno de chamada que retorna uma cadeia de caracteres de asserção que o aplicativo usa ao solicitar um token, bem como o tipo da asserção (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). O callback é chamado sempre que a MSAL precisa obter um token do emissor. Os desenvolvedores de aplicativos geralmente devem usar o callback, porque as asserções expiram e novas asserções precisam ser criadas. Desenvolvedores de aplicativos são responsáveis pelo ciclo de vida da asserção. Use esse mecanismo para obter tokens para uma API downstream usando uma Credencial de Identidade Federada.

Para obter mais opções de configuração, consulte Configuração no MSAL Node.

Configurar Autoridade

Por padrão, a MSAL é configurada com o locatário common, que é usado para aplicativos multilocatário e aplicativos que permitem contas pessoais (não B2C).

    authority: 'https://login.microsoftonline.com/common/'

Se o público-alvo do aplicativo for um único locatário, você deverá fornecer uma autoridade com sua ID de locatário, conforme descrito abaixo:

    authority: 'https://login.microsoftonline.com/{your_tenant_id}'

Próximas etapas