방법: ASP.NET 멤버 자격 공급자 사용
ASP.NET 멤버 자격 공급자는 ASP.NET 개발자가 웹 사이트를 만들어 사용자에게 고유 사용자 이름 및 암호 조합을 만들 수 있도록 해주는 기능입니다. 이 기능을 사용하여 사용자는 사이트에 계정을 설정하고 사이트 및 해당 서비스에 로그인하여 단독으로 액세스할 수 있습니다. 반면, Windows 보안의 경우 사용자에게는 Windows 도메인의 계정이 있어야 합니다. 대신 자신의 자격 증명(사용자 이름/암호 조합)을 제공하는 사용자가 사이트 및 해당 서비스를 사용할 수 있습니다.
샘플 응용 프로그램을 보려면 Membership and Role Provider를 참조하십시오. ASP.NET 역할 공급자 기능 사용에 대한 자세한 내용은 방법: 서비스에서 ASP.NET 역할 공급자 사용을 참조하십시오.
멤버 자격 기능을 사용하려면 SQL Server 데이터베이스를 사용하여 사용자 정보를 저장해야 합니다. 해당 기능에는 암호를 잊은 사용자에게 질문을 표시하기 위한 메서드도 포함됩니다.
WCF(Windows Communication Foundation) 개발자는 보안을 위해 이러한 기능을 활용할 수 있습니다. WCF 응용 프로그램에 통합된 경우 사용자는 사용자 이름/암호 조합을 WCF 클라이언트 응용 프로그램에 제공해야 합니다. 데이터를 WCF 서비스로 전송하려면 WSHttpBinding(구성에서는 wsHttpBinding Element)과 같은 사용자 이름/암호 자격 증명을 지원하는 바인딩을 사용하고, 클라이언트 자격 증명 형식을 UserName으로 설정합니다. 서비스에서는 WCF 보안이 사용자 이름 및 암호를 기반으로 사용자를 인증하고, ASP.NET 역할에서 지정한 역할도 할당합니다.
참고
WCF에서는 사용자 이름/암호 조합 또는 기타 사용자 정보로 데이터베이스를 입력할 수 있는 메서드를 제공하지 않습니다.
멤버 자격 공급자를 구성하려면
Web.config 파일에서 <system.web> 요소 아래에 <providers> 요소를 만듭니다.
<providers> 요소의 자식 요소로 <clear /> 요소를 추가하여 공급자 컬렉션을 플러시합니다.
<clear /> 요소 아래에서 name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail 및 passwordFormat 등의 적절한 값으로 설정된 특성을 사용하여 <add> 요소를 만듭니다. name 특성은 나중에 구성 파일의 값으로 사용됩니다. 다음 예제에서는 이 특성을
SqlMembershipProvider
로 설정합니다.다음 예제에서는 구성 섹션을 보여 줍니다.
<!-- 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>
사용자 이름/암호 조합을 허용하도록 서비스 보안을 구성하려면
구성 파일에서 <system.ServiceModel> 요소 아래에 <bindings> 요소를 추가합니다.
wsHttpBinding Element를 바인딩 섹션에 추가합니다. WCF 바인딩 요소 만들기에 대한 자세한 내용은 방법: 구성에서 서비스 바인딩 지정을 참조하십시오.
<security> 요소의 mode 특성을 Message로 설정합니다.
<message> 요소의 clientCredentialType 특성을 UserName으로 설정합니다. 이를 통해 사용자 이름/암호 쌍을 클라이언트의 자격 증명으로 사용하도록 지정됩니다.
다음 예제에서는 바인딩에 대한 구성 코드를 보여 줍니다.
<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>
멤버 자격 공급자를 사용하여 서비스를 구성하려면
<behaviors> 요소를 <system.serviceModel> 요소에 대한 자식으로 추가합니다.
serviceBehaviors section을 <behaviors> 요소에 추가합니다.
Behavior element를 추가하고 name 특성을 적절한 값으로 설정합니다.
<serviceCredentials> Element를 <behavior> 요소에 추가합니다.
userNameAuthentication element를 <serviceCredentials> 요소에 추가합니다.
userNamePasswordValidationMode 특성을 MembershipProvider로 설정합니다.
참고
userNamePasswordValidationMode 값이 설정되어 있지 않으면 WCF에서는 ASP.NET 멤버 자격 공급자 대신 Windows 인증을 사용합니다.
membershipProviderName 특성을 공급자의 이름으로 설정합니다(이 항목의 첫 번째 절차에서 공급자를 추가할 때 지정됨). 다음 예제에서는 이 지점에 대한 <serviceCredentials> 단편을 보여 줍니다.
<serviceCredentials> <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider" membershipProviderName ="SqlMembershipProvider"/> </serviceCredentials>