Inicializace důvěrných klientských aplikací v uzlu MSAL

Tento článek ukazuje, jak inicializovat ConfidentialClientApplication objekt v uzlu MSAL. Dozvíte se, jak bezpečně používat tajné kódy a certifikáty a jak nakonfigurovat autoritu.

Předpoklady

Před inicializací aplikace ji nejprve musíte zaregistrovat v Centrum pro správu Microsoft Entra a vytvořit vztah důvěryhodnosti mezi vaší aplikací a Microsoft identity platform.

Po registraci aplikace budete potřebovat některé nebo všechny následující hodnoty, které najdete v Centrum pro správu Microsoft Entra.

Value Povinné Description
ID aplikace (klienta) Povinné Identifikátor GUID, který jednoznačně identifikuje vaši aplikaci v rámci Microsoft identity platform.
Autorita Optional Adresa URL zprostředkovatele identity ( instance) a cílová skupina přihlašování pro vaši aplikaci. Instance a okruh uživatelů pro přihlášení po zřetězení tvoří autoritu.
ID adresáře (klienta) Optional Zadejte ID adresáře (tenanta), pokud vytváříte obchodní aplikaci výhradně pro vaši organizaci, často označovanou jako aplikace s jedním tenantem.
Přesměrování URI Optional Pokud vytváříte webovou aplikaci, redirectUri určuje, kam má poskytovatel identity (platforma Microsoft identity) vracet bezpečnostní tokeny, které vydal.

Inicializace objektu ConfidentialClientApplication

Pokud chcete použít uzel MSAL, musíte vytvořit instanci objektu ConfidentialClient .

Bezpečné používání tajných kódů a certifikátů

Tajné kódy by nikdy neměly být pevně zakódované. Balíček dotenv npm lze použít k ukládání tajných kódů nebo certifikátů do souboru .env (umístěného v kořenovém adresáři projektu), který by měl být součástí souboru .gitignore , aby se zabránilo náhodnému nahrání tajných kódů.

Certifikáty lze také číst ze souborů prostřednictvím modulu fs nodeJS. Nikdy by ale neměly být uložené v adresáři projektu. Produkční aplikace by měly načítat certifikáty z Azure služby KeyVault nebo jiných zabezpečených trezorů klíčů.

Další informace najdete v certifikátech a tajných kódech .

Projděte si ukázku 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);

Viz Časté problémy při importu certifikátů.

Základy konfigurace

Možnosti konfigurace uzlu mají common parametry a specific parametry pro každý tok ověřování.

  • clientId je povinné pro inicializaci veřejné klientské aplikace.
  • authority má výchozí hodnotu https://login.microsoftonline.com/common/, pokud ji uživatel při konfiguraci nenastaví
  • Přihlašovací údaje klienta jsou pro důvěrné klienty povinné. Přihlašovací údaje klienta můžou být:
    • clientSecret je vygenerovaný tajný řetězec nastavený při registraci aplikace.
    • clientCertificate je certifikát nastavený na registraci aplikace. Jedná se thumbprintSha256 o kryptografický otisk SHA-256 X.509 certifikátu a privateKey jedná se o privátní klíč kódovaný PEM. x5c je volitelný řetězec certifikátů X.509 používaný ve scénářích ověřování názvu subjektu/vydavatele.
    • clientAssertion je ClientAssertion objekt obsahující kontrolní řetězec nebo funkci zpětného volání, která vrací řetězec kontrolního výrazu, který aplikace používá při vyžádání tokenu, a také typ kontrolního výrazu (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Funkce zpětného volání je volána pokaždé, když MSAL potřebuje získat token od vydavatele tokenu. Vývojáři aplikací by obecně měli zpětné volání používat, protože platnost kontrolních výrazů vyprší a je potřeba vytvořit nové kontrolní výrazy. Vývojáři aplikací nesou odpovědnost za životnost aserce. Tento mechanismus použijte k získání tokenů pro podřízené rozhraní API pomocí přihlašovacích údajů federované identity.

Další možnosti konfigurace najdetev tématu Konfigurace v uzlu MSAL.

Nakonfigurovat autoritu

Ve výchozím nastavení je služba MSAL nakonfigurovaná s tenantem common , který se používá pro aplikace a aplikace s více tenanty, které povolují osobní účty (ne B2C).

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

Pokud jsou uživatelé vaší aplikace omezeni na jednoho tenanta, musíte uvést autoritu s ID tenanta, jak je uvedeno níže:

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

Další kroky