Inicializar aplicações cliente confidenciais no MSAL Node

Este artigo mostra-lhe como inicializar o ConfidentialClientApplication objeto no MSAL Node. Vais aprender a usar segredos e certificados de forma segura, e a configurar a autoridade.

Pré-requisitos

Antes de inicializar uma aplicação, precisa primeiro de a registar no centro de administração Microsoft Entra, estabelecendo uma relação de confiança entre a sua aplicação e a plataforma de identidades da Microsoft.

Depois de registar a sua aplicação, precisará de alguns ou todos os valores seguintes que podem ser encontrados no centro de administração Microsoft Entra.

Value Obrigatório Description
ID do aplicativo (cliente) Obrigatório Um GUID que identifica de forma única a sua aplicação dentro da plataforma de identidades da Microsoft.
Autoridade Optional O URL do fornecedor de identidade (a instância) e o público de início de sessão da sua aplicação. A instância e o público de iniciação de sessão, quando concatenados, constituem a autoridade.
ID da diretoria (tenant) Optional Especifique o ID do diretório (locatário) se estiver a criar uma aplicação empresarial exclusivamente para a sua organização, frequentemente designada por uma aplicação de locatário único.
Redirecionar URL Optional Se estiver a criar uma aplicação Web, o redirectUri especifica onde o fornecedor de identidade (a plataforma de identidade da Microsoft) deve devolver os tokens de segurança que emitiu.

Inicialização do ConfidentialClientApplication objeto

Para usar o MSAL Node, é necessário instanciar um objeto ConfidentialClient .

Utilização segura de segredos e certificados

Segredos nunca devem ser codificados fixamente. O pacote dotenv npm pode ser usado para armazenar segredos ou certificados num ficheiro .env (localizado na pasta raiz do projeto) que deve ser incluído no .gitignore para evitar uploads acidentais dos segredos.

Os certificados também podem ser lidos a partir de ficheiros através do módulo fs do NodeJS. No entanto, nunca devem ser armazenados no diretório do projeto. As aplicações de produção devem obter certificados do Azure KeyVault ou de outros cofres de chaves seguros.

Por favor, consulte certificados e segredos para mais informações.

Veja 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);

Por favor, consulte Questões comuns ao importar certificados.

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

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

  • clientId é obrigatório para inicializar uma aplicação pública de cliente
  • authority assume por defeito o valor de https://login.microsoftonline.com/common/ se o utilizador não o definir durante a configuração
  • Uma credencial de Cliente é obrigatória para clientes confidenciais. Credencial de cliente pode ser uma:
    • clientSecret é uma string secreta gerada e definida no registo da aplicação.
    • clientCertificate é um certificado definido no registo da aplicação. O thumbprintSha256 é uma impressão digital SHA-256 X.509 do certificado, e a privateKey é a chave privada codificada em PEM. x5c é a cadeia opcional de certificados X.509 utilizada em cenários de autenticação baseados no nome do titular/do emitente.
    • clientAssertion é um objeto ClientAssertion que contém uma cadeia de caracteres de asserção ou uma função de retorno de chamada que devolve uma cadeia de caracteres de asserção que a aplicação usa ao solicitar um token, bem como o tipo da asserção (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). O callback é invocado sempre que a MSAL precisa de adquirir um token do emissor do token. Os programadores de aplicações devem geralmente usar o callback porque as asserções expiram e é necessário criar novas asserções. Os programadores de aplicações são responsáveis pela vida útil da asserção. Use este mecanismo para obter tokens para uma API posterior usando uma Credencial de Identidade Federada.

Para mais opções sobre Configuração , consulte Configuração no Nó MSAL.

Configurar Autoridade

Por predefinição, o MSAL é configurado com o inquilino common, que é utilizado para aplicações multi-inquilino e aplicações que permitem contas pessoais (não B2C).

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

Se o público da sua candidatura for um único inquilino, deve fornecer uma autoridade com o seu ID de inquilino, conforme abaixo:

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

Próximas Etapas