Nasıl yapılır: ASP.NET Üyelik Sağlayıcısını Kullanma
ASP.NET üyelik sağlayıcısı, ASP.NET geliştiricilerin kullanıcıların benzersiz kullanıcı adı ve parola bileşimleri oluşturmasına olanak tanıyan Web siteleri oluşturmasına olanak tanıyan bir özelliktir. Bu tesisle, herhangi bir kullanıcı siteyle bir hesap kurabilir ve siteye ve hizmetlerine özel erişim için oturum açabilir. Bu, kullanıcıların bir Windows etki alanında hesap sahibi olmasını gerektiren Windows güvenliğinin aksinedir. Bunun yerine, kimlik bilgilerini sağlayan tüm kullanıcılar (kullanıcı adı/parola bileşimi) siteyi ve hizmetlerini kullanabilir.
Örnek uygulama için bkz . Üyelik ve Rol Sağlayıcısı. ASP.NET rol sağlayıcısı özelliğini kullanma hakkında bilgi için bkz . Nasıl yapılır: hizmetle ASP.NET Rol Sağlayıcısını kullanma.
Üyelik özelliği, kullanıcı bilgilerini depolamak için bir SQL Server veritabanı kullanmayı gerektirir. Bu özellik, parolalarını unutan kullanıcılara soru sorma yöntemlerini de içerir.
Windows Communication Foundation (WCF) geliştiricileri bu özelliklerden güvenlik amacıyla yararlanabilir. Bir WCF uygulamasıyla tümleştirildiğinde, kullanıcıların WCF istemci uygulamasına bir kullanıcı adı/parola bileşimi sağlaması gerekir. Verileri WCF hizmetine aktarmak için( yapılandırmada, wsHttpBinding>) gibi WSHttpBinding kullanıcı adı/parola kimlik bilgilerini destekleyen bir bağlama kullanın ve istemci kimlik bilgisi türünü olarak UserName
ayarlayın.< Hizmette WCF güvenliği, kullanıcı adı ve parola temelinde kullanıcının kimliğini doğrular ve ayrıca ASP.NET rolü tarafından belirtilen rolü atar.
Not
WCF, veritabanını kullanıcı adı/parola bileşimleri veya diğer kullanıcı bilgileriyle doldurmak için yöntemler sağlamaz.
Üyelik sağlayıcısını yapılandırmak için
Web.config dosyasında, öğesinin
<system.web>
altında bir<membership>
öğesi oluşturun.öğesinin
<membership>
altında bir<providers>
öğe oluşturun.öğesinin
<providers>
alt öğesi olarak, sağlayıcı koleksiyonunu boşaltmak için bir<clear />
öğe ekleyin.öğesinin
<clear />
altında, aşağıdaki özniteliklerin uygun değerlere ayarlandığı bir<add>
öğe oluşturun:name
,type
,connectionStringName
,applicationName
,enablePasswordRetrieval
, ,enablePasswordReset
,requiresQuestionAndAnswer
,requiresUniqueEmail
vepasswordFormat
.name
özniteliği daha sonra yapılandırma dosyasında bir değer olarak kullanılır. Aşağıdaki örnek bunu olarakSqlMembershipProvider
ayarlar.Aşağıdaki örnekte yapılandırma bölümü gösterilmektedir.
<!-- Configure the Sql Membership Provider --> <membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlConn" applicationName="MembershipAndRoleProviderSample" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership>
Hizmet güvenliğini kullanıcı adı/parola bileşimini kabul etmek üzere yapılandırmak için
Yapılandırma dosyasında, system.serviceModel öğesinin <altına bir< bağlama öğesi> ekleyin.>
Bağlamalar bölümüne bir <wsHttpBinding> ekleyin. WCF bağlama öğesi oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Yapılandırmada Hizmet Bağlaması Belirtme.
öğesinin
mode
özniteliğini<security>
olarakMessage
ayarlayın.öğesinin
clientCredentialType
özniteliğini<message>
olarakUserName
ayarlayın. Bu, istemcinin kimlik bilgisi olarak bir kullanıcı adı/parola çiftinin kullanılacağını belirtir.Aşağıdaki örnekte bağlamanın yapılandırma kodu gösterilmektedir.
<system.serviceModel> <bindings> <wsHttpBinding> <!-- Set up a binding that uses UserName as the client credential type --> <binding name="MembershipBinding"> <security mode ="Message"> <message clientCredentialType ="UserName"/> </security> </binding> </wsHttpBinding> </bindings> </system.serviceModel>
Bir hizmeti üyelik sağlayıcısını kullanacak şekilde yapılandırmak için
öğesinin alt öğesi
<system.serviceModel>
olarak bir <behaviors> öğesi ekleyinBir <davranış> ekleyin ve özniteliğini
name
uygun bir değere ayarlayın.öğesine userNameAuthentication <>
<serviceCredentials>
ekleyin.özniteliğini
userNamePasswordValidationMode
olarakMembershipProvider
ayarlayın.Önemli
userNamePasswordValidationMode
Değer ayarlanmazsa WCF, ASP.NET üyelik sağlayıcısı yerine Windows kimlik doğrulamasını kullanır.özniteliğini
membershipProviderName
sağlayıcının adına ayarlayın (bu konudaki ilk yordamda sağlayıcı eklenirken belirtilir). Aşağıdaki örnekte bu noktaya kadar olan<serviceCredentials>
parça gösterilmektedir.<behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
Örnek
Aşağıdaki kod, ASP üyelik özelliğini kullanan bir hizmetin yapılandırmasını gösterir.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="Microsoft.Samples.GettingStarted.CalculatorService">
<endpoint address="http://microsoft.com/WCFservices/Calculator"
binding="wsHttpBinding" bindingConfiguration="MembershipBinding"
name="ASPmemberUserName" contract="Microsoft.Samples.GettingStarted.ICalculator" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="SqlMembershipProvider" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="MembershipBinding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>