Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Werknemerstenants
Externe tenants (meer informatie)
Externe Id van Microsoft Entra ondersteunt twee soorten verificatie voor vertrouwelijke clienttoepassingen; verificatie op basis van wachtwoorden (zoals clientgeheim) en verificatie op basis van certificaten. Voor een hoger beveiligingsniveau raden we u aan een certificaat (in plaats van een clientgeheim) te gebruiken als referentie in uw vertrouwelijke clienttoepassingen.
In productie moet u een certificaat aanschaffen dat is ondertekend door een bekende certificeringsinstantie en vervolgens Azure Key Vault gebruiken om certificaattoegang en levensduur te beheren. Voor testdoeleinden kunt u echter een zelfondertekend certificaat maken en uw apps configureren om ermee te verifiëren.
In dit artikel leert u hoe u een zelfondertekend certificaat genereert met behulp van Azure Key Vault in Azure Portal, OpenSSL of PowerShell. Als u al een clientgeheim hebt, leert u hoe u het veilig kunt verwijderen.
Indien nodig kunt u ook programmatisch een zelfondertekend certificaat maken met behulp van .NET-, Node.js-, Go-, Python - of Java-clientbibliotheken .
Voorwaarden
Visual Studio Code of een andere code-editor.
Een externe tenant. Als u nog geen abonnement hebt, meldt u zich aan voor een gratis proefversie.
OpenSSL of u kunt OpenSSL eenvoudig installeren in Windows via Chocolatey.
Windows PowerShell of Azure-abonnement.
Een zelfondertekend certificaat maken
Als u een bestaand zelfondertekend certificaat op uw lokale computer hebt, kunt u deze stap overslaan en doorgaan met het uploaden van het certificaat naar uw app-registratie.
U kunt Azure Key Vault gebruiken om een zelfondertekend certificaat voor uw app te genereren. Met behulp van Azure Key Vault profiteert u van voordelen, zoals het toewijzen van een partnercertificeringsinstantie (CA) en het automatiseren van certificaatrotatie.
Als u een bestaand zelfondertekend certificaat in Azure Key Vault hebt en u dit wilt gebruiken zonder het te downloaden, slaat u deze stap over en gaat u verder met het gebruik van een zelfondertekend certificaat rechtstreeks vanuit Azure Key Vault. Gebruik anders de volgende stappen om uw certificaat te genereren
Volg de stappen in Een certificaat instellen en ophalen van Azure Key Vault met de Azure-portal om je certificaat te maken en te downloaden.
Nadat u het certificaat hebt gemaakt, downloadt u zowel het .cer-bestand als het PFX-bestand , zoals ciam-client-app-cert.cer en ciam-client-app-cert.pfx. Het .cer bestand bevat de openbare sleutel en is wat u uploadt naar uw Microsoft Entra-beheercentrum.
Voer in de terminal de volgende opdracht uit om de persoonlijke sleutel uit het PFX-bestand te extraheren. Wanneer u wordt gevraagd een wachtwoordzin te typen, drukt u op Enter als u er geen wilt instellen. Anders typt u een wachtwoordzin van uw keuze:
openssl pkcs12 -in ciam-client-app-cert.pfx -nocerts -out ciam-client-app-cert.keyHet ciam-client-app-cert.key-bestand is wat u in uw app gebruikt.
Certificaat uploaden naar uw app-registratie
Als u het certificaat van de client-app wilt gebruiken, moet u de app die u hebt geregistreerd in het Microsoft Entra-beheercentrum koppelen aan het certificaat:
Meld u als **ten minste** toepassingsbeheerder aan bij het Microsoft Entra-beheercentrum.
Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram
Instellingen in het bovenste menu om vanuit het menu Mappen en abonnementen over te schakelen naar uw externe tenant.Blader naar Entra ID>App-registraties.
Selecteer in de lijst met app-registratie de app die u aan het certificaat wilt koppelen, zoals ciam-client-app.
Selecteer onder Beherende optie Certificaten en geheimen.
Selecteer Certificaten en selecteer vervolgens Certificaat uploaden.
Selecteer het pictogram Bestand selecteren en selecteer vervolgens het certificaat dat u wilt uploaden, zoals ciam-client-app-cert.pem of ciam-client-app-cert.cer of ciam-client-app-cert.crt.
Voor Beschrijving typt u een beschrijving, zoals het CIAM-client-app-certificaat en selecteert u Toevoegen om uw certificaat te uploaden. Zodra het certificaat is geüpload, worden de waarden Vingerafdruk, Begindatum en Vervaldatum weergegeven.
Noteer de vingerafdrukwaarde voor later gebruik wanneer u uw client-app configureert.
Als u al een clientgeheim voor uw toepassing hebt, moet u het verwijderen om te voorkomen dat een schadelijke toepassing wordt gebruikt voor het imiteren van uw toepassing:
- Ga naar het tabblad Clientgeheimen en selecteer het pictogram Verwijderen .
- Selecteer Ja in het pop-upvenster dat wordt weergegeven.
Uw Node.js-app configureren voor het gebruik van een certificaat
Zodra u uw app-registratie aan het certificaat hebt gekoppeld, moet u de app-code bijwerken om het certificaat te kunnen gebruiken:
Zoek het bestand dat uw MSAL-configuratieobject bevat, zoals
msalConfigin authConfig.js, en werk het vervolgens bij zodat het er ongeveer uitziet als de volgende code. Als er een clientgeheim aanwezig is, zorg ervoor dat u het verwijdert.require('dotenv').config(); const fs = require('fs'); //// import the fs module for reading the key file const crypto = require('crypto'); const TENANT_SUBDOMAIN = process.env.TENANT_SUBDOMAIN || 'Enter_the_Tenant_Subdomain_Here'; const REDIRECT_URI = process.env.REDIRECT_URI || 'http://localhost:3000/auth/redirect'; const POST_LOGOUT_REDIRECT_URI = process.env.POST_LOGOUT_REDIRECT_URI || 'http://localhost:3000'; const privateKeySource = fs.readFileSync('PATH_TO_YOUR_PRIVATE_KEY_FILE') const privateKeyObject = crypto.createPrivateKey({ key: privateKeySource, passphrase: 'Add_Passphrase_Here', format: 'pem' }); const privateKey = privateKeyObject.export({ format: 'pem', type: 'pkcs8' }); /** * Configuration object to be passed to MSAL instance on creation. * For a full list of MSAL Node configuration parameters, visit: * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/docs/configuration.md */ const msalConfig = { auth: { clientId: process.env.CLIENT_ID || 'Enter_the_Application_Id_Here', // 'Application (client) ID' of app registration in Azure portal - this value is a GUID authority: process.env.AUTHORITY || `https://${TENANT_SUBDOMAIN}.ciamlogin.com/`, clientCertificate: { thumbprint: "YOUR_CERT_THUMBPRINT", // replace with thumbprint obtained during step 2 above privateKey: privateKey } }, //... Rest of code in the msalConfig object }; module.exports = { msalConfig, REDIRECT_URI, POST_LOGOUT_REDIRECT_URI, TENANT_SUBDOMAIN };Vervang de tijdelijke aanduidingen in uw code:
Add_Passphrase_Heremet de wachtwoordzin die u hebt gebruikt om uw persoonlijke sleutel te versleutelen.YOUR_CERT_THUMBPRINTmet de vingerafdrukwaarde die u eerder hebt genoteerd.PATH_TO_YOUR_PRIVATE_KEY_FILEmet het bestandspad naar uw privésleutelbestand.Enter_the_Application_Id_Heremet de toepassings-id (client) van de app die u eerder hebt geregistreerd.Enter_the_Tenant_Subdomain_Hereen vervang dit door het subdomein Directory (tenant). Als uw primaire tenantdomein bijvoorbeeld iscontoso.onmicrosoft.com, gebruikt ucontoso. Als u uw tenantnaam niet hebt, leert u hoe u uw tenantgegevens kunt lezen .
We hebben de sleutel versleuteld (we raden u aan dit te doen), dus we moeten deze ontsleutelen voordat we deze doorgeven aan het MSAL-configuratieobject.
//... const privateKeyObject = crypto.createPrivateKey({ key: privateKeySource, passphrase: 'Add_Passphrase_Here', format: 'pem' }); const privateKey = privateKeyObject.export({ format: 'pem', type: 'pkcs8' }); //...Gebruik de stappen in Uitvoeren en test de web-app om uw app te testen.
Een zelfondertekend certificaat rechtstreeks vanuit Azure Key Vault gebruiken
U kunt uw bestaande certificaat rechtstreeks vanuit Azure Key Vault gebruiken:
Zoek het bestand met uw MSAL-configuratieobject, zoals
msalConfigin authConfig.js, en verwijder vervolgens declientSecreteigenschap:const msalConfig = { auth: { clientId: process.env.CLIENT_ID || 'Enter_the_Application_Id_Here', // 'Application (client) ID' of app registration in Azure portal - this value is a GUID authority: process.env.AUTHORITY || `https://${TENANT_SUBDOMAIN}.ciamlogin.com/`, }, //... };Installeer Azure CLI en typ vervolgens in uw console de volgende opdracht om u aan te melden:
az login --tenant YOUR_TENANT_IDVervang de tijdelijke aanduiding
YOUR_TENANT_IDdoor de Directory-ID (tenant) die u eerder heeft gekopieerd.Typ op de console de volgende opdracht om de vereiste pakketten te installeren:
npm install --save @azure/identity @azure/keyvault-certificates @azure/keyvault-secretsGebruik in uw client-app de volgende code om
thumbprintenprivateKeyte genereren;const identity = require("@azure/identity"); const keyvaultCert = require("@azure/keyvault-certificates"); const keyvaultSecret = require('@azure/keyvault-secrets'); const KV_URL = process.env["KEY_VAULT_URL"] || "ENTER_YOUR_KEY_VAULT_URL" const CERTIFICATE_NAME = process.env["CERTIFICATE_NAME"] || "ENTER_THE_NAME_OF_YOUR_CERTIFICATE_ON_KEY_VAULT"; // Initialize Azure SDKs const credential = new identity.DefaultAzureCredential(); const certClient = new keyvaultCert.CertificateClient(KV_URL, credential); const secretClient = new keyvaultSecret.SecretClient(KV_URL, credential); async function getKeyAndThumbprint() { // Grab the certificate thumbprint const certResponse = await certClient.getCertificate(CERTIFICATE_NAME).catch(err => console.log(err)); const thumbprint = certResponse.properties.x509Thumbprint.toString('hex') // When you upload a certificate to Key Vault, a secret containing your private key is automatically created const secretResponse = await secretClient.getSecret(CERTIFICATE_NAME).catch(err => console.log(err));; // secretResponse contains both public and private key, but we only need the private key const privateKey = secretResponse.value.split('-----BEGIN CERTIFICATE-----\n')[0] } getKeyAndThumbprint();Vervang de tijdelijke aanduidingen in uw code:
ENTER_YOUR_KEY_VAULT_URLmet behulp van uw Azure Key Vault-URL.ENTER_THE_NAME_OF_YOUR_CERTIFICATE_ON_KEY_VAULTmet de naam van uw certificaat in Azure Key Vault.
Gebruik de waarden voor
thumbprintenprivateKeyom uw configuratie bij te werken:let clientCert = { thumbprint: thumbprint, privateKey: privateKey, }; msalConfig.auth.clientCertificate = clientCert; //For this to work, you can't declares your msalConfig using const modifierGa vervolgens verder met het instantiëren van uw vertrouwelijke client, zoals wordt weergegeven in de
getMsalInstancemethode:class AuthProvider { //... getMsalInstance(msalConfig) { return new msal.ConfidentialClientApplication(msalConfig); } //... }Gebruik de stappen in Uitvoeren en test de web-app om uw app te testen.
Verwante inhoud
Meer informatie over: