2011년 2월 9일 수요일

SharePoint 2010 Form Based Authentication 및 Custom Login Page

SharePoint 2010 에서 FBA를 구성 하는 방법과 Custom Login Page를 만드는 방법을 정리 해 봤습니다.

1. 중앙 관리 사이트 Membership, Role Provider설정하기

중앙 관리 사이트 web.config 파일을 열어 아래와 같이 추가 하여 수정한다.

<configuration />안쪽에

<connectionStrings>

<add name="SQLConnectionString" connectionString="data source=SQLServerName;Integrated Security=SSPI;Initial Catalog=aspnetdb" />

</connectionStrings>

<system.web></system.web> 사이에

<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="false">

<providers>

<add connectionStringName="SQLConnectionString" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

<membership defaultProvider="SQL-MembershipProvider">

<providers>

<add connectionStringName="SQLConnectionString" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

아래와 같이 "PeoplePickerWildcards" 노드를 찾아 추가한다.

<PeoplePickerWildcards>

<clear />

<add key="AspNetSqlMembershipProvider" value="%" />

<add key="SQL-MembershipProvider" value="%" />

</PeoplePickerWildcards>

2. Security Token Service Membership, Role Provider설정하기

STS서비스의 web.config 파일은

%programfiles%\common files\Microsoft Shared\web server extensions\14\WebServices\SecurityToken 에 있음.

<configuration />안쪽에

<connectionStrings>

<add name="SQLConnectionString" connectionString="data source=SQLServerName;Integrated Security=SSPI;Initial Catalog=aspnetdb" />

</connectionStrings>

<system.web>

<roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false">

<providers>

<add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SQLConnectionString" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

<membership defaultProvider="i">

<providers>

<add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SQLConnectionString" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

</system.web>

3. ASPNET Membership DB설치

1. SharePoint 2010 서버에서 명령 프롬프트를 연다.

2. C:\Windows\Micrsooft .Net\Framework64\v2.0.50727 폴더로 이동

3.  “aspnet_regsql.exe” 실행. 실행 하면 아래와 같은 마법사가 나옴.

clip_image002

clip_image004

Database 이름을 <default>로 놓고 진행하면 "aspnetdb" 라는 멤버쉽 db가 생성됨.

4. Aspnetdb에 SharePoint Service Application Pool 계정이 읽고 쓰기 권한을 할당 함.

clip_image006

4. Web Application 생성

Form Based Authentication을 지원하는 Web Application을 아래와 같이 생성한다.

1. 중앙 관리사이트를 연다.

2. 응용프로그램 관리 아래의 웹 응용프로그램 관리 클릭

3. 리본 메뉴의 "new" 클릭

4. 페이지 상단 Claims based Authentication 선택

a. Claims Based Authentication 선택

clip_image007[6]

a. Host Header와 Port 지정

clip_image009

c. 익명 인증 설정

clip_image010[6]

d. \Membership Provider와 Role Provider 이름 설정

clip_image012

e. Custom Sign In Page 지정

clip_image013[6]

f. Contents Database이름 변경

clip_image014[6]

g. Save를 눌러 실행한다.

clip_image015[6]

5. 사이트 모음 생성하기.

a. 앞서 실행 결과 화면에서 "Create Site Collection"을 클릭

clip_image017

b. 창을 닫았다면 응용 프로그램 관리 클릭 후 사이트 모음 생성 클릭

clip_image018[6]

c. 웹 응용프로그램 선택 확인

clip_image019[6]

d. 사이트 제목과 템플릿 지정

clip_image021

e. 사이트 관리자 지정

clip_image023

f. OK버튼을 눌러 생성완료

clip_image024

5. 생성된 Web Application web.config 수정

C:\inetpub\wwwroot\wss\VirtualDirectories\ 아래에서 생성한 Web Application 폴더내의 web.config 파일을 연다.

clip_image026

<configuration />안쪽에

<connectionStrings>

<add name="SQLConnectionString" connectionString="data source=SQLServerName;Integrated Security=SSPI;Initial Catalog=aspnetdb" />

</connectionStrings>

<system.web></system.web> 사이에

<roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false">

<providers>

<add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SQLConnectionString" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

<membership defaultProvider="i">

<providers>

<add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SQLConnectionString" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

아래와 같이 "PeoplePickerWildcards" 노드를 찾아 추가한다.

<PeoplePickerWildcards>

<clear />

<add key="AspNetSqlMembershipProvider" value="%" />

<add key="SQL-MembershipProvider" value="%" />

</PeoplePickerWildcards>

Command Prompt에서 IISRESET 이후 사이트를 연다.

clip_image028

clip_image030

clip_image032