Microsoft Azure 인증

작성자 : Rick Anderson

Windows Azure Active Directory용 Microsoft ASP.NET 도구를 사용하면 Windows Azure 웹 사이트에서 호스트되는 웹 애플리케이션에 대한 인증을 간단하게 사용하도록 설정할 수 있습니다. Windows Azure 인증을 사용하여 organization Office 365 사용자, 온-프레미스 Active Directory에서 동기화된 회사 계정 또는 사용자 고유의 사용자 지정 Windows Azure Active Directory 도메인에서 만든 사용자를 인증할 수 있습니다. Windows Azure 인증을 사용하도록 설정하면 단일 Windows Azure Active Directory 테넌트에서 사용자를 인증하도록 애플리케이션이 구성됩니다.

ASP.NET Windows Azure 인증 도구는 클라우드 서비스의 웹 역할에 대해 지원되지 않지만 향후 릴리스에서 지원될 예정입니다. WIF(Windows Identity Foundation )는 Windows Azure 웹 역할에서 지원됩니다.

온-프레미스 Active Directory와 Windows Azure Active Directory 테넌트 간의 동기화를 설정하는 방법에 대한 자세한 내용은 AD FS 2.0을 사용하여 Single Sign-On 구현 및 관리를 참조하세요.

Windows Azure Active Directory는 현재 무료 미리 보기 서비스로 사용할 수 있습니다.

요구 사항:

Visual Studio 2012를 사용하여 ASP.NET 웹 애플리케이션 만들기

Visual Studio 2012를 사용하여 웹 애플리케이션을 만들 수 있습니다. 이 자습서에서는 ASP.NET MVC 인트라넷 템플릿을 사용합니다.

  1. 새 ASP.NET MVC 4 인트라넷 애플리케이션을 만들고 모든 기본값을 적용합니다. (In ter net 프로젝트가 아닌 In tra net이어야 합니다.) 프로젝트 템플릿 대화 상자를 보여 주는 스크린샷 인트라넷 애플리케이션이 선택되었습니다.

Windows Azure 인증 사용(테넷의 전역 관리자인 경우)

기존 Windows Azure Active Directory 테넌트가 없는 경우(예: 기존 Office 365 계정을 통해) 새 Windows Azure Active Directory 계정에 등록하여 새 테넌트를 만들 수 있습니다.

  1. 프로젝트 메뉴에서 Windows Azure 인증 사용을 선택합니다.

    프로젝트 드롭다운 메뉴를 보여 주는 스크린샷 Windows Azure 인증 사용은 빨간색 원으로 표시됩니다.

  2. Windows Azure Active Directory 테넌트(예: contoso.onmicrosoft.com)에 대한 도메인을 입력하고 사용을 클릭합니다.

Windows Azure 인증 사용 대화 상자를 보여 주는 스크린샷

  1. 웹 인증 대화 상자에서 Windows Azure Active Directory 테넌트 관리자로 로그인합니다.

    Microsoft Office 3 6 5 웹 인증 로그인 페이지를 보여 주는 스크린샷

Windows Azure 로그인 페이지를 보여 주는 스크린샷

테넷의 관리자가 아닌 사용자가 Window Azure를 사용하도록 설정

Windows Azure Active Directory 테넌트에서 전역 관리자 권한이 없는 경우 애플리케이션 프로비전 확인란의 선택을 취소할 수 있습니다.

Windows Azure 인증 사용 대화 상자를 보여 주는 스크린샷

대화 상자에는 Azure Active Directory 테넌트를 사용하여 애플리케이션을 프로비전하는 데 필요한 도메인, 애플리케이션 사용자 ID회신 URL 이 표시됩니다. 애플리케이션을 프로비전할 수 있는 충분한 권한이 있는 사람에게 이 정보를 제공해야 합니다. cmdlet을 사용하여 서비스 주체를 수동으로 만드는 방법에 대한 자세한 내용은Windows Azure Active Directory - ASP.NET Application에서 Single Sign-On을 구현 하는 방법을 참조하세요. 애플리케이션이 성공적으로 프로비전되면 계속을 클릭하여 선택한 설정으로 web.config 업데이트할 수 있습니다. 프로비전이 수행되기를 기다리는 동안 애플리케이션을 계속 개발하려면 닫기를 클릭하여 프로젝트 파일의 설정을 기억할 수 있습니다. 다음에 Windows Azure 인증 사용을 호출하고 프로비전 확인란의 선택을 취소하면 동일한 설정이 표시되고 계속을 클릭한 다음 web.config에서 이러한 설정 적용 을 클릭할 수 있습니다.

  1. 애플리케이션이 Windows Azure 인증에 대해 구성되고 Windows Azure Active Directory로 프로비전되는 동안 기다립니다.

  2. 애플리케이션에 대해 Windows Azure 인증을 사용하도록 설정했으면 닫기를 클릭합니다.

    Windows Azure 인증 사용 대화 상자를 보여 주는 스크린샷

  3. F5 키를 눌러 애플리케이션을 실행합니다. 로그인 페이지로 자동으로 리디렉션됩니다. 디렉터리 테넌트 사용자 자격 증명을 사용하여 애플리케이션에 로그인합니다.

    Windows Azure 로그인 페이지를 보여 주는 스크린샷

  4. 애플리케이션이 현재 자체 서명된 테스트 인증서를 사용하고 있으므로 신뢰할 수 있는 인증 기관에서 인증서를 발급하지 않았다는 경고가 브라우저에서 수신됩니다.

    이 웹 사이트로 계속을 클릭하여 로컬 개발 중에 이 경고를 안전하게 무시할 수 있습니다.

    웹 사이트 보안 경고를 보여 주는 스크린샷 권장되지 않는 이 웹 사이트로 계속가 빨간색 원을 그리세요.

  5. 이제 Windows Azure 인증을 사용하여 애플리케이션에 성공적으로 로그인했습니다!

    내 ASP 점 NET의 홈페이지를 보여 주는 스크린샷.

Windows Azure 인증을 사용하도록 설정하면 애플리케이션이 다음과 같이 변경됩니다.

  • CSRF(사이트 간 요청 위조 방지) 클래스( App_Start\AntiXsrfConfig.cs)가 프로젝트에 추가됩니다.

  • NuGet 패키지가 System.IdentityModel.Tokens.ValidatingIssuerNameRegistry 프로젝트에 추가됩니다.

  • 애플리케이션의 Windows Identity Foundation 설정은 Windows Azure Active Directory 테넌트에서 보안 토큰을 허용하도록 구성됩니다. 아래 이미지를 클릭하여 Web.config 파일의 변경 내용에 대한 확장된 보기를 확인합니다.

    코드 줄 9~67을 보여 주는 스크린샷 스크린샷에서 일부 줄이 제거되고 92~97줄이 남아 있습니다.

  • Windows Azure Active Directory 테넌트에서 애플리케이션에 대한 서비스 주체가 프로비전됩니다.

  • HTTPS를 사용할 수 있습니다.

Windows Azure에 애플리케이션 배포

전체 지침은 Windows Azure 웹 사이트에 ASP.NET 웹 애플리케이션 배포를 참조하세요.

Windows Azure 인증을 사용하여 애플리케이션을 Azure 웹 사이트에 게시하려면 다음을 수행합니다.

  1. 애플리케이션을 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.

    Win Azure Auth Demo 마우스 오른쪽 단추 클릭 메뉴를 보여 주는 스크린샷 게시가 선택되었습니다.

  2. 웹 게시 대화 상자에서 Azure 웹 사이트에 대한 게시 프로필을 다운로드하고 가져옵니다.

    웹 게시 대화 상자의 프로필 페이지를 보여 주는 스크린샷

  3. 연결 탭에는 대상 URL(애플리케이션의 공용 연결 URL)이 표시됩니다. 연결 유효성 검사를 클릭하여 연결을 테스트합니다.

    웹 게시 대화 상자의 연결 페이지를 보여 주는 스크린샷

  4. 이전에 이 Azure 웹 사이트에 게시한 경우 대상에서 추가 파일 제거 설정을 확인하여 애플리케이션이 깔끔하게 게시되도록 하는 것이 좋습니다. Windows Azure 인증 검사 사용 상자가 선택되어 있습니다.

    웹 게시 대화 상자의 설정 페이지를 보여 주는 스크린샷 Windows Azure 인증을 사용하도록 설정이 선택되고 빨간색으로 동그라미로 표시됩니다.

  5. 선택 사항: 미리 보기 탭에서 미리 보기 시작을 클릭하여 배포된 파일을 확인합니다.

    웹 게시 대화 상자의 미리 보기 페이지를 보여 주는 스크린샷

  6. 게시를 클릭합니다 .

    대상 호스트에 대해 Windows Azure 인증을 사용하도록 설정하라는 메시지가 표시됩니다. 사용을 클릭하여 계속합니다.

    Windows Azure 인증 사용 대화 상자를 보여 주는 스크린샷

  7. Windows Azure Active Directory 테넌트용 관리자 자격 증명을 입력합니다.

    Windows Azure 웹 인증 로그인 페이지를 보여 주는 스크린샷.

  8. 애플리케이션이 성공적으로 게시되면 브라우저가 게시된 웹 사이트에 열립니다.

    참고

    대상 호스트에 대해 Windows Azure 인증을 사용하도록 설정한 후 애플리케이션이 Windows Azure Active Directory로 완전히 프로비전되는 데 최대 5분(일반적으로 훨씬 적음)이 걸릴 수 있습니다. ACS50001: 이름이 '[realm]'인 신뢰 당사자를 찾을 수 없는 경우 애플리케이션을 처음 실행할 때 몇 분 정도 기다렸다가 애플리케이션을 다시 실행해 보세요.

  9. 메시지가 표시되면 디렉터리에서 사용자로 로그인합니다.

    Windows Azure 로그인 페이지를 보여 주는 스크린샷

  10. 이제 Windows Azure 인증을 사용하여 Azure 호스팅 애플리케이션에 성공적으로 로그인했습니다.

    내 ASP 점 NET 홈페이지를 보여 주는 스크린샷.

알려진 문제

Windows Azure 인증을 사용할 때 역할 기반 권한 부여 실패

Windows Azure 인증은 현재 역할 기반 권한 부여를 수행할 수 있도록 필요한 역할 클레임을 제공하지 않습니다. 인증된 사용자의 역할은 Windows Azure Active Directory에서 수동으로 검색해야 합니다.

Windows Azure 인증을 사용하여 애플리케이션을 검색하면 "ACS20016 로그인한 사용자(live.com)의 도메인이 이 STS의 허용된 도메인과 일치하지 않습니다." 오류가 발생합니다.

Microsoft 계정(예: hotmail.com, live.com, outlook.com)에 이미 로그인하고 Windows Azure 인증을 사용하도록 설정한 애플리케이션에 액세스하려고 하면 Microsoft 계정의 도메인이 Windows Azure Active Directory에서 인식되지 않으므로 400 오류 응답이 표시될 수 있습니다. 애플리케이션에 로그인하려면 먼저 Microsoft 계정에서 로그아웃합니다.

Windows Azure 인증을 사용하도록 설정하고 없음 이외의 X509CertificateValidationMode를 사용하여 애플리케이션에 로그인하면 accounts.accesscontrol.windows.net 인증서에 대한 인증서 유효성 검사 오류가 발생합니다.

인증서 유효성 검사는 필요하지 않으며 사용하지 않도록 설정해야 합니다. 발급자 인증서의 지문은 WSFederationAuthenticationModule에 의해 유효성이 검사됩니다.

Windows Azure 인증을 사용하도록 설정하려고 하면 웹 인증 대화 상자에 "ACS20016: 로그인한 사용자(contoso.onmicrosoft.com)의 도메인이 이 STS의 허용된 도메인과 일치하지 않습니다." 오류가 표시됩니다.

이전에 동일한 Visual Studio 프로세스 내에서 다른 Windows Azure Active Directory 계정을 사용하여 성공적으로 로그인한 경우 이 오류가 표시될 수 있습니다. 지정된 계정에서 로그아웃하거나 Visual Studio를 다시 시작합니다. 이전에 로그인하여 "로그인 유지" 옵션을 선택한 경우 브라우저 쿠키를 지워야 할 수 있습니다.

ACS20012: 요청이 유효한 WS-Federation 프로토콜 메시지가 아닙니다.

다른 Microsoft ID를 사용하여 Azure 서비스 중 하나에 이미 로그인한 경우 이 문제가 발생할 수 있습니다. IE의 InPrivate 또는 Chrome의 Incognito와 같은 프라이빗 브라우저 창을 사용하거나 모든 쿠키를 지웁니다.

추가 리소스