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.
Bazı yaygın kimlik doğrulama düzenleri düz HTTP üzerinden güvenli değildir. Özellikle, Temel kimlik doğrulaması ve form kimlik doğrulaması şifrelenmemiş kimlik bilgileri gönderir. Güvenli olması için, bu kimlik doğrulama düzenlerinin SSL kullanması gerekir. Ayrıca, istemcilerin kimliğini doğrulamak için SSL istemci sertifikaları kullanılabilir.
Sunucuda SSL'yi etkinleştirme
IIS 7 veya sonraki sürümlerde SSL ayarlamak için:
- Sertifika oluşturun veya alın. Test için otomatik olarak imzalanan bir sertifika oluşturabilirsiniz.
- HTTPS bağlaması ekleyin.
Ayrıntılar için bkz. IIS 7'de SSL Ayarlama
Yerel test için Visual Studio'dan IIS Express'te SSL'yi etkinleştirebilirsiniz. Özellikler penceresinde SSL Etkin ayarını Trueolarak ayarlayın.
Web API Denetleyicisinde SSL'yi zorlama
Hem HTTPS hem de HTTP bağlamanız varsa, istemciler siteye erişmek için HTTP kullanmaya devam edebilir. Bazı kaynakların HTTP üzerinden kullanılabilir duruma geçmesine izin verirken, diğer kaynaklar ssl gerektirir. Bu durumda, korumalı kaynaklar için SSL istemek üzere bir eylem filtresi kullanın. Aşağıdaki kod, SSL'yi denetleen bir Web API kimlik doğrulama filtresi gösterir:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Bu filtreyi SSL gerektiren herhangi bir Web API'sine ekleyin:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
SSL İstemci Sertifikaları
SSL, Ortak Anahtar Altyapısı sertifikalarını kullanarak kimlik doğrulaması sağlar. Sunucunun istemcide sunucunun kimliğini doğrulayan bir sertifika sağlaması gerekir. İstemcinin sunucuya sertifika sağlaması daha az yaygındır, ancak bu, istemcilerin kimliğini doğrulamak için bir seçenektir. İstemci sertifikalarını SSL ile kullanmak için, imzalı sertifikaları kullanıcılarınıza dağıtmak için bir yol gerekir. Birçok uygulama türü için bu iyi bir kullanıcı deneyimi olmayacaktır, ancak bazı ortamlarda (örneğin kurumsal) uygulanabilir olabilir.
Avantaj -ları | Dezavantaj -ları |
---|---|
- Sertifika kimlik bilgileri kullanıcı adı/paroladan daha güçlü. - SSL, kimlik doğrulaması, ileti bütünlüğü ve ileti şifreleme ile eksiksiz bir güvenli kanal sağlar. | - PKI sertifikalarını edinmeniz ve yönetmeniz gerekir. - İstemci platformu SSL istemci sertifikalarını desteklemelidir. |
IIS'yi istemci sertifikalarını kabul etmek üzere yapılandırmak için IIS Yöneticisi'ni açın ve aşağıdaki adımları uygulayın:
Ağaç görünümünde site düğümüne tıklayın.
Orta bölmede ssl ayarları
özelliğine çift tıklayın. İstemci Sertifikalarıaltında şu seçeneklerden birini belirleyin:
- Kabul Et: IIS istemciden bir sertifika kabul eder, ancak bir sertifika gerektirmez.
- Gerektir: İstemci sertifikası talep et. (Bu seçeneği etkinleştirmek için "SSL gerektir" seçeneğini de belirlemeniz gerekir)
Bu seçenekleri ApplicationHost.config dosyasında da ayarlayabilirsiniz:
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert" />
<!-- To require a client cert: -->
<!-- <access sslFlags="Ssl, SslRequireCert" /> -->
</security>
</system.webServer>
SslNegotiateCert bayrağı, IIS'nin istemciden bir sertifika kabul edeceği, ancak bir sertifika gerektirmediği anlamına gelir (IIS Yöneticisi'ndeki "Kabul Et" seçeneğine eşdeğerdir). Sertifika istemek için SslRequireCert bayrağını
Test için İstemci Sertifikası Oluşturma
Test amacıyla, istemci sertifikası oluşturmak için MakeCert.exe kullanabilirsiniz. İlk olarak bir test kök yetkilisi oluşturun:
makecert.exe -n "CN=Development CA" -r -sv TempCA.pvk TempCA.cer
Makecert, özel anahtar için bir parola girmenizi ister.
Ardından, sertifikayı aşağıdaki gibi test sunucusunun "Güvenilen Kök Sertifika Yetkilileri" deposuna ekleyin:
- MMC'i açın.
- Dosyaaltında, Eklenti Ekle/Kaldırseçin.
- Kullanılabilir ek bileşenleraltında, Sertifikalar'ü seçin ve ardından Ekle'ye tıklayın.
- bilgisayar hesabıseçin.
- yerel bilgisayar
seçin ve sihirbazı tamamlayın. - Gezinti bölmesinin altında "Güvenilen Kök Sertifika Yetkilileri" düğümünü genişletin.
- Eylem menüsünde, Tüm Görevlerüzerine gelin ve Sertifika İçeri Aktarma Sihirbazı'nı başlatmak için İçeri Aktar'a tıklayın.
- Sertifika dosyasına göz atın TempCA.cer.
Aç'a tıklayın, ardından İleri 'e tıklayın ve sihirbazı tamamlayın. (Parolayı yeniden girmeniz istenir.)
Şimdi ilk sertifika tarafından imzalanan bir istemci sertifikası oluşturun:
makecert.exe -pe -ss My -sr CurrentUser -a sha1 -sky exchange -n "CN=name"
-eku 1.3.6.1.5.5.7.3.2 -sk SignedByCA -ic TempCA.cer -iv TempCA.pvk
Web API'sinde İstemci Sertifikalarını Kullanma
Sunucu tarafında, istek iletisinde getClientCertificate
X509Certificate2 cert = Request.GetClientCertificate();
string issuer = cert.Issuer;
string subject = cert.Subject;