Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kullanıcı kimliği ve parola bileşimi dışında güvenli kimlik doğrulaması gerektiren Evrensel Windows Platformu (UWP) uygulamaları, kimlik doğrulaması için sertifikaları kullanabilir. Sertifika kimlik doğrulaması, kullanıcının kimliğini doğrularken yüksek düzeyde güven sağlar. Bazı durumlarda, bir hizmet grubu birden çok uygulama için kullanıcının kimliğini doğrulamak ister. Bu makalede, aynı sertifikayı kullanarak birden çok uygulamanın kimliğini nasıl doğrulayabileceğiniz ve kullanıcının güvenli web hizmetlerine erişmek için sağlanan bir sertifikayı içeri aktarması için nasıl uygun kod sağlayabileceğiniz gösterilir.
Uygulamalar bir sertifika kullanarak bir web hizmetinde kimlik doğrulaması yapabilir ve birden çok uygulama aynı kullanıcının kimliğini doğrulamak için sertifika deposundan tek bir sertifika kullanabilir. Depoda bir sertifika yoksa, PFX dosyasından bir sertifika yüklemek için uygulamanıza kod ekleyebilirsiniz.
Microsoft Internet Information Services (IIS) ve istemci sertifikası eşlemesini etkinleştirme
Bu makalede, örnek amaçlarla Microsoft Internet Information Services (IIS) kullanılır. IIS varsayılan olarak etkin değildir. Denetim Masası'nı kullanarak IIS'yi etkinleştirebilirsiniz.
- Denetim Masası'nı açın ve Programlarseçin.
- Windows özelliklerini aç veya kapatseçin.
- Internet Information Services genişletin ve ardından World Wide Web Servicesgenişletin. Uygulama Geliştirme Özellikleri'ne genişletin ve ASP.NET 3.5 ve ASP.NET 4.5'i seçin. Bu seçimlerin yapılması İnternet Bilgi Hizmetleriotomatik olarak etkinleştirecektir.
- Değişiklikleri uygulamak için Tamam tıklayın.
Güvenli web hizmeti oluşturma ve yayımlama
Microsoft Visual Studio'yu yönetici olarak çalıştırın ve başlangıç sayfasından Yeni Proje'yi seçin. Iis sunucusuna bir web hizmeti yayımlamak için yönetici erişimi gereklidir. Yeni Proje iletişim kutusunda çerçeveyi .NET Framework 3.5 olarak değiştirin. Visual C# -> ->Visual Studio ->ASP.NET Web Hizmeti Uygulaması'nı seçin. Uygulamayı "FirstContosoBank" olarak adlandırın. Projeyi oluşturmak için Tamam'e tıklayın.
Service1.asmx.cs dosyasında, varsayılan HelloWorld web yöntemini aşağıdaki "Login" yöntemiyle değiştirin.
[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(); }Service1.asmx.cs dosyasını kaydedin.
Çözüm Gezgini'nde "FirstContosoBank" uygulamasına üzerine sağ tıklayın ve Yayımlaöğesini seçin.
Web'i Yayımla iletişim kutusunda yeni bir profil oluşturun ve bunu "ContosoProfile" olarak adlandırın. İleri'ye tıklayın.
Sonraki sayfada IIS sunucunuzun sunucu adını girin ve "Varsayılan Web Sitesi/FirstContosoBank" site adını belirtin. Web hizmetinizi yayınlamak için Yayınla'ye tıklayın.
Web hizmetinizi istemci sertifikası kimlik doğrulamasını kullanacak şekilde yapılandırma
- Internet Information Services (IIS) Yöneticisini çalıştırın.
- IIS sunucunuzun sitelerini genişletin. Varsayılan Web Sitesi'nin altında yeni "FirstContosoBank" web hizmetini seçin. Eylemler bölümünde Gelişmiş Ayarlar... öğesini seçin.
- Uygulama Havuzu'yi .NET v2.0 olarak ayarlayın ve tamam'ye tıklayın.
- Internet Information Services (IIS) Yöneticisi'nde, IIS sunucunuzu seçin ve ardından Sunucu Sertifikaları'ne çift tıklayın. Eylemler bölümünde Self-Signed Sertifikası Oluştur... öğesini seçin. Sertifikanın kolay adı olarak "ContosoBank" yazın ve Tamam'a tıklayın. Bu, IIS sunucusu tarafından "<sunucu-adı>.<etki alanı-adı>" biçiminde kullanılmak üzere yeni bir sertifika oluşturur.
- Internet Information Services (IIS) Yöneticisi'nde varsayılan web sitesini seçin. Eylemler bölümünde, Bağlama seçeneğini seçin ve ardından Ekle...'ye tıklayın. Tür olarak "https" seçeneğini seçin, bağlantı noktasını "443" olarak ayarlayın ve IIS sunucunuzun tam ana bilgisayar adını ("<sunucu-adı>.<etki-alanı>") girin. SSL sertifikasını "ContosoBank" olarak ayarlayın. Tamam'a tıklayın. Site Bağlamaları penceresinde Kapat'a tıklayın.
-
Internet Information Services (IIS) Yöneticisi'de, "FirstContosoBank" web hizmetini seçin. ssl ayarları
çift tıklayın. Denetleyin, SSL gerektir. İstemci sertifikalarıaltında, Gerektirseçeneğini seçin. Eylemler bölümünde Uygula'ya tıklayın. - Web tarayıcınızı açıp şu web adresini girerek web hizmetinin doğru yapılandırıldığını doğrulayabilirsiniz: "https://< server-name>.<domain-name>/FirstContosoBank/Service1.asmx". Örneğin, "https://myserver.example.com/FirstContosoBank/Service1.asmx". Web hizmetiniz doğru yapılandırıldıysa, web hizmetine erişmek için bir istemci sertifikası seçmeniz istenir.
Aynı istemci sertifikası kullanılarak erişilebilen birden çok web hizmeti oluşturmak için önceki adımları yineleyebilirsiniz.
Sertifika kimlik doğrulaması kullanan bir UWP uygulaması oluşturma
Artık bir veya daha fazla güvenli web hizmetiniz olduğuna göre, uygulamalarınız bu web hizmetlerinde kimlik doğrulaması yapmak için sertifikaları kullanabilir. HttpClient nesnesini kullanarak kimliği doğrulanmış bir web hizmetine istekte bulunursanız, ilk istek bir istemci sertifikası içermez. Kimliği doğrulanmış web hizmeti, istemci kimlik doğrulaması isteğiyle yanıt verir. Bu durumda, Windows istemcisi kullanılabilir istemci sertifikaları için sertifika deposunu otomatik olarak sorgular. Kullanıcınız web hizmetinde kimlik doğrulaması yapmak için bu sertifikalardan birini seçebilir. Bazı sertifikalar parola korumalıdır, bu nedenle kullanıcıya bir sertifikanın parolasını girme yolu sağlamanız gerekir.
Kullanılabilir istemci sertifikası yoksa, kullanıcının sertifika deposuna bir sertifika eklemesi gerekir. Uygulamanıza kullanıcının istemci sertifikası içeren bir PFX dosyası seçmesini ve ardından bu sertifikayı istemci sertifika deposuna aktarmasını sağlayan kodu ekleyebilirsiniz.
İpucu Bu hızlı başlangıçta kullanmak üzere bir PFX dosyası oluşturmak için makecert.exe kullanabilirsiniz. makecert.exekullanımıyla ilgili bilgi için MakeCert'e bakın.
Visual Studio'yu açın ve başlangıç sayfasından yeni bir proje oluşturun. Yeni projeyi "FirstContosoBankApp" olarak adlandırın. Yeni projeyi oluşturmak için Tamam'a tıklayın.
MainPage.xaml dosyasında, aşağıdaki XAML'yi varsayılan Grid öğesine ekleyin. Bu XAML, içeri aktaracak PFX dosyasına göz atmak için bir düğme, parola korumalı PFX dosyası için parola girmek için bir metin kutusu, seçili PFX dosyasını içeri aktarma düğmesi, güvenli web hizmetinde oturum açmak için bir düğme ve geçerli eylemin durumunu görüntülemek için bir metin bloğu içerir.
<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"/>MainPage.xaml dosyasını kaydedin.
MainPage.xaml.cs dosyasına aşağıdaki using deyimlerini ekleyin.
using Windows.Web.Http; using System.Text; using Windows.Security.Cryptography.Certificates; using Windows.Storage.Pickers; using Windows.Storage; using Windows.Storage.Streams;MainPage.xaml.cs dosyasında MainPage sınıfına aşağıdaki değişkenleri ekleyin. "FirstContosoBank" web hizmetinizin güvenli "Login" yönteminin adresini ve sertifika deposuna içeri aktarılacak PFX sertifikasına sahip bir genel değişkeni belirtir. <sunucu adı>'yi Microsoft Internet Information Server (IIS) sunucunuz için tam nitelikli sunucu adıyla güncelleyin.
private Uri requestUri = new Uri("https://<server-name>/FirstContosoBank/Service1.asmx?op=Login"); private string pfxCert = null;MainPage.xaml.cs dosyasında, güvenli web hizmetine erişmek için oturum açma düğmesi ve yöntemi için aşağıdaki tıklama işleyicisini ekleyin.
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(); }MainPage.xaml.cs dosyasında, bir PFX dosyasına göz atmak için düğme için aşağıdaki tıklama işleyicilerini ve seçili pfx dosyasını sertifika deposuna içeri aktarma düğmesini ekleyin.
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(); }Uygulamanızı çalıştırın, güvenli web hizmetinizde oturum açın ve yerel sertifika deposuna bir PFX dosyası içeri aktarın.
Aynı veya farklı güvenli web hizmetlerine erişmek için aynı kullanıcı sertifikasını kullanan birden çok uygulama oluşturmak için bu adımları kullanabilirsiniz.