Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Penyewa Tenaga Kerja
Penyewa eksternal (pelajari selengkapnya)
MICROSOFT Entra External ID mendukung dua jenis autentikasi untuk aplikasi klien rahasia; autentikasi berbasis kata sandi (seperti rahasia klien) dan autentikasi berbasis sertifikat. Untuk tingkat keamanan yang lebih tinggi, sebaiknya gunakan sertifikat (bukan rahasia klien) sebagai kredensial di aplikasi klien rahasia Anda.
Dalam produksi, Anda harus membeli sertifikat yang ditandatangani oleh otoritas sertifikat terkenal, lalu menggunakan Azure Key Vault untuk mengelola akses sertifikat dan masa pakai. Namun, untuk tujuan pengujian, Anda dapat membuat sertifikat yang ditandatangani sendiri dan mengonfigurasi aplikasi Untuk mengautentikasinya.
Dalam artikel ini, Anda belajar membuat sertifikat yang ditandatangani sendiri dengan menggunakan Azure Key Vault di portal Microsoft Azure, OpenSSL, atau PowerShell. Jika Anda sudah memiliki rahasia klien, Anda akan mempelajari cara menghapusnya dengan aman.
Jika diperlukan, Anda juga dapat membuat sertifikat yang ditandatangani sendiri secara terprogram dengan menggunakan pustaka klien .NET, Node.js, Go, Python , atau Java .
Prasyarat
Visual Studio Code atau editor kode lain.
Penyewa dari luar. Jika Anda belum memilikinya, daftar untuk uji coba gratis.
OpenSSL atau Anda dapat dengan mudah menginstal OpenSSL di Windows melalui Chocolatey.
Langganan Windows PowerShell atau Azure.
Membuat sertifikat yang ditandatangani sendiri
Jika Anda memiliki sertifikat yang ditandatangani sendiri di komputer lokal, Anda dapat melewati langkah ini, lalu melanjutkan ke Mengunggah sertifikat ke pendaftaran aplikasi Anda.
Anda dapat menggunakan Azure Key Vault untuk membuat sertifikat yang ditandatangani sendiri untuk aplikasi Anda. Dengan menggunakan Azure Key Vault, Anda menikmati manfaat, seperti, menetapkan Otoritas Sertifikat (CA) mitra dan mengotomatiskan rotasi sertifikat.
Jika Anda memiliki sertifikat yang ditandatangani sendiri di Azure Key Vault, dan Anda ingin menggunakannya tanpa mengunduhnya, lewati langkah ini, lalu lanjutkan menggunakan sertifikat yang ditandatangani sendiri langsung dari Azure Key Vault. Jika tidak, gunakan langkah-langkah berikut untuk membuat sertifikat Anda
Ikuti langkah-langkah dalam Mengatur dan mengambil sertifikat dari Azure Key Vault menggunakan portal Microsoft Azure untuk membuat dan mengunduh sertifikat Anda.
Setelah Membuat sertifikat, unduh file .cer dan file .pfx seperti ciam-client-app-cert.cer dan ciam-client-app-cert.pfx. File .cer berisi kunci publik dan merupakan apa yang Anda unggah ke pusat admin Microsoft Entra Anda.
Di terminal Anda, jalankan perintah berikut untuk mengekstrak kunci privat dari file .pfx . Saat diminta untuk mengetikkan frasa pass, cukup tekan tombol Enter jika Anda tidak ingin mengaturnya. Jika tidak, ketik frasa sandi pilihan Anda:
openssl pkcs12 -in ciam-client-app-cert.pfx -nocerts -out ciam-client-app-cert.key
File ciam-client-app-cert.key adalah yang digunakan dalam aplikasi Anda.
Mengunggah sertifikat ke pendaftaran aplikasi Anda
Untuk menggunakan sertifikat aplikasi klien, Anda perlu mengaitkan aplikasi yang Anda daftarkan di pusat admin Microsoft Entra dengan sertifikat:
Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Aplikasi.
Jika Anda memiliki akses ke beberapa tenant, gunakan ikon Pengaturan
di menu atas untuk beralih ke tenant eksternal Anda dari menu Direktori + langganan .
Buka Entra ID>pendaftaran Aplikasi.
Dari daftar pendaftaran aplikasi, pilih aplikasi yang ingin Anda kaitkan dengan sertifikat, seperti ciam-client-app.
Di bawah Kelola, pilih Sertifikat & rahasia.
Pilih Sertifikat, lalu pilih Unggah sertifikat.
Pilih ikon Pilih file file , lalu pilih sertifikat yang ingin Anda unggah, seperti ciam-client-app-cert.pem atau ciam-client-app-cert.cer atau ciam-client-app-cert.crt.
Untuk Deskripsi, ketik deskripsi, seperti, sertifikat aplikasi klien CIAM, lalu pilih Tambahkan untuk mengunggah sertifikat Anda. Setelah sertifikat diunggah, nilai Thumbprint, Tanggal mulai, dan Kedaluwarsa ditampilkan.
Rekam nilai Thumbprint untuk digunakan nanti saat Anda mengonfigurasi aplikasi klien Anda.
Jika Anda sudah memiliki rahasia klien untuk aplikasi Anda, Anda perlu menghapusnya untuk menghindari aplikasi berbahaya untuk meniru aplikasi Anda:
- Buka tab Rahasia klien , dan pilih ikon Hapus .
- Di jendela pop-up yang muncul, pilih Ya.
Mengonfigurasi aplikasi Node.js Anda untuk menggunakan sertifikat
Setelah mengaitkan pendaftaran aplikasi dengan sertifikat, Anda perlu memperbarui kode aplikasi untuk mulai menggunakan sertifikat:
Temukan file yang berisi objek konfigurasi MSAL Anda, seperti
msalConfig
di authConfig.js, lalu perbarui agar terlihat mirip dengan kode berikut. Jika Anda memiliki rahasia klien yang ada, pastikan Anda menghapusnya: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 };
Dalam kode Anda, ganti penanda:
Add_Passphrase_Here
dengan frasa sandi yang Anda gunakan untuk mengenkripsi kunci privat Anda.YOUR_CERT_THUMBPRINT
dengan nilai Thumbprint yang Anda catat sebelumnya.PATH_TO_YOUR_PRIVATE_KEY_FILE
dengan jalur file ke file kunci privat Anda.Enter_the_Application_Id_Here
dengan ID aplikasi (klien) yang Anda daftarkan sebelumnya.Enter_the_Tenant_Subdomain_Here
dan menggantinya dengan subdomain Direktori (tenant). Misalnya, jika domain utama penyewa Anda adalahcontoso.onmicrosoft.com
, gunakancontoso
. Jika Anda tidak memiliki nama penyewa, pelajari cara membaca detail penyewa Anda.
Kami mengenkripsi kunci (kami sarankan Anda melakukannya), jadi kami harus mendekripsinya sebelum kami meneruskannya ke objek konfigurasi MSAL.
//... const privateKeyObject = crypto.createPrivateKey({ key: privateKeySource, passphrase: 'Add_Passphrase_Here', format: 'pem' }); const privateKey = privateKeyObject.export({ format: 'pem', type: 'pkcs8' }); //...
Gunakan langkah-langkah dalam Menjalankan dan menguji aplikasi web untuk menguji aplikasi Anda.
Menggunakan sertifikat yang ditandatangani sendiri langsung dari Azure Key Vault
Anda dapat menggunakan sertifikat yang ada langsung dari Azure Key Vault:
Temukan file yang berisi objek konfigurasi MSAL Anda, seperti
msalConfig
di authConfig.js, lalu hapusclientSecret
properti :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/`, }, //... };
Instal Azure CLI, lalu di konsol Anda, ketik perintah berikut untuk masuk:
az login --tenant YOUR_TENANT_ID
Ganti tempat penampung
YOUR_TENANT_ID
dengan ID Direktori (penyewa) yang Anda salin sebelumnya.Di konsol Anda, ketik perintah berikut untuk menginstal paket yang diperlukan:
npm install --save @azure/identity @azure/keyvault-certificates @azure/keyvault-secrets
Di aplikasi klien Anda, gunakan kode berikut untuk menghasilkan
thumbprint
danprivateKey
;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();
Dalam kode Anda, ganti penanda:
ENTER_YOUR_KEY_VAULT_URL
dengan URL Azure Key Vault Anda.ENTER_THE_NAME_OF_YOUR_CERTIFICATE_ON_KEY_VAULT
dengan nama sertifikat Anda di Azure Key Vault.
thumbprint
Gunakan nilai danprivateKey
untuk memperbarui konfigurasi Anda:let clientCert = { thumbprint: thumbprint, privateKey: privateKey, }; msalConfig.auth.clientCertificate = clientCert; //For this to work, you can't declares your msalConfig using const modifier
Kemudian lanjutkan untuk membuat instans klien rahasia Anda seperti yang
getMsalInstance
ditunjukkan dalam metode :class AuthProvider { //... getMsalInstance(msalConfig) { return new msal.ConfidentialClientApplication(msalConfig); } //... }
Gunakan langkah-langkah dalam Menjalankan dan menguji aplikasi web untuk menguji aplikasi Anda.
Konten terkait
Pelajari cara: