Üretim web sitesindeki kullanıcılar ve roller (C#)
tarafından Scott Mitchell
Not
Bu makale yazıldığından beri, ASP.NET Üyeliği sağlayıcılarının yerini ASP.NET Identity alır. Bu makalenin yazıldığı sırada öne çıkan Üyelik sağlayıcıları yerine ASP.NET Kimlik platformunu kullanmak için uygulamaları güncelleştirmenizi kesinlikle öneririz. ASP.NET Identity, ASP.NET Üyelik sistemine göre çeşitli avantajlara sahiptir, örneğin:
- Daha iyi performans
- Geliştirilmiş genişletilebilirlik ve test edilebilirlik
- OAuth, OpenID Connect ve iki öğeli kimlik doğrulaması desteği
- Talep Tabanlı Kimlik desteği
- ASP.Net Core ile daha iyi birlikte çalışabilirlik
ASP.NET Web Sitesi Yönetim Aracı (WSAT), Üyelik ve Roller ayarlarını yapılandırmak ve kullanıcıları ve rolleri oluşturmak, düzenlemek ve silmek için web tabanlı bir kullanıcı arabirimi sağlar. Ne yazık ki, WSAT yalnızca localhost'tan ziyaret edildiğinde çalışır, yani üretim web sitesinin Yönetim Aracı'na tarayıcınızdan ulaşamazsınız. İyi haber, üretim ortamında kullanıcıları ve rolleri yönetmeyi mümkün hale getiren geçici çözümler olmasıdır. Bu öğreticide bu geçici çözümlere ve diğer çözümlere göz atabilirsiniz.
Giriş
ASP.NET 2.0, web uygulamanıza ekleyebileceğiniz yapı taşı hizmetlerinden oluşan bir paket olan bir dizi uygulama hizmetini kullanıma sunar. Üyelik ve Roller hizmetlerini , Uygulama Hizmetlerini Kullanan Bir Web Sitesini Yapılandırma öğreticisine kitap incelemeleri web sitesine geri ekledik. Üyelik hizmeti, kullanıcı hesaplarının oluşturulmasını ve yönetilmesini kolaylaştırır; Roller hizmeti, kullanıcıları gruplara ayırmak için bir API sunar. Kitap İncelemeleri sitesinde Scott, Jisun ve Alice olmak üzere üç kullanıcı hesabı ve Yönetici tek bir rol, scott ve jisun Yönetici rolü vardır.
ASP. NET'in uygulama hizmetleri belirli bir uygulamaya bağlı değildir. Bunun yerine, uygulama hizmetlerine belirli bir sağlayıcıyı kullanma talimatı verirsiniz ve bu sağlayıcı hizmeti belirli bir teknolojiyi kullanarak uygular. Kitap İncelemeleri web uygulamasını Üyelik ve Roller hizmetleri için ve SqlRoleProvider
sağlayıcılarını kullanacak SqlMembershipProvider
şekilde yapılandırdık. Bu iki sağlayıcı, kullanıcı hesabı ve rol bilgilerini bir SQL Server veritabanında depolar ve bir web barındırma şirketinde barındırılan İnternet tabanlı web uygulamaları için en yaygın kullanılan sağlayıcılardır.
Üyelik ve Roller hizmetlerini kullanan geliştiriciler için yaygın bir zorluk, üretim ortamındaki kullanıcıları ve rolleri yönetmektir. Üretim web sitesinden bir kullanıcı hesabını nasıl siler, yeni bir rol ekler veya mevcut bir kullanıcıyı var olan bir role nasıl eklersiniz? Bu öğreticide, üretim web sitesinde kullanıcıları ve rolleri yönetmek için farklı teknikler incelenmiştir.
ASP.NET Web Sitesi Yönetim Aracı'nı kullanma
ASP.NET, kullanıcı hesaplarını ve rollerini oluşturmayı ve yönetmeyi ve kullanıcı ve rol tabanlı yetkilendirme kurallarını belirtmeyi kolaylaştıran bir Web Sitesi Yönetim Aracı (WSAT) içerir. WSAT'yi kullanmak için, Çözüm Gezgini ASP.NET Yapılandırması simgesine tıklayın veya Web Sitesi veya Proje menüsüne gidip yapılandırma ASP.NET seçeneğini belirleyin. Her iki yaklaşım da bir web tarayıcısı başlatır ve şunun gibi bir adreste WSAT'ye işaret eder: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
WSAT üç bölüme ayrılır:
- Güvenlik : Kullanıcıları, rolleri ve yetkilendirme kurallarını yönetin.
- ApplicationConfiguration - appSettings> ve SMTP ayarlarını buradan yönetin<. Ayrıca uygulamayı çevrimdışına alabilir, hata ayıklama ve izleme ayarlarını buradan yönetebilir ve varsayılan özel hata sayfasını belirtebilirsiniz.
- ProviderConfiguration - Uygulama hizmetleri tarafından kullanılan sağlayıcıları yapılandırın.
Güvenlik bölümü ( Şekil 1'de gösterilmiştir) yeni kullanıcı oluşturma, kullanıcıları yönetme, rol oluşturma ve yönetme, erişim kuralları oluşturma ve yönetme bağlantılarını içerir. Buradan sisteme yeni bir rol ekleyebilir, mevcut bir kullanıcıyı silebilir veya belirli bir kullanıcı hesabından rol ekleyebilir veya kaldırabilirsiniz.
Şekil 1: WSAT Güvenlik Bölümü, Kullanıcıları ve Rolleri Yönetme Seçeneklerini içerir
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Ne yazık ki WSAT'ye yalnızca yerel olarak erişilebilir. Uzaktan üretim web sitenizde WSAT'yi ziyaret edemezsiniz; ziyaret www.yoursite.com/asp.netwebadminfiles/default.aspx
ederseniz 404 Bulunamadı yanıtı alırsınız. WSAT'yi destekleyen kod, kullanıcıları ve rolleri oluşturmak, düzenlemek ve silmek için .NET Framework ve Roles
sınıflarını kullanırMembership
. Bu sınıflar, hangi sağlayıcının kullanılacağını belirlemek için web uygulamasının yapılandırma bilgilerine başvurur; Uygulama Hizmetlerini Kullanan Bir Web Sitesi Yapılandırma öğreticisine geri dönüp Kitap İncelemeleri web sitesini ve SqlRoleProvider
sağlayıcılarını kullanacak SqlMembershipProvider
şekilde ayarladık. Bu, öğesine ve <roleManager>
bölümleri Web.config
eklemeyi <membership>
gerektirir.
<?xml version="1.0"?>
<configuration>
...
<connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />
<system.web>
...
<membership defaultProvider="ReviewMembership">
<providers>
<clear />
<add type="System.Web.Security.SqlMembershipProvider"
name="ReviewMembership"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="ReviewRole">
<providers>
<clear />
<add type="System.Web.Security.SqlRoleProvider"
name="ReviewRole"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</roleManager>
</system.web>
...
</configuration>
ve <roleManager>
bölümlerinin <membership>
özniteliklerindeki type
ve SqlRoleProvider
sağlayıcılarına SqlMembershipProvider
sırasıyla başvurduğunu unutmayın. Bu sağlayıcılar kullanıcı ve rol bilgilerini belirtilen SQL Server veritabanında depolar. Bu sağlayıcılar tarafından kullanılan veritabanı, ReviewsConnectionString
dosyasında tanımlanan özniteliği tarafından connectionStringName
belirtilir~/ConfigSections/databaseConnectionStrings.config
. Geliştirme ortamındaki databaseConnectionStrings.config
dosyanın geliştirme veritabanına bağlantı dizesini içerdiğini, üretim ortamındaki databaseConnectionStrings.config
dosya ise üretim veritabanına yönelik bağlantı dizesini içerdiğini hatırlayın.
Özetle, WSAT'ye geliştirme ortamı üzerinden yerel olarak erişilmelidir ve dosyada databaseConnectionStrings.config
belirtilen veritabanındaki kullanıcı ve rol bilgileriyle çalışır. Sonuç olarak, geliştirme ortamındaki dosyadaki databaseConnectionStrings.config
bağlantı dizesi bilgilerini değiştirirsek WSAT'yi üretim ortamındaki kullanıcıları ve rolleri yönetmek için yerel olarak kullanabiliriz.
Bu işlevselliği göstermek için, geliştirme ortamında visual studio'da dosyasını açın databaseConnectionStrings.config
ve geliştirme veritabanı bağlantı dizesini üretim veritabanı bağlantı dizesiyle değiştirin. Ardından WSAT'yi başlatın, Güvenlik sekmesine gidin ve "password!" parolasıyla Sam adlı yeni bir kullanıcı ekleyin (tırnak işaretlerini azaltma). Şekil 2'de bu hesap oluşturulurken WSAT ekranı gösterilmektedir.
Şekil 2: Üretim Ortamında Sam Adlı Yeni Bir Kullanıcı Oluşturma
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
içindeki databaseConnectionStrings.config
bağlantı dizesini üretim veritabanı sunucusuna işaret etmek üzere değiştirdiğimizden, Sam üretim ortamında kullanıcı olarak eklendi. Bunu doğrulamak için dosyadaki databaseConnectionStrings.config
bağlantı dizesini geliştirme veritabanına geri döndürerek geliştirme ortamındaki sayfayı Login.aspx
ziyaret edin. Sam olarak oturum açmayı deneyin (bkz . Şekil 3).
Şekil 3: Geliştirme Ortamında Sam Olarak Oturum Açamazsınız
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Kullanıcı hesabı bilgileri yerel veritabanında bulunmadığından geliştirme ortamında Sam olarak oturum alamazsınız. Bunun yerine üretim veritabanına eklenir. Bunu doğrulamak için hem geliştirme hem de üretim veritabanlarındaki tablonun içeriğini aspnet_Users
görüntüleyin. Geliştirme ortamında Scott, Jisun ve Alice kullanıcıları için yalnızca üç kayıt olmalıdır. Ancak üretim veritabanındaki aspnet_Users
tabloda dört kayıt vardır: Scott, Jisun, Alice ve Sam. Sonuç olarak, Sam üretim ortamında web sitesi üzerinden oturum açabilir, ancak geliştirme ortamı aracılığıyla oturum açamayabilir.
Şekil 4: Sam üretim web sitesinde oturum açabilir
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Not
WSAT ile çalışmayı bitirdiğinizde dosyadaki databaseConnectionStrings.config
bağlantı dizesini geliştirme veritabanının bağlantı dizesine geri döndürmeyi unutmayın, aksi takdirde geliştirme ortamı aracılığıyla siteyi test ederken üretim verileriyle çalışacaksınız. Ayrıca, az önce ele aldığımız teknik kullanıcıları ve rolleri uzaktan yönetmek için WSAT'yi kullanmamıza olanak tanırken, diğer WSAT yapılandırma seçeneklerinden herhangi birinde yapılan değişiklikler (erişim kuralları, SMTP ayarları, hata ayıklama ve izleme ayarları vb.) dosyayı değiştirir Web.config
. Sonuç olarak, ayarlarda yapılan tüm değişiklikler üretim ortamına değil geliştirme ortamına uygulanır.
Özel Kullanıcı ve Rol Yönetimi Web Sayfaları Oluşturma
WSAT, kullanıcıları ve rolleri yönetmek için kullanıma hazır bir sistem sağlar, ancak yalnızca yerel olarak başlatılabilir ve üretimdeki kullanıcıları ve rolleri yönetmek için bağlantı dizesi bilgilerinde değişiklik yapılmasını gerektirir. Kullanıcı hesaplarını destekleyen çoğu web sitesi, yöneticilerin sitedeki sayfalardan kullanıcıları ve rolleri yönetmesini sağlayan bir dizi kullanıcı ve rol yönetimi web sayfası da içerir. Bu tür web tabanlı yönetim sayfaları, kullanıcıları ve rolleri yönetmeyi çok daha kolay hale getirir ve WSAT'yi başlatmak için Visual Studio'ya erişimi veya teknik arka planı olmayan birçok yönetici veya yöneticinin bulunabileceği siteler için çok önemlidir.
ASP.NET, bu yönetim web sayfalarının birçoğunun uygulanmasını sürükleyip bırakmak kadar kolay hale getiren yerleşik Oturum Açma ile ilgili Web denetimleri içerir. Örneğin, CreateUserWizard denetimini sayfaya sürükleyip birkaç özellik ayarlayarak yöneticilerin yeni bir kullanıcı hesabı oluşturması için bir sayfa oluşturabilirsiniz. Aslında, Şekil 2'de gösterilen WSAT'de kullanıcı oluşturma sayfası, sayfalarınıza ekleyebileceğiniz Aynı CreateUserWizard denetimini kullanır. Ayrıca Üyelik ve Roller hizmetlerinin işlevleri, .NET Framework ve Roles
sınıfları aracılığıyla Membership
program aracılığıyla kullanılabilir. Bu sınıflarla kullanıcıları ve rolleri oluşturmak, düzenlemek ve silmek, ayrıca rollere kullanıcı eklemek veya kaldırmak, hangi kullanıcıların hangi rollerde olduğunu belirlemek ve kullanıcı ve rolle ilgili diğer görevleri gerçekleştirmek için kod yazabilirsiniz.
Application Services Kullanan Bir Web Sitesini Yapılandırma öğreticisinde adlı CreateAccount.aspx
klasöre Admin
bir sayfa ekledim. Bu sayfa, yöneticinin siteye yeni bir kullanıcı hesabı eklemesine ve yeni oluşturulan kullanıcının Yönetici rolünde olup olmadığını belirtmesine olanak tanır (bkz. Şekil 5).
Şekil 5: Yöneticiler Yeni Kullanıcı Hesapları Oluşturabilir
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Ve sınıflarını ve Oturum açma ile ilgili ASP.NET Web denetimlerini kullanmayla ilgili adım adım yönergelerin Membership
Roles
yanı sıra kullanıcı ve rol yönetimi sayfaları oluşturmaya daha ayrıntılı bir bakış için Web Sitesi Güvenliği Öğreticilerimi okuduğunuzdan emin olun. Burada yeni hesaplar oluşturmak, rol oluşturmak ve yönetmek, kullanıcıları rollere atamak ve diğer yaygın yönetim görevleri için web sayfaları oluşturma konusunda rehberlik bulabilirsiniz.
Üretim web sitesinde WSAT benzeri işlevler uygulamak için her zaman WSAT'nin özelliklerini uygulayan kendi web sayfalarınızı oluşturabilirsiniz. Kullanmaya başlamaya yardımcı olmak için klasöründe %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
bulunan WSAT kaynak kodunu gözden geçirin. Bir diğer seçenek de Dan Clem'in Kendi Web Sitenizin Yönetim Aracı başlıklı makalesinde paylaştığı WSAT alternatifini kullanmaktır. Dan, okuyuculara özel bir WSAT benzeri araç oluşturma işleminde yol gösterir, uygulamasının indirme için kaynak kodunu (C# dilinde) içerir ve özel WSAT'sini barındırılan bir web sitesine eklemek için adım adım yönergeler sağlar.
Özet
ASP.NET Web Sitesi Yönetim Aracı (WSAT), web sitenizin kullanıcı ve rol bilgilerini yönetmek için Üyelik ve Roller uygulama hizmetleriyle birlikte kullanılabilir. Ne yazık ki WSAT'ye yalnızca yerel olarak erişilebilir ve üretim web sitenizden ziyaret edilemez. Ancak, geliştirme ortamındaki bağlantı dizesini üretim veritabanına işaret etmek üzere değiştirerek WSAT'yi kullanarak üretim web sitesindeki kullanıcıları ve rolleri yönetebilirsiniz.
WSAT yaklaşımı, kullanıcıları ve rolleri yönetmek için hızlı ve kolay bir yol sağlarken, bağlantı dizesi bilgilerinde geçici değişikliklerin yanı sıra Visual Studio'dan WSAT'nin başlatılmasını da gerektirmektedir. WSAT, üretim ortamında kullanıcıları ve rolleri yönetmek için hızlı bir yol sunar, ancak hantaldır ve birden çok yöneticisi olan veya Visual Studio ve WSAT kullanmayan veya kullanmayan yöneticilere sahip olan web siteleri için iyi çalışmaz. Bu nedenlerden dolayı, kullanıcı hesaplarını destekleyen çoğu web sitesi bir dizi yönetim web sayfası içerir. Böyle bir web sayfası kümesi, WSAT ihtiyacını ortadan kaldırır ve herhangi bir bilgisayardan çeşitli yönetici kullanıcılar tarafından kullanılır.
Mutlu Programlama!
Daha Fazla Bilgi
Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
- ASP'yi inceleme. NET'in Üyeliği, Rolleri ve Profili
- Kendi Web Sitesi Yönetim Aracınızı Döndürme
- Web Sitesi Yönetim Aracına Genel Bakış
- Web Sitesi Güvenliği Öğreticileri