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.
Mempertimbangkan untuk menggunakan mekanisme autentikasi standar untuk mengautentikasi ke Aplikasi Web
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Autentikasi adalah proses di mana entitas membuktikan identitasnya, biasanya melalui info masuk, seperti nama pengguna dan kata sandi. Ada beberapa protokol autentikasi yang tersedia yang mungkin dipertimbangkan. Beberapa di antaranya tercantum di bawah ini:
Pertimbangkan untuk menggunakan mekanisme autentikasi standar untuk mengidentifikasi proses sumber |
Aplikasi harus menangani skenario autentikasi yang gagal dengan aman
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Aplikasi yang secara eksplisit mengautentikasi pengguna harus menangani skenario autentikasi yang gagal dengan aman. Mekanisme autentikasi harus:
Pengujian untuk:
|
Mengaktifkan autentikasi berjenjang atau adaptif
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Verifikasi aplikasi memiliki otorisasi tambahan (seperti peningkatan atau autentikasi adaptif, melalui autentikasi multifaktor seperti mengirim OTP dalam SMS, email, dll. atau meminta autentikasi ulang) sehingga pengguna ditantang sebelum diberikan akses ke informasi sensitif. Aturan ini juga berlaku untuk membuat perubahan penting pada akun atau tindakan Ini juga berarti bahwa adaptasi autentikasi harus diimplementasikan sedemikian rupa sehingga aplikasi menerapkan otorisasi peka konteks dengan benar sehingga tidak memungkinkan manipulasi yang tidak sah dengan cara, misalnya, gangguan parameter |
Memastikan bahwa antarmuka administratif dikunci dengan tepat
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Solusi pertama adalah memberikan akses hanya dari rentang IP sumber tertentu ke antarmuka administratif. Jika solusi tersebut tidak mungkin dilakukan, selalu disarankan untuk menegakkan autentikasi berjenjang atau adaptif saat masuk ke antarmuka administratif. |
Menerapkan fungsionalitas kata sandi yang terlupakan dengan aman
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Langkah pertama adalah memastikan bahwa fitur lupa kata sandi dan jalur pemulihan kata sandi lainnya mengirimkan tautan yang menyertakan token aktivasi yang dibatasi oleh waktu, bukan kata sandi itu sendiri. Autentikasi tambahan berdasarkan soft-token (misalnya token SMS, aplikasi seluler asli, dll.) juga dapat diperlukan sebelum tautan dikirim. Kedua, Anda tidak boleh mengunci akun pengguna saat proses mendapatkan kata sandi baru sedang berlangsung. Ini dapat menyebabkan serangan penolakan layanan (DoS) setiap kali penyerang memutuskan untuk secara sengaja mencegah pengguna mengakses layanan dengan serangan otomatis. Ketiga, setiap kali permintaan kata sandi baru sedang berlangsung, pesan yang Anda tampilkan harus digeneralisasi untuk mencegah enumerasi nama pengguna. Keempat, selalu larang penggunaan kata sandi lama dan terapkan kebijakan kata sandi yang kuat. |
Memastikan bahwa kebijakan kata sandi dan akun diterapkan
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Detail | Kebijakan kata sandi dan akun sesuai dengan kebijakan organisasi dan praktik terbaik harus diterapkan. Untuk bertahan melawan brute force dan tebakan berbasis kamus: Kebijakan kata sandi yang kuat harus diterapkan untuk memastikan bahwa pengguna membuat kata sandi yang rumit (mis., panjang minimum 12 karakter, alfanumerik, dan karakter khusus). Kebijakan penguncian akun dapat diterapkan dengan cara berikut:
Untuk mempertahankan diri dari serangan terhadap akun default dan akun yang dapat diprediksi, verifikasi bahwa semua kunci dan kata sandi dapat diganti, dan dibuat atau diganti setelah waktu penginstalan. Jika aplikasi harus membuat kata sandi secara otomatis, pastikan kata sandi yang dihasilkan acak dan memiliki entropi tinggi. |
Menerapkan kontrol untuk mencegah enumerasi nama pengguna
| Judul | Detail |
|---|---|
| Komponen | Aplikasi Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Langkah-langkah | Semua pesan kesalahan harus digeneralisasi untuk mencegah enumerasi nama pengguna. Terkadang Anda juga tidak dapat menghindari kebocoran informasi dalam fungsionalitas seperti halaman pendaftaran. Di sini Anda perlu menggunakan metode pembatasan kecepatan seperti CAPTCHA untuk mencegah serangan otomatis oleh penyerang. |
Jika memungkinkan, gunakan Autentikasi Windows untuk menyambungkan ke SQL Server
| Judul | Detail |
|---|---|
| Komponen | Basis data |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | di tempat |
| Atribut | Versi SQL - Semua |
| Referensi | SQL Server - Pilih Mode Autentikasi |
| Langkah-langkah | Autentikasi Windows menggunakan protokol keamanan Kerberos, menyediakan pemberlakuan kebijakan kata sandi sehubungan dengan validasi kompleksitas untuk kata sandi yang kuat, memberikan dukungan untuk penguncian akun, dan mendukung kedaluwarsa kata sandi. |
Jika memungkinkan, gunakan autentikasi Microsoft Entra untuk Menyambungkan ke SQL Database
| Judul | Detail |
|---|---|
| Komponen | Basis data |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | SQL Azure |
| Atribut | Versi SQL - V12 |
| Referensi | Menyambungkan ke SQL Database Menggunakan autentikasi Microsoft Entra |
| Langkah-langkah | Versi minimum: Azure SQL Database V12 diperlukan untuk mengizinkan Azure SQL Database menggunakan autentikasi Microsoft Entra terhadap Microsoft Directory |
Saat mode autentikasi SQL digunakan, pastikan bahwa kebijakan akun dan kata sandi diberlakukan di server SQL
| Judul | Detail |
|---|---|
| Komponen | Basis data |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Kebijakan kata sandi SQL Server |
| Langkah-langkah | Saat menggunakan Autentikasi SQL Server, login dibuat di SQL Server yang tidak didasarkan pada akun pengguna Windows. Nama pengguna dan kata sandi dibuat dengan menggunakan SQL Server dan disimpan di SQL Server. SQL Server dapat menggunakan mekanisme kebijakan kata sandi Windows. Itu dapat menerapkan kebijakan kompleksitas dan kedaluwarsa yang sama yang digunakan di Windows untuk kata sandi yang digunakan di dalam SQL Server. |
Jangan gunakan Autentikasi SQL dalam database terpisah
| Judul | Detail |
|---|---|
| Komponen | Basis data |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Lokal, SQL Azure |
| Atribut | Versi SQL - MSSQL2012, Versi SQL - V12 |
| Referensi | Praktik Terbaik keamanan dengan Database Terkendali |
| Langkah-langkah | Tidak adanya kebijakan kata sandi yang diberlakukan dapat meningkatkan kemungkinan kredensial lemah yang ditetapkan dalam database yang terkandung. Manfaatkan Autentikasi Windows. |
Gunakan info masuk autentikasi per perangkat menggunakan token SaS
| Judul | Detail |
|---|---|
| Komponen | Azure Event Hubs |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Ringkasan autentikasi dan model keamanan Azure Event Hubs |
| Langkah-langkah | Model keamanan Event Hubs didasarkan pada kombinasi token Shared Access Signature (SAS) dan penerbit acara. Nama penerbit mewakili DeviceID yang menerima token. Ini akan membantu mengaitkan token yang dihasilkan dengan perangkat masing-masing. Semua pesan ditandai dengan pengirim di sisi layanan yang memungkinkan deteksi upaya pemalsuan asal di dalam muatan. Saat mengautentikasi perangkat, buat token SaS untuk setiap perangkat yang cakupannya ke penerbit unik. |
Mengaktifkan autentikasi multifaktor Microsoft Entra untuk Administrator Azure
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Azure |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Apa itu autentikasi multifaktor Microsoft Entra? |
| Langkah-langkah | autentikasi multifaktor (MFA) adalah metode autentikasi yang memerlukan lebih dari satu metode verifikasi dan menambahkan lapisan keamanan kedua yang penting untuk masuk dan transaksi pengguna. Ini bekerja dengan meminta dua atau lebih dari metode verifikasi berikut:
|
Membatasi akses anonim ke Kluster Service Fabric
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Service Fabric |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Lingkungan - Azure |
| Referensi | Skenario keamanan kluster Service Fabric |
| Langkah-langkah | Kluster harus selalu diamankan untuk mencegah pengguna yang tidak sah tersambung ke kluster Anda, terutama saat beban kerja produksi sedang berjalan di dalamnya. Saat membuat kluster fabric layanan, pastikan mode keamanan diatur ke "aman" dan konfigurasikan sertifikat server X.509 yang diperlukan. Membuat kluster "tidak aman" akan memungkinkan pengguna anonim untuk tersambung jika kluster tersebut mengekspos titik akhir manajemen ke Internet publik. |
Memastikan bahwa sertifikat klien-ke-simpul Service Fabric berbeda dari sertifikat simpul-ke-simpul
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Service Fabric |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Lingkungan - Azure, Lingkungan - Mandiri |
| Referensi | Keamanan sertifikat klien-ke-simpul Service Fabric, Sambungkan ke kluster aman menggunakan sertifikat klien |
| Langkah-langkah | Keamanan sertifikat klien-ke-simpul dikonfigurasi saat membuat kluster baik melalui portal Microsoft Azure, templat Resource Manager, atau templat JSON mandiri dengan menentukan sertifikat klien admin dan/atau sertifikat klien pengguna. Sertifikat klien admin dan klien pengguna yang Anda tentukan harus berbeda dari sertifikat utama dan sekunder yang Anda tentukan untuk keamanan Simpul-ke-simpul. |
Menggunakan ID Microsoft Entra untuk mengautentikasi klien ke kluster service fabric
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Service Fabric |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Lingkungan - Azure |
| Referensi | Skenario keamanan kluster - Rekomendasi Keamanan |
| Langkah-langkah | Kluster yang berjalan di Azure juga dapat mengamankan akses ke titik akhir manajemen menggunakan ID Microsoft Entra, selain sertifikat klien. Untuk kluster Azure, disarankan agar Anda menggunakan keamanan Microsoft Entra untuk mengautentikasi klien dan sertifikat untuk keamanan node-to-node. |
Memastikan bahwa sertifikat service fabric diperoleh dari Otoritas Sertifikat (CA) yang disetujui.
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Service Fabric |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Lingkungan - Azure |
| Referensi | Sertifikat X.509 dan Service Fabric |
| Langkah-langkah | Service Fabric menggunakan sertifikat server X.509 untuk mengautentikasi simpul dan klien. Beberapa hal penting yang perlu dipertimbangkan saat menggunakan sertifikat dalam layanan fabric:
|
Menggunakan skenario autentikasi standar yang didukung oleh Server Identitas
| Judul | Detail |
|---|---|
| Komponen | Server Identitas |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Langkah-langkah | Di bawah ini adalah interaksi umum yang didukung oleh Server Identitas:
|
Gantikan cache token Server Identitas yang default dengan alternatif yang dapat diskalakan
| Judul | Detail |
|---|---|
| Komponen | Server Identitas |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Langkah-langkah | IdentityServer memiliki cache dalam memori bawaan yang sederhana. Meskipun ini baik untuk aplikasi asli skala kecil, ini tidak menskalakan untuk aplikasi tingkat menengah dan backend karena alasan berikut:
|
Memastikan bahwa biner aplikasi yang disebarkan ditandatangani secara digital
| Judul | Detail |
|---|---|
| Komponen | Batas Kepercayaan Komputer |
| Fase SDL | Penyebaran |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Langkah-langkah | Pastikan biner aplikasi yang disebarkkan ditandatangani secara digital sehingga integritas biner dapat diverifikasi |
Mengaktifkan autentikasi saat menyambungkan ke antrean MSMQ di WCF
| Judul | Detail |
|---|---|
| Komponen | WCF |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik, NET Framework 3 |
| Atribut | Tidak Berlaku |
| Referensi | MSDN |
| Langkah-langkah | Program gagal mengaktifkan autentikasi saat menyambungkan ke antrean MSMQ, penyerang dapat secara anonim mengirimkan pesan ke antrean untuk diproses. Jika autentikasi tidak digunakan untuk menyambungkan ke antrean MSMQ yang digunakan untuk mengirimkan pesan ke program lain, penyerang dapat mengirimkan pesan anonim yang berbahaya. |
Contoh
Elemen <netMsmqBinding/> dari file konfigurasi WCF di bawah ini menginstruksikan WCF untuk menonaktifkan autentikasi saat menyambungkan ke antrean MSMQ untuk pengiriman pesan.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""None"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
Konfigurasikan MSMQ untuk mewajibkan autentikasi Domain atau Sertifikat Windows setiap saat untuk setiap pesan masuk atau keluar.
Contoh
Elemen <netMsmqBinding/> dari file konfigurasi WCF di bawah ini menginstruksikan WCF untuk mengaktifkan autentikasi sertifikat saat menyambungkan ke antrean MSMQ. Klien diautentikasi menggunakan sertifikat X.509. Sertifikat klien harus ada di penyimpanan sertifikat server.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""Certificate"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
WCF-Jangan atur Message clientCredentialType ke tidak ada
| Judul | Detail |
|---|---|
| Komponen | WCF |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | .NET Framework 3 |
| Atribut | Jenis Kredensial Klien - Tidak Ada |
| Referensi | MSDN, Fortify |
| Langkah-langkah | Tidak adanya autentikasi berarti semua orang dapat mengakses layanan ini. Layanan yang tidak mengautentikasi kliennya memungkinkan akses ke semua pengguna. Mengonfigurasi aplikasi untuk autentikasi dengan kredensial klien. Ini dapat dilakukan dengan mengatur pesan clientCredentialType ke Windows atau Sertifikat. |
Contoh
<message clientCredentialType=""Certificate""/>
WCF-Jangan atur Transport clientCredentialType ke tidak ada
| Judul | Detail |
|---|---|
| Komponen | WCF |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Umum, .NET Framework 3 |
| Atribut | Jenis Kredensial Klien - Tidak Ada |
| Referensi | MSDN, Fortify |
| Langkah-langkah | Tidak adanya autentikasi berarti semua orang dapat mengakses layanan ini. Layanan yang tidak mengautentikasi kliennya memungkinkan semua pengguna untuk mengakses fungsionalitasnya. Mengonfigurasi aplikasi untuk autentikasi dengan kredensial klien. Ini dapat dilakukan dengan mengatur transportasi clientCredentialType ke Windows atau Sertifikat. |
Contoh
<transport clientCredentialType=""Certificate""/>
Memastikan bahwa teknik autentikasi standar digunakan untuk mengamankan Web API
| Judul | Detail |
|---|---|
| Komponen | API Web |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Autentikasi dan Otorisasi di API Web ASP.NET, Layanan Autentikasi Eksternal dengan API Web ASP.NET (C#) |
| Langkah-langkah | Autentikasi adalah proses di mana entitas membuktikan identitasnya, biasanya melalui info masuk, seperti nama pengguna dan kata sandi. Ada beberapa protokol autentikasi yang tersedia yang mungkin dipertimbangkan. Beberapa di antaranya tercantum di bawah ini:
Tautan di bagian referensi memberikan detail tingkat rendah tentang bagaimana setiap skema autentikasi dapat diterapkan untuk mengamankan Web API. |
Gunakan skenario autentikasi standar yang didukung oleh ID Microsoft Entra
| Judul | Detail |
|---|---|
| Komponen | Microsoft Entra ID |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Skenario Autentikasi untuk ID Microsoft Entra, Sampel kode Microsoft Entra, panduan pengembang Microsoft Entra |
| Langkah-langkah | MICROSOFT Entra ID menyederhanakan autentikasi untuk pengembang dengan menyediakan identitas sebagai layanan, dengan dukungan untuk protokol standar industri seperti OAuth 2.0 dan OpenID Connect. Di bawah ini adalah lima skenario aplikasi utama yang didukung oleh ID Microsoft Entra:
Harap periksa tautan di bagian referensi untuk detail penerapan tingkat rendah |
Ganti cache token MSAL default dengan cache terdistribusi
| Judul | Detail |
|---|---|
| Komponen | Microsoft Entra ID |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Serialisasi cache token di MSAL.NET |
| Langkah-langkah | Cache default yang digunakan MSAL (Pustaka Autentikasi Microsoft) adalah cache dalam memori, dan dapat diskalakan. Namun ada berbagai opsi yang tersedia yang dapat Anda gunakan sebagai alternatif, seperti cache token terdistribusi. Ini memiliki mekanisme L1/L2, di mana L1 berada dalam memori dan L2 adalah implementasi cache terdistribusi. Ini dapat dikonfigurasi dengan sesuai untuk membatasi memori L1, mengenkripsi, atau mengatur kebijakan pengeluaran. Alternatif lainnya termasuk cache Redis, SQL Server, atau Azure Cosmos DB. Implementasi cache token terdistribusi dapat ditemukan dalam Tutorial berikut : Mulai menggunakan ASP.NET Core MVC. |
Pastikan bahwa TokenReplayCache digunakan untuk mencegah pemutaran ulang token autentikasi MSAL
| Judul | Detail |
|---|---|
| Komponen | Microsoft Entra ID |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Autentikasi Modern dengan ID Microsoft Entra untuk Aplikasi Web |
| Langkah-langkah | Properti TokenReplayCache memungkinkan pengembang untuk menentukan cache pemutaran ulang token, penyimpanan yang dapat digunakan untuk menyimpan token dengan tujuan memverifikasi bahwa tidak ada token yang dapat digunakan lebih dari sekali. Ini adalah langkah penanggulangan terhadap serangan umum, yang tepat disebut serangan memainkan ulang token: penyerang yang mencegat token yang dikirim saat masuk mungkin mencoba mengirimkannya kembali ke aplikasi untuk membuat sesi baru. Misalnya, dalam alur pemberian kode OIDC, setelah autentikasi pengguna berhasil, permintaan ke titik akhir "/ signin-oidc" dari pihak yang mengandalkan dibuat dengan parameter "id_token", "code" dan "state". Pihak yang mengandalkan memvalidasi permintaan ini dan membuat sesi baru. Jika musuh mengambil permintaan ini dan memutarnya kembali, dia dapat membuat sesi yang berhasil dan menipu pengguna. Kehadiran nonce di OpenID Connect dapat membatasi tetapi tidak sepenuhnya menghilangkan keadaan di mana serangan dapat berhasil dilakukan. Untuk melindungi aplikasinya, pengembang dapat menyediakan implementasi ITokenReplayCache dan menetapkan instans ke TokenReplayCache. |
Contoh
// ITokenReplayCache defined in MSAL
public interface ITokenReplayCache
{
bool TryAdd(string securityToken, DateTime expiresOn);
bool TryFind(string securityToken);
}
Contoh
Berikut adalah contoh implementasi antarmuka ITokenReplayCache. (Harap sesuaikan dan terapkan kerangka kerja penyimpanan sementara khusus proyek Anda)
public class TokenReplayCache : ITokenReplayCache
{
private readonly ICacheProvider cache; // Your project-specific cache provider
public TokenReplayCache(ICacheProvider cache)
{
this.cache = cache;
}
public bool TryAdd(string securityToken, DateTime expiresOn)
{
if (this.cache.Get<string>(securityToken) == null)
{
this.cache.Set(securityToken, securityToken);
return true;
}
return false;
}
public bool TryFind(string securityToken)
{
return this.cache.Get<string>(securityToken) != null;
}
}
Cache yang diimplementasikan harus dirujuk dalam opsi OIDC melalui properti "TokenValidationParameters" sebagai berikut.
OpenIdConnectOptions openIdConnectOptions = new OpenIdConnectOptions
{
AutomaticAuthenticate = true,
... // other configuration properties follow..
TokenValidationParameters = new TokenValidationParameters
{
TokenReplayCache = new TokenReplayCache(/*Inject your cache provider*/);
}
}
Harap dicatat bahwa untuk menguji efektivitas konfigurasi ini, silakan masuk ke aplikasi lokal Anda yang dilindungi OIDC dan tangkap permintaan ke titik akhir "/signin-oidc" di Fiddler. Saat perlindungan tidak ada, memutar ulang permintaan ini di Fiddler akan mengatur cookie sesi baru. Saat permintaan diputar ulang setelah perlindungan TokenReplayCache ditambahkan, aplikasi akan mengeluarkan pengecualian sebagai berikut: SecurityTokenReplayDetectedException: IDX10228: The securityToken has previously been validated, securityToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ1......
Menggunakan pustaka MSAL untuk mengelola permintaan token dari klien OAuth2 ke ID Microsoft Entra (atau AD lokal)
| Judul | Detail |
|---|---|
| Komponen | Microsoft Entra ID |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | MSAL |
| Langkah-langkah | Pustaka Autentikasi Microsoft (MSAL) memungkinkan pengembang memperoleh token keamanan dari platform identitas Microsoft untuk mengautentikasi pengguna dan mengakses API web aman. Ini dapat digunakan untuk menyediakan akses aman ke Microsoft Graph, Microsoft API lainnya, API web pihak ketiga, atau API web Anda sendiri. MSAL mendukung berbagai arsitektur dan platform aplikasi termasuk .NET, JavaScript, Java, Python, Android, dan iOS. |
MSAL memberi Anda banyak cara untuk mendapatkan token, dengan API yang konsisten untuk banyak platform. Tidak perlu langsung menggunakan pustaka atau kode OAuth terhadap protokol dalam aplikasi Anda, dan dapat memperoleh token atas nama pengguna atau aplikasi (jika berlaku untuk platform).
MSAL juga mempertahankan cache token dan menyegarkan token untuk Anda saat hampir kedaluwarsa. MSAL juga dapat membantu Anda menentukan audiens mana yang Anda inginkan untuk masuk aplikasi Anda, dan membantu Anda menyiapkan aplikasi dari file konfigurasi, dan memecahkan masalah aplikasi Anda.
Autentikasi perangkat yang tersambung ke Gateway Lapangan
| Judul | Detail |
|---|---|
| Komponen | Gateway Bidang IoT |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tidak Berlaku |
| Langkah-langkah | Pastikan setiap perangkat diautentikasi oleh Gateway Bidang sebelum menerima data dari perangkat tersebut dan sebelum memfasilitasi komunikasi upstream dengan Gateway Cloud. Selain itu, pastikan perangkat tersambung dengan info masuk per perangkat sehingga masing-masing perangkat dapat diidentifikasi secara unik. |
Memastikan bahwa perangkat yang tersambung ke gateway Cloud diautentikasi
| Judul | Detail |
|---|---|
| Komponen | Gateway IoT Cloud |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik, C#, Node.js, |
| Atribut | T/A, pilihan Gateway - Azure IoT Hub |
| Referensi | T/A, Azure IoT Hub dengan .NET, Memulai dengan IoT Hub dan Node JS, Mengamankan IoT dengan SAS dan sertifikat, repositori Git |
| Langkah-langkah |
- Generik: Mengautentikasi perangkat menggunakan Keamanan Lapisan Transportasi (TLS) atau IPsec. Infrastruktur harus mendukung penggunaan kunci yang dibagikan sebelumnya (PSK) pada perangkat yang tidak dapat menangani kriptografi asimetris penuh. Manfaatkan ID Microsoft Entra, OAuth.
-
C#: Saat membuat instans DeviceClient, secara default, metode Buat membuat instans DeviceClient yang menggunakan protokol AMQP untuk berkomunikasi dengan IoT Hub. Untuk menggunakan protokol HTTPS, gunakan penggantian metode buat yang memungkinkan Anda untuk menentukan protokol. Jika menggunakan protokol HTTPS, Anda juga harus menambahkan paket
Microsoft.AspNet.WebApi.ClientNuGet ke dalam proyek untuk menyertakan namespaceSystem.Net.Http.Formatting.
Contoh
static DeviceClient deviceClient;
static string deviceKey = "{device key}";
static string iotHubUri = "{iot hub hostname}";
var messageString = "{message in string format}";
var message = new Message(Encoding.ASCII.GetBytes(messageString));
deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice", deviceKey));
await deviceClient.SendEventAsync(message);
Contoh
Node.js: Autentikasi
Kunci simetris
- Membuat IoT Hub di Azure
- Membuat entri di registri identitas perangkat
var device = new iothub.Device(null); device.deviceId = <DeviceId > registry.create(device, function(err, deviceInfo, res) {}) - Membuat perangkat yang disimulasikan
var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString; var Message = require('azure-iot-device').Message; var connectionString = 'HostName=<host-name>DeviceId=<device-id>SharedAccessKey=<shared-access-key>'; var client = clientFromConnectionString(connectionString);Token SAS
- Dihasilkan secara internal saat menggunakan kunci simetris tetapi kita dapat menghasilkan dan menggunakannya secara eksplisit juga
- Tentukan protokol :
var Http = require('azure-iot-device-http').Http; - Buat token sas :
resourceUri = encodeURIComponent(resourceUri.toLowerCase()).toLowerCase(); var deviceName = "<device-name>"; var expires = (Date.now() / 1000) + expiresInMins * 60; var toSign = resourceUri + '\n' + expires; // using crypto var decodedPassword = new Buffer(signingKey, 'base64').toString('binary'); const hmac = crypto.createHmac('sha256', decodedPassword); hmac.update(toSign); var base64signature = hmac.digest('base64'); var base64UriEncoded = encodeURIComponent(base64signature); // construct authorization string var token = "SharedAccessSignature sr=" + resourceUri + "%2fdevices%2f"+deviceName+"&sig=" + base64UriEncoded + "&se=" + expires; if (policyName) token += "&skn="+policyName; return token; - Sambungkan menggunakan token sas:
Client.fromSharedAccessSignature(sas, Http);Sertifikat
- Hasilkan sertifikat X509 yang ditandatangani sendiri menggunakan alat apa pun seperti OpenSSL untuk menghasilkan file .cert dan .key untuk masing-masing menyimpan sertifikat dan kunci
- Provisikan perangkat yang menerima koneksi aman menggunakan sertifikat.
var connectionString = '<connection-string>'; var registry = iothub.Registry.fromConnectionString(connectionString); var deviceJSON = {deviceId:"<device-id>", authentication: { x509Thumbprint: { primaryThumbprint: "<primary-thumbprint>", secondaryThumbprint: "<secondary-thumbprint>" } }} var device = deviceJSON; registry.create(device, function (err) {}); - Menyambungkan perangkat menggunakan sertifikat
var Protocol = require('azure-iot-device-http').Http; var Client = require('azure-iot-device').Client; var connectionString = 'HostName=<host-name>DeviceId=<device-id>x509=true'; var client = Client.fromConnectionString(connectionString, Protocol); var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./server.crt', 'utf8') }; // Calling setOptions with the x509 certificate and key (and optionally, passphrase) will configure the client //transport to use x509 when connecting to IoT Hub client.setOptions(options); //call fn to execute after the connection is set up client.open(fn);
Menggunakan kredensial autentikasi untuk setiap perangkat
| Judul | Detail |
|---|---|
| Komponen | Gateway IoT Cloud |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Pilihan Gateway - Azure IoT Hub |
| Referensi | Token Keamanan Azure IoT Hub |
| Langkah-langkah | Gunakan info masuk autentikasi per perangkat menggunakan token SaS berdasarkan kunci Perangkat atau Sertifikat Klien, bukan kebijakan akses bersama tingkat IoT Hub. Ini mencegah penggunaan kembali token autentikasi dari satu perangkat atau gerbang lapangan oleh perangkat lain. |
Memaastikan hanya kontainer dan blob yang diperlukan yang diberikan akses baca anonim
| Judul | Detail |
|---|---|
| Komponen | Azure Storage |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | TipePenyimpanan - Gumpalan |
| Referensi | Mengelola akses baca anonim ke kontainer dan blob, Tanda Tangan Akses Bersama, Bagian 1: Memahami model SAS |
| Langkah-langkah | Secara default, kontainer dan blob apa pun di dalamnya mungkin hanya diakses oleh pemilik akun penyimpanan. Untuk memberikan izin baca kepada pengguna anonim ke kontainer dan blob-nya, seseorang dapat mengatur izin kontainer untuk mengizinkan akses publik. Pengguna anonim dapat membaca blob dalam kontainer yang dapat diakses publik tanpa mengautentikasi permintaan. Kontainer menyediakan opsi berikut untuk mengelola akses kontainer:
Akses anonim adalah yang terbaik untuk skenario di mana blob tertentu harus selalu tersedia untuk akses baca anonim. Untuk kontrol yang lebih halus, seseorang dapat membuat tanda tangan akses bersama, yang memungkinkan untuk mendelegasikan akses terbatas menggunakan izin yang berbeda dan selama interval waktu tertentu. Pastikan bahwa kontainer dan blob, yang mungkin berpotensi berisi data sensitif, tidak diberikan akses anonim secara tidak sengaja |
Memberikan akses terbatas ke objek di penyimpanan Azure menggunakan SAS atau SAP
| Judul | Detail |
|---|---|
| Komponen | Azure Storage |
| Fase SDL | Membangun |
| Teknologi yang Berlaku | Generik |
| Atribut | Tidak Berlaku |
| Referensi | Tanda Tangan Akses Bersama, Bagian 1: Memahami model SAS, Tanda Tangan Akses Bersama, Bagian 2: Membuat dan menggunakan SAS dengan penyimpanan Blob, Cara mendelegasikan akses ke objek di akun Anda menggunakan Tanda Tangan Akses Bersama dan Kebijakan Akses yang Disimpan |
| Langkah-langkah | Menggunakan tanda tangan akses bersama (SAS) adalah cara yang ampuh untuk memberikan akses terbatas ke objek dalam akun penyimpanan ke klien lain, tanpa harus mengekspos kunci akses akun. SAS adalah URI yang mencakup dalam parameter kuerinya semua informasi yang diperlukan untuk akses terautentikasi ke sumber daya penyimpanan. Untuk mengakses sumber daya penyimpanan dengan SAS, klien hanya perlu meneruskan SAS ke konstruktor atau metode yang sesuai. Anda dapat menggunakan SAS ketika Anda ingin memberikan akses ke sumber daya di akun penyimpanan Anda ke klien yang tidak dapat dipercaya dengan kunci akun. Kunci akun penyimpanan Anda mencakup kunci utama dan sekunder, keduanya memberikan akses administratif ke akun Anda dan semua sumber daya di dalamnya. Mengekspos salah satu kunci akun Anda membuka akun Anda terhadap kemungkinan penggunaan yang berbahaya atau lalai. Tanda tangan akses bersama memberikan alternatif aman yang memungkinkan klien lain membaca, menulis, dan menghapus data di akun penyimpanan Anda sesuai dengan izin yang Anda berikan, dan tanpa memerlukan kunci akun. Jika Anda memiliki sekumpulan parameter logis yang serupa setiap kali, menggunakan Stored Access Policy (SAP) adalah ide yang lebih baik. Karena menggunakan SAS yang berasal dari Kebijakan Akses Tersimpan memberi Anda kemampuan untuk segera mencabut SAS tersebut, disarankan sebagai praktik terbaik untuk selalu menggunakan Kebijakan Akses Tersimpan jika memungkinkan. |