내보내기(0) 인쇄
모두 확장

코드 샘플: ASP.NET MVC 3 사용지 지정 로그인 페이지

게시: 2011년 5월

업데이트 날짜: 2011년 5월

적용 대상: Windows Azure

이 샘플에서는 Windows Azure AppFabric 액세스 제어 서비스(ACS)을 사용하는 ASP.NET MVC3 응용 프로그램에서 사용자 지정 로그인 또는 홈 영역 검색 페이지를 만드는 방법을 보여 줍니다. 이 샘플의 코드는 액세스 제어 서비스 샘플 및 설명서(http://go.microsoft.com/fwlink/?LinkId=213167) 패키지의 MVC3CustomSignInPage 폴더에 있습니다.

필수 구성 요소

이 샘플을 실행하려면 다음 항목이 필요합니다.

  1. Windows Azure 홈 페이지(http://go.microsoft.com/fwlink/?LinkId=130560)에서 계정을 만들고 액세스 제어 서비스 네임스페이스를 만들어야 합니다.

  2. Visual Studio 2010(모든 버전)

  3. ASP .NET MVC3(http://www.asp.net/mvc/mvc3)

  4. Windows Identity Foundation SDK

자세한 내용은 ACS 필수 구성 요소(http://msdn.microsoft.com/ko-kr/library/gg185931.aspx)를 참조하십시오.

샘플 구성

이 샘플에 필요한 ACS 구성은 ACS 관리 포털 또는 ACS 관리 서비스를 사용하여 수행할 수 있습니다. 이 항목에서는 두 옵션을 모두 설명합니다.

옵션 1: ACS 관리 포털을 사용한 샘플 구성

ACS 관리 포털을 사용하여 샘플을 구성하려면

  1. 브라우저를 열고 Windows Azure 홈 페이지(http://go.microsoft.com/fwlink/?LinkId=130560)로 이동하여 로그인한 다음 서비스 버스, 액세스 제어 및 캐싱 섹션으로 이동하여 ACS 서비스 네임스페이스를 구성합니다. 네임스페이스를 만들어서 선택한 후, 페이지 상단의 관리 > 액세스 제어 서비스를 클릭합니다. 그러면 새 창에서 페이지가 열립니다.

  2. 웹 사이트 사용자가 로그인할 때 사용하도록 할 ID 공급자와의 관계를 설정하려면 ID 공급자 링크를 클릭하고 Google, Yahoo!, Facebook 등 사용할 ID 공급자를 추가합니다. Facebook의 필수 구성 요소 키를 얻는 방법에 대한 자세한 내용은 방법: 방법: Facebook을 ID 공급자로 구성(http://go.microsoft.com/fwlink/?LinkId=221151)을 참조하십시오. 그런 다음 페이지의 왼쪽 탐색 메뉴에서 링크를 클릭하여 기본 페이지로 돌아옵니다.

  3. ACS에 응용 프로그램을 등록하려면 기본 페이지에 있는 신뢰 당사자 응용 프로그램 링크를 클릭하고 추가를 선택한 후에 다음 정보를 양식에 입력합니다.

    • 이름 필드에 ASPNET MVC3 사용자 지정을 입력합니다.

    • 영역 필드에 http://localhost:64000/을 입력합니다.

    • 반환 URL 필드에 http://localhost:64000/Account/SignIn을 입력합니다.

    • 토큰 형식 필드에서 SAML 2.0을 선택합니다.

    • ID 공급자 섹션에서 Facebook, Google, Windows Live IDYahoo!를 선택합니다.

    • 토큰 서명 필드에서 서비스 네임스페이스 인증서(표준) 사용을 선택합니다.

  4. 저장을 클릭하고 기본 페이지로 돌아옵니다.

  5. 신뢰 당사자 응용 프로그램을 구성한 후에는 ACS에서 응용 프로그램에 대해 발급할 클레임을 결정하는 규칙을 만듭니다. 이 샘플에서는 ID 공급자가 발급하는 모든 클레임을 통과시킵니다. 이 규칙을 만들려면 기본 페이지에 있는 규칙 그룹을 클릭하고 ASPNET MVC3 사용자 지정의 기본 규칙 그룹을 클릭합니다.

  6. 페이지 맨 아래에서 생성 링크를 클릭합니다. Facebook, YahooWindows Live ID가 선택되어 있는지 확인하고 생성을 클릭합니다.

  7. ACS이 구성된 상태에서 Visual Studio을 엽니다.

옵션 2: ACS 관리 서비스를 사용한 샘플 구성

Visual Studio 샘플 솔루션에는 ConfigureSample이라는 명령줄 응용 프로그램이 포함되어 있는데, 이 응용 프로그램은 Common 클래스 라이브러리에 정의된 ACS 관리 서비스 및 공통 도우미를 사용합니다. 이 응용 프로그램을 통해 이 샘플에서 사용할 ACS 서비스 네임스페이스를 구성할 수 있습니다.

ACS 관리 서비스를 사용하여 샘플을 구성하려면

  1. 서비스 네임스페이스 관련 정보로 Common(공통) 클래스 라이브러리를 업데이트합니다. SamplesConfiguration.cs를 열고 다음 정보를 입력합니다.

    • ServiceNamespace - ACS에서 사용되는 네임스페이스입니다.

    • ManagementServiceIdentityName - 관리 서비스 계정의 이름입니다.

    • ManagementServiceIdentityKey - 관리 서비스 계정에 연결된 암호입니다.

    • AcsHostUrl - ACS의 호스트 이름입니다.

  2. ConfigureSample 프로젝트에서 Program.cs를 열고 다음 정보를 입력합니다.

    1. applicationId - Facebook 응용 프로그램 ID입니다.

    2. applicationSecret - Facebook 응용 프로그램 암호입니다.

    이러한 키를 얻는 방법에 대한 자세한 내용은 방법: 방법: Facebook을 ID 공급자로 구성(http://go.microsoft.com/fwlink/?LinkId=221151)을 참조하십시오.

  3. Visual Studio에서 ConfigureSample 응용 프로그램을 실행합니다. 그러면 이 샘플을 실행하도록 ACS이 구성됩니다.

샘플 실행

샘플을 실행하려면

  1. Visual Studio에서 Websites\MVC3CustomLogonPage\MVC3CustomLogonPage.sln에 있는 샘플을 엽니다.

  2. ACS을 STS 참조로 추가하려면 MVCCustomSignInPage를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 Add STS Reference(STS 참조 추가)를 선택합니다.

  3. 대화 상자에서 웹 응용 프로그램 루트를 응용 프로그램 URI 필드에 입력하고 다음을 클릭합니다. 이 샘플에서 이 값은 http://localhost:64000/입니다.

    note참고
    이 값은 ACS에서 신뢰 당사자에 대해 입력한 값과 동일해야 하므로 맨 끝의 슬래시도 반드시 입력해야 합니다. 사이트에서 SSL을 사용하고 있지 않다는 경고가 마법사에 표시됩니다. 단추를 클릭하여 경고를 확인합니다. 프로덕션 웹 사이트의 경우 이러한 유형의 시나리오에서는 거의 대부분 SSL을 사용해야 합니다.

  4. 다음 창에서 Use Existing STS(기존 STS 사용) 라디오 단추를 선택하고 ACS 서비스 네임스페이스에서 게시한 WS-Federation의 URI를 입력합니다. 이 URI는 포털의 응용 프로그램 통합 아래에서 확인할 수 있습니다. 서비스 네임스페이스가 mvc3samples이면 URI는 https:// mvc3samples.accesscontrol.appfabriclabs.com/FederationMetadata/2007-06/FederationMetadata.xml이 됩니다. 값을 입력한 후 다음을 클릭합니다.

  5. 웹 사이트에는 암호화된 토큰이 필요하지 않으므로 나머지 대화 상자에서는 다음을 클릭하고 마지막으로 마침을 클릭합니다.

  6. 이제 응용 프로그램이 ASP.NET 블랭킷 리소스 보호 기능이 포함된 ACS을 사용하도록 구성되었습니다. 보다 상세한 MVC3 인증 필터가 포함된 사용자 지정 로그온 페이지를 사용할 수 있도록 이 보호 기능을 비활성화해야 합니다. web.config 파일의 configuration 아래에서 다음 설정을 삭제합니다.

    <location path="FederationMetadata">
       <system.web>
         <authorization>
           <allow users="*" />
         </authorization>
       </system.web>
    </location>
    
    
  7. system.web 아래에서 다음 설정을 삭제합니다.

    <authorization>
         <deny users="?" />
       </authorization>
    
    

    이 두 설정을 제거하면 ASP.NET에서 사용자를 대신해 인증 또는 권한 부여를 수행하지 않습니다.

  8. Visual Studio에서 F5 키를 눌러 응용 프로그램을 실행합니다. 그러면 브라우저에 응용 프로그램의 기본 페이지가 표시됩니다.

  9. 오른쪽 위의 로그인 링크를 클릭하고 목록이 나타나면 ID 공급자를 선택합니다. 인증 후에는 홈 페이지로 돌아가며 사용자 정보가 오른쪽 위에 표시됩니다. Windows Live ID의 경우에는 사용자 이름이 표시되지 않습니다.

  10. 로그오프를 클릭하여 로그오프합니다. 그러면 세션 쿠키가 지워지고 다시 기본 페이지로 돌아갑니다.

  11. 디렉터리 링크를 클릭합니다. 이제 인증된 상태가 아니므로 디렉터리 페이지에 액세스하려면 ID 공급자를 선택하라는 메시지가 표시됩니다.

디렉터리 페이지(Index in DirectoryController)는 RequireAuthenticationAttribute를 통해 보호되기 때문입니다. ID 공급자를 선택하고 인증을 하면 다시 디렉터리 페이지로 이동됩니다.

표시:
© 2014 Microsoft