Azure에 ACS 페더레이션 응용 프로그램 및 서비스 배포
업데이트 날짜: 2015년 6월
적용 대상
Microsoft Azure Active Directory 액세스 제어(액세스 제어 서비스 또는 ACS라고도 함)
WIF(Windows Identity Foundation)
역할로
요약
이 항목에는 ACS를 사용하며 Azure에 배포할 응용 프로그램과 서비스를 개발할 때 고려해야 하는 지침이 통합되어 있습니다.
목표
계산 에뮬레이터에 동적으로 생성된 포트를 사용하여 문제를 해결합니다.
WIF(Windows Identity Foundation) 런타임을 Azure에 배포합니다.
RSA를 사용하여 쿠키를 암호화합니다.
리플렉션을 통해 호출된 어셈블리를 Azure에 배포되도록 구성합니다.
계산 에뮬레이터에 동적으로 생성된 포트를 사용하여 문제 해결
이 섹션에서는 웹 응용 프로그램을 만드는 경우와 관련된 정보를 제공합니다. 웹 서비스를 만드는 경우에는 관련이 없습니다. 계산 에뮬레이터는 Azure SDK 도구의 일부입니다. 응용 프로그램을 Azure에 호스티드 서비스로 배포하기 전에 계산 에뮬레이터를 사용하여 응용 프로그램을 실행, 테스트, 디버그 및 미세 조정할 수 있습니다. 계산 에뮬레이터에서는 고유한 IP 주소를 할당할 수 없습니다. 계산 에뮬레이터는 요청된 포트를 할당하려고 합니다. 해당 포트를 사용할 수 없는 경우 사용 가능한 다음 최적 포트 번호를 할당합니다. 즉, 계산 에뮬레이터에서는 정의 파일에 지정된 포트 번호와 다른 포트 번호가 서비스에 할당될 수 있습니다. 계산 에뮬레이터에 대한 자세한 내용은 Microsoft Azure 계산 에뮬레이터의 개요(https://go.microsoft.com/fwlink/?LinkId=221212)를 참조하세요.
계산 에뮬레이터가 ACS 관리 포털에서 반환 URL로 구성된 IP 주소와 다른 IP 주소를 할당하는 경우 ACS에서 인증된 요청을 신뢰 당사자 구성의 반환 URL 필드에 구성된 URL로 리디렉션하지만 이 URL에는 일치하는 페이지가 없습니다. 따라서 빈 페이지가 표시됩니다.
이 동작을 해결하려면 클라우드 웹 응용 프로그램의 끝점 공용 포트를 컴퓨터에서 사용 가능한 포트로 구성합니다. 그러면 계산 에뮬레이터가 충돌을 방지하기 위해 임의 포트를 할당하지 않습니다.
사용 가능한 포트를 사용하도록 끝점을 구성하려면
명령 프롬프트를 열려면 시작을 클릭하고 cmd를 입력한 다음 Enter 키를 누릅니다.
다음 명령을 실행하여 로컬 호스트 IP 주소 목록 및 사용된 포트를 표시합니다. netstat –a –n | findstr 127.0.0.1
목록을 검사하여 현재 사용 중이 아닌 포트를 식별합니다. 다음 단계에서 이 포트를 사용합니다.
솔루션 탐색기에서 클라우드 프로젝트의 역할 폴더 아래에 있는 해당 역할을 두 번 클릭합니다. 역할 속성 페이지가 열립니다.
웹 역할 속성 페이지에서 끝점 탭을 클릭합니다.
공용 포트 파일에 3단계에서 식별한 포트 값을 지정합니다.
작업을 저장하려면 Ctrl+S를 누릅니다.
Microsoft Azure에 Windows Identity Foundation 런타임 배포
WIF(Windows Identity Foundation)는 클레임 인식 응용 프로그램이 사용할 수 있도록 컴퓨터에 설치해야 하는 대역 외 런타임입니다. WIF는 기본적으로 Azure 인스턴스에 설치되지 않습니다. 클라우드 클레임 인식 응용 프로그램을 실행하려면 Azure 인스턴스에서 WIF 런타임을 사용할 수 있게 해야 합니다. 이 작업을 수행하는 가장 쉬운 방법은 배포 패키지에 WIF 어셈블리를 포함하는 것입니다.
Microsoft Azure 배포 패키지에 WIF 어셈블리를 포함하려면
솔루션 탐색기에서 클레임 인식 응용 프로그램을 찾습니다.
참조 폴더를 확장합니다.
참조 폴더 아래에서 Microsoft.IdentityModel 어셈블리를 찾습니다.
어셈블리를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
속성 창에서 로컬 복사를 True로 지정하고 특정 버전을 False로 지정합니다.
RSA를 사용하여 쿠키 암호화
이 섹션에서는 웹 응용 프로그램을 만드는 경우와 관련된 정보를 제공합니다. 기본적으로 WIF는 DPAPI(Data Protection Application Programming Interface)로 암호화하여 쿠키를 보호합니다. DPAPI는 Azure에서 사용할 수 없습니다. Azure에 배포되는 경우 클라우드 클레임 인식 웹 응용 프로그램이 제대로 작동하게 하려면 RSA를 사용하여 쿠키 암호화 기능을 추가해야 합니다.
RSA를 사용하여 쿠키를 암호화하려면
솔루션 탐색기에서 클라우드 클레임 인식 웹 응용 프로그램을 찾습니다.
global.asax 파일에 지정된 코드인 global.asax.cs 파일을 Visual Studio 편집기에서 엽니다.
다음 선언을 추가합니다.
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Web; using Microsoft.IdentityModel.Web.Configuration;
다음 코드를 추가합니다.
void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e) { // // Use the <serviceCertificate> to protect the cookies that are // sent to the client. // List<CookieTransform> sessionTransforms = new List<CookieTransform>(new CookieTransform[] { new DeflateCookieTransform(), new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate), new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate) }); SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly()); e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler); } void Application_Start(object sender, EventArgs e) { FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
참고
Application_Start 이벤트 처리기를 이미 추가한 경우 이 코드를 포함하도록 업데이트할 수 있습니다.
작업을 저장합니다.
리플렉션을 통해 호출된 어셈블리를 Microsoft Azure에 배포되도록 구성
들어오는 SWT 토큰을 검사하는 HttpModules 또는 REST(Representational State Transfer) wcf 서비스를 개발하는 경우 등 일부 경우에서는 리플렉션을 통해 어셈블리가 호출됩니다. 이러한 어셈블리가 Azure에 배포되게 하려면 추가 단계를 수행하여 배포 패키지에 추가해야 합니다.
리플렉션을 통해 호출된 어셈블리를 Microsoft Azure 배포 패키지에 추가하려면
클라우드 클레임 인식 웹 응용 프로그램 또는 서비스의 bin 폴더를 확장합니다.
어셈블리를 마우스 오른쪽 단추로 클릭하고 프로젝트에 포함을 클릭합니다.
동일한 라이브러리를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
속성 창에서 출력 디렉터리에 복사에 대해 변경된 내용만 복사를 클릭합니다.