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.
Aplikasi Universal Windows Platform (UWP) yang memerlukan autentikasi aman di luar id pengguna dan kombinasi kata sandi dapat menggunakan sertifikat untuk autentikasi. Autentikasi sertifikat memberikan tingkat kepercayaan yang tinggi saat mengautentikasi pengguna. Dalam beberapa kasus, sekelompok layanan akan ingin mengautentikasi pengguna untuk beberapa aplikasi. Artikel ini memperlihatkan bagaimana Anda dapat mengautentikasi beberapa aplikasi menggunakan sertifikat yang sama, dan bagaimana Anda dapat menyediakan kode yang nyaman bagi pengguna untuk mengimpor sertifikat yang disediakan untuk mengakses layanan web aman.
Aplikasi dapat mengautentikasi ke layanan web menggunakan sertifikat, dan beberapa aplikasi dapat menggunakan satu sertifikat dari penyimpanan sertifikat untuk mengautentikasi pengguna yang sama. Jika sertifikat tidak ada di penyimpanan, Anda dapat menambahkan kode ke aplikasi Anda untuk mengimpor sertifikat dari file PFX.
Mengaktifkan Microsoft Internet Information Services (IIS) dan pemetaan sertifikat klien
Artikel ini menggunakan Microsoft Internet Information Services (IIS) untuk tujuan contoh. IIS tidak diaktifkan secara default. Anda dapat mengaktifkan IIS dengan menggunakan Panel Kontrol.
- Buka Panel Kontrol dan pilih program .
- Pilih Mengaktifkan atau menonaktifkan fitur Windows.
- Perluas Layanan Informasi Internet
lalu perluas Fitur Pengembangan AplikasiWorld Wide Web Services . Perluasdan pilih ASP.NET 3,5 danASP.NET 4,5 . Membuat pilihan ini akan secara otomatis mengaktifkan Internet Information Services. - Klik OK untuk menerapkan perubahan.
Membuat dan menerbitkan layanan web aman
Jalankan Microsoft Visual Studio sebagai administrator dan pilih Proyek Baru dari halaman mulai. Akses administrator diperlukan untuk menerbitkan layanan web ke server IIS. Dalam dialog Proyek Baru, ubah kerangka kerja menjadi .NET Framework 3.5. Pilih
Visual C# - Web -Visual Studio -Aplikasi Layanan WebASP.NET . Beri nama aplikasi "FirstContosoBank". Klik OK untuk membuat proyek. Dalam file Service1.asmx.cs, ganti metode web HelloWorld default dengan metode "Masuk" berikut.
[WebMethod] public string Login() { // Verify certificate with CA var cert = new System.Security.Cryptography.X509Certificates.X509Certificate2( this.Context.Request.ClientCertificate.Certificate); bool test = cert.Verify(); return test.ToString(); }
Simpan file Service1.asmx.cs.
DiPenjelajah Solusi
, klik kanan aplikasi "FirstContosoBank" dan pilih Terbitkan .Dalam dialog Terbitkan Web, buat profil baru dan beri nama "ContosoProfile". Klik Berikutnya.
Pada halaman berikutnya, masukkan nama server untuk server IIS Anda, dan tentukan nama situs "Situs Web Default/FirstContosoBank". Klik Terbitkan untuk menerbitkan layanan web Anda.
Mengonfigurasi layanan web Anda untuk menggunakan autentikasi sertifikat klien
- Jalankan Manajer Internet Information Services (IIS).
- Perluas situs untuk server IIS Anda. Di bawah Situs Web Default, pilih layanan web baru "FirstContosoBank". Di bagian Tindakan, pilih Pengaturan Lanjutan ....
- Atur Kumpulan Aplikasi ke .NET v2.0 dan klik OK.
- Di Manajer Internet Information Services (IIS), pilih server IIS Anda lalu klik ganda Sertifikat Server. Di bagian Tindakan
, pilih Buat Sertifikat Self-Signed... . Masukkan "ContosoBank" sebagai nama yang mudah diingat untuk sertifikat dan klikOK . Ini akan membuat sertifikat baru untuk digunakan oleh server IIS dalam bentuk "<nama server>.<>nama domain ". - Di Manajer Internet Information Services (IIS), pilih situs web default. Di bagian Tindakan, pilih Pengikatan lalu klik Tambahkan.... Pilih "https" sebagai jenis, atur port ke "443", dan masukkan nama host lengkap untuk server IIS Anda ("<nama server>.<nama domain>"). Atur sertifikat SSL ke "ContosoBank". Klik OK. Klik Tutup di jendela Pengikatan Situs.
- DiManajer Layanan Informasi Internet (IIS)
, pilih layanan web "FirstContosoBank". Klik dua kali Pengaturan SSL. Periksa MemerlukanSSL . Di bawah sertifikat Klien, pilih Wajibkan. Di bagian Tindakan, klik Terapkan. - Anda dapat memverifikasi bahwa layanan web dikonfigurasi dengan benar dengan membuka browser web Anda dan memasukkan alamat web berikut: "https://<nama server>.<nama domain>/FirstContosoBank/Service1.asmx". Misalnya, "https://myserver.example.com/FirstContosoBank/Service1.asmx". Jika layanan web Anda dikonfigurasi dengan benar, Anda akan diminta untuk memilih sertifikat klien untuk mengakses layanan web.
Anda dapat mengulangi langkah-langkah sebelumnya untuk membuat beberapa layanan web yang dapat diakses menggunakan sertifikat klien yang sama.
Membuat aplikasi UWP yang menggunakan autentikasi sertifikat
Sekarang setelah Anda memiliki satu atau beberapa layanan web yang aman, aplikasi Anda dapat menggunakan sertifikat untuk mengautentikasi ke layanan web tersebut. Saat Anda membuat permintaan ke layanan web terautentikasi menggunakan objek HttpClient
Jika tidak ada sertifikat klien yang tersedia, maka pengguna harus menambahkan sertifikat ke penyimpanan sertifikat. Anda dapat menyertakan kode di aplikasi yang memungkinkan pengguna memilih file PFX yang berisi sertifikat klien lalu mengimpor sertifikat tersebut ke penyimpanan sertifikat klien.
Tip Anda dapat menggunakan makecert.exe untuk membuat file PFX dengan panduan cepat ini. Untuk informasi tentang menggunakan makecert.exe, lihat MakeCert.
Buka Visual Studio dan buat proyek baru dari halaman mulai. Beri nama proyek baru "FirstContosoBankApp". Klik OK untuk membuat proyek baru.
Dalam file MainPage.xaml, tambahkan XAML berikut ke elemen Grid default . XAML ini menyertakan tombol untuk menelusuri file PFX yang akan diimpor, kotak teks untuk memasukkan kata sandi untuk file PFX yang dilindungi kata sandi, tombol untuk mengimpor file PFX yang dipilih, tombol untuk masuk ke layanan web aman, dan blok teks untuk menampilkan status tindakan saat ini.
<Button x:Name="Import" Content="Import Certificate (PFX file)" HorizontalAlignment="Left" Margin="352,305,0,0" VerticalAlignment="Top" Height="77" Width="260" Click="Import_Click" FontSize="16"/> <Button x:Name="Login" Content="Login" HorizontalAlignment="Left" Margin="611,305,0,0" VerticalAlignment="Top" Height="75" Width="240" Click="Login_Click" FontSize="16"/> <TextBlock x:Name="Result" HorizontalAlignment="Left" Margin="355,398,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="153" Width="560"/> <PasswordBox x:Name="PfxPassword" HorizontalAlignment="Left" Margin="483,271,0,0" VerticalAlignment="Top" Width="229"/> <TextBlock HorizontalAlignment="Left" Margin="355,271,0,0" TextWrapping="Wrap" Text="PFX password" VerticalAlignment="Top" FontSize="18" Height="32" Width="123"/> <Button x:Name="Browse" Content="Browse for PFX file" HorizontalAlignment="Left" Margin="352,189,0,0" VerticalAlignment="Top" Click="Browse_Click" Width="499" Height="68" FontSize="16"/> <TextBlock HorizontalAlignment="Left" Margin="717,271,0,0" TextWrapping="Wrap" Text="(Optional)" VerticalAlignment="Top" Height="32" Width="83" FontSize="16"/>
Simpan file MainPage.xaml.
Dalam file MainPage.xaml.cs, tambahkan pernyataan penggunaan berikut.
using Windows.Web.Http; using System.Text; using Windows.Security.Cryptography.Certificates; using Windows.Storage.Pickers; using Windows.Storage; using Windows.Storage.Streams;
Dalam file MainPage.xaml.cs, tambahkan variabel berikut ke kelas
MainPage. Mereka menentukan alamat untuk metode "Login" yang aman dari layanan web "FirstContosoBank" Anda, serta menentukan variabel global yang digunakan untuk menyimpan sertifikat PFX yang akan diimpor ke penyimpanan sertifikat. Perbarui <nama server> ke nama server lengkap yang memenuhi syarat untuk server Microsoft Internet Information Server (IIS) Anda. private Uri requestUri = new Uri("https://<server-name>/FirstContosoBank/Service1.asmx?op=Login"); private string pfxCert = null;
Dalam file MainPage.xaml.cs, tambahkan penanganan klik berikut untuk tombol masuk dan metode untuk mengakses layanan web aman.
private void Login_Click(object sender, RoutedEventArgs e) { MakeHttpsCall(); } private async void MakeHttpsCall() { StringBuilder result = new StringBuilder("Login "); HttpResponseMessage response; try { Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient(); response = await httpClient.GetAsync(requestUri); if (response.StatusCode == HttpStatusCode.Ok) { result.Append("successful"); } else { result = result.Append("failed with "); result = result.Append(response.StatusCode); } } catch (Exception ex) { result = result.Append("failed with "); result = result.Append(ex.Message); } Result.Text = result.ToString(); }
Dalam file MainPage.xaml.cs, tambahkan pengendali klik berikut untuk tombol yang digunakan untuk menelusuri file PFX dan tombol yang digunakan untuk mengimpor file PFX yang dipilih ke dalam penyimpanan sertifikat.
private async void Import_Click(object sender, RoutedEventArgs e) { try { Result.Text = "Importing selected certificate into user certificate store...."; await CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync( pfxCert, PfxPassword.Password, ExportOption.Exportable, KeyProtectionLevel.NoConsent, InstallOptions.DeleteExpired, "Import Pfx"); Result.Text = "Certificate import succeeded"; } catch (Exception ex) { Result.Text = "Certificate import failed with " + ex.Message; } } private async void Browse_Click(object sender, RoutedEventArgs e) { StringBuilder result = new StringBuilder("Pfx file selection "); FileOpenPicker pfxFilePicker = new FileOpenPicker(); pfxFilePicker.FileTypeFilter.Add(".pfx"); pfxFilePicker.CommitButtonText = "Open"; try { StorageFile pfxFile = await pfxFilePicker.PickSingleFileAsync(); if (pfxFile != null) { IBuffer buffer = await FileIO.ReadBufferAsync(pfxFile); using (DataReader dataReader = DataReader.FromBuffer(buffer)) { byte[] bytes = new byte[buffer.Length]; dataReader.ReadBytes(bytes); pfxCert = System.Convert.ToBase64String(bytes); PfxPassword.Password = string.Empty; result.Append("succeeded"); } } else { result.Append("failed"); } } catch (Exception ex) { result.Append("failed with "); result.Append(ex.Message); ; } Result.Text = result.ToString(); }
Jalankan aplikasi Anda dan masuk ke layanan web aman Anda serta impor file PFX ke penyimpanan sertifikat lokal.
Anda dapat menggunakan langkah-langkah ini untuk membuat beberapa aplikasi yang menggunakan sertifikat pengguna yang sama untuk mengakses layanan web aman yang sama atau berbeda.