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.
Microsoft tarafından
MVC uygulaması bağlamında Windows kimlik doğrulamasını kullanmayı öğrenin. Uygulamanızın web yapılandırma dosyasında Windows kimlik doğrulamasını etkinleştirmeyi ve IIS ile kimlik doğrulamasını yapılandırmayı öğreneceksiniz. Son olarak, denetleyici eylemlerine erişimi belirli Windows kullanıcıları veya gruplarıyla kısıtlamak için [Authorize] özniteliğini kullanmayı öğreneceksiniz.
Bu öğreticinin amacı, MVC uygulamalarınızdaki görünümleri parolayla korumak için Internet Information Services'te yerleşik olarak bulunan güvenlik özelliklerinden nasıl yararlanabileceğinizi açıklamaktır. Denetleyici eylemlerinin yalnızca belirli Windows kullanıcıları veya belirli Windows gruplarının üyesi olan kullanıcılar tarafından çağrılmasına nasıl izin vereceğinizi öğrenirsiniz.
Bir iç şirket web sitesi (intranet sitesi) oluştururken ve kullanıcılarınızın web sitesine erişirken standart Windows kullanıcı adlarını ve parolalarını kullanabilmesini istediğinizde Windows kimlik doğrulaması kullanmak mantıklıdır. Dışa dönük bir web sitesi (İnternet web sitesi) oluşturuyorsanız, bunun yerine Forms kimlik doğrulamasını kullanmayı göz önünde bulundurun.
Windows Kimlik Doğrulamasını Etkinleştirme
Yeni bir ASP.NET MVC uygulaması oluşturduğunuzda, Windows kimlik doğrulaması varsayılan olarak etkinleştirilmez. Forms kimlik doğrulaması, MVC uygulamaları için etkinleştirilen varsayılan kimlik doğrulama türüdür. MVC uygulamanızın web yapılandırması (web.config) dosyasını değiştirerek Windows kimlik doğrulamasını etkinleştirmeniz gerekir. <Kimlik doğrulama bölümünü bulun ve forms kimlik doğrulaması> yerine Windows kullanacak şekilde değiştirin:
<authentication mode="Windows">
</authentication>
Windows kimlik doğrulamasını etkinleştirdiğinizde, web sunucunuz kullanıcıların kimliğini doğrulamakla sorumlu olur. Genellikle, bir ASP.NET MVC uygulaması oluştururken ve dağıtırken kullandığınız iki farklı web sunucusu türü vardır.
İlk olarak, bir MVC uygulaması geliştirirken Visual Studio'da bulunan ASP.NET Geliştirme Web Sunucusu'nu kullanırsınız. Varsayılan olarak, ASP.NET Geliştirme Web Sunucusu tüm sayfaları geçerli Windows hesabı bağlamında yürütür (Windows'ta oturum açmak için kullandığınız hesap).
ASP.NET Geliştirme Web Sunucusu, NTLM kimlik doğrulamasını da destekler. Çözüm Gezgini penceresinde projenizin adına sağ tıklayıp Özellikler'i seçerek NTLM kimlik doğrulamasını etkinleştirebilirsiniz. Ardından, Web sekmesini seçin ve NTLM onay kutusunu işaretleyin (bkz. Şekil 1).
Şekil 1 – ASP.NET Geliştirme Web Sunucusu için NTLM kimlik doğrulamasını etkinleştirme
Üretim web uygulaması için ise web sunucunuz olarak IIS kullanırsınız. IIS, aşağıdakiler gibi çeşitli kimlik doğrulama türlerini destekler:
- Temel Kimlik Doğrulaması – HTTP 1.0 protokolünün bir parçası olarak tanımlanır. Kullanıcı adlarını ve parolaları internet üzerinden düz metin (Base64 kodlanmış) olarak gönderir. - Özet Kimlik Doğrulaması – İnternet üzerinden parolanın kendisi yerine bir parola karması gönderir. - Tümleşik Windows (NTLM) Kimlik Doğrulaması – Windows kullanan intranet ortamlarında kullanılacak en iyi kimlik doğrulaması türüdür. - Sertifika Kimlik Doğrulaması – İstemci tarafı sertifika kullanarak kimlik doğrulamasını etkinleştirir. Sertifika bir Windows kullanıcı hesabıyla eşler.
Not
Bu farklı kimlik doğrulama türlerine daha ayrıntılı bir genel bakış için bkz https://msdn.microsoft.com/library/aa292114(VS.71).aspx. .
Belirli bir kimlik doğrulaması türünü etkinleştirmek için Internet Information Services Yöneticisi'ni kullanabilirsiniz. Her işletim sistemi söz konusu olduğunda tüm kimlik doğrulaması türlerinin kullanılamadığını unutmayın. Ayrıca, Windows Vista ile IIS 7.0 kullanıyorsanız, Internet Information Services Yöneticisi'nde görünmeden önce farklı Windows kimlik doğrulaması türlerini etkinleştirmeniz gerekir. Denetim Masası, Programlar, Programlar ve Özellikler'i açın, Windows özelliklerini açın veya kapatın ve Internet Information Services düğümünü genişletin (bkz. Şekil 2).
Şekil 2 – Windows IIS özelliklerini etkinleştirme
Internet Information Services'i kullanarak farklı kimlik doğrulama türlerini etkinleştirebilir veya devre dışı bırakabilirsiniz. Örneğin, Şekil 3'de IIS 7.0 kullanırken anonim kimlik doğrulamasının devre dışı bırakılması ve Tümleşik Windows (NTLM) kimlik doğrulamasının etkinleştirilmesi gösterilmektedir.
Şekil 3 – Tümleşik Windows Kimlik Doğrulamasını Etkinleştirme
Windows Kullanıcılarını ve Gruplarını Yetkilendirme
Windows kimlik doğrulamasını etkinleştirdikten sonra, denetleyicilere veya denetleyici eylemlerine erişimi denetlemek için [Authorize] özniteliğini kullanabilirsiniz. Bu öznitelik bir MVC denetleyicisinin tamamına veya belirli bir denetleyici eylemine uygulanabilir.
Örneğin, Listeleme 1'deki Giriş denetleyicisi Index(), CompanySecrets() ve StephenSecrets() adlı üç eylemi kullanıma sunar. Herkes Index() eylemini çağırabilir. Ancak yalnızca Windows yerel Yöneticiler grubunun üyeleri CompanySecrets() eylemini çağırabilir. Son olarak, Yalnızca Stephen adlı Windows etki alanı kullanıcısı (Redmond etki alanında) StephenSecrets() eylemini çağırabilir.
Listeleme 1 – Controllers\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[Authorize(Roles = "Managers")]
public ActionResult CompanySecrets()
{
return View();
}
[Authorize(Users="redmond\\swalther")]
public ActionResult StephenSecrets()
{
return View();
}
}
}
Not
Windows Kullanıcı Hesabı Denetimi (UAC) nedeniyle, Windows Vista veya Windows Server 2008 ile çalışırken, yerel Yöneticiler grubu diğer gruplardan farklı davranır. Bilgisayarınızın UAC ayarlarını değiştirmediğiniz sürece [Authorize] özniteliği yerel Administrators grubunun bir üyesini doğru şekilde tanımaz.
Doğru izinler olmadan bir denetleyici eylemini çağırmaya çalıştığınızda tam olarak ne olacağı, etkinleştirilen kimlik doğrulama türüne bağlıdır. Varsayılan olarak, ASP.NET Geliştirme Sunucusu'nu kullanırken boş bir sayfa alırsınız. Sayfa 401 Yetkili Değil HTTP Yanıt Durumu ile sunulur.
Öte yandan, Anonim kimlik doğrulaması devre dışı bırakılmış ve Temel kimlik doğrulaması etkin olarak IIS kullanıyorsanız, korumalı sayfayı her istediğinizde bir oturum açma iletişim kutusu istemi almaya devam edin (bkz. Şekil 4).
Şekil 4 – Temel kimlik doğrulaması oturum açma iletişim kutusu
Özet
Bu öğreticide, bir ASP.NET MVC uygulaması bağlamında Windows kimlik doğrulamasını nasıl kullanabileceğiniz açıklanmıştır. Uygulamanızın web yapılandırma dosyasında Windows kimlik doğrulamasını etkinleştirmeyi ve IIS ile kimlik doğrulamasını yapılandırmayı öğrendinsiniz. Son olarak, denetleyici eylemlerine erişimi belirli Windows kullanıcıları veya gruplarıyla kısıtlamak için [Authorize] özniteliğini kullanmayı öğrendiniz.