Windows/2008

[스크랩] 포리스트 트러스트와 페더레이션된 웹 SSO 예

99iberty 2014. 1. 27. 16:00

http://technet.microsoft.com/ko-kr/library/cc753084(v=ws.10).aspx

 

적용 대상: Windows Server 2008

이 시나리오에서 가상 회사 Adventure Works는 소매 대리점인 동시에 도매 대리점입니다. 이 회사는 Adventure Works 판매원, 서비스 부서 및 스포츠 용품 상점을 통해 직접 제품을 판매합니다. Adventure Works는 다른 공급업체로부터 전체 인벤토리를 받으며 판매하는 제품을 제조하지는 않습니다.

Adventure Works에는 두 개의 별도 Active Directory 포리스트가 있습니다. 경계 네트워크의 포리스트는 온라인 인벤토리, 구매 및 고객 서비스 웹 응용 프로그램을 호스트합니다. Adventure Works에서 사용하는 인벤토리 응용 프로그램은 작업에 중요합니다. 따라서 이 응용 프로그램은 Windows 가장이 필요하고 ACL(액세스 제어 목록)을 사용하는 강력한 보안 조치로 보호됩니다. 구매 응용 프로그램과 고객 서비스 응용 프로그램은 클레임 인식 응용 프로그램입니다.

방문 판매원은 회사 네트워크 포리스트의 AD DS(Active Directory 도메인 서비스)에서 관리되는 직원 계정을 사용하여 경계 네트워크 응용 프로그램에 액세스합니다.

다음 그림과 같이 경계 네트워크에서 회사 네트워크에 있는 포리스트로의 단방향 트러스트(Microsoft(R) Windows(R) 2000 Server에 대한 외부 트러스트 또는 Microsoft Windows Server(R) 2003 또는 Windows Server 2008에 대한 포리스트 트러스트)가 만들어집니다. 트러스트 및 인증과 웹 응용 프로그램 트래픽을 지원하기 위해 회사 네트워크와 경계 네트워크 간의 방화벽에 필요한 포트가 열려 있습니다.

포리스트 트러스트를 사용하는 페더레이션된 웹 SSO 디자인 예

단방향 트러스트가 이미 구현되어 있으므로 Adventure Works는 단방향 트러스트를 이용하여 응용 프로그램에서 직원에 대한 액세스 토큰을 만들고 경계 네트워크에 SSO(Single Sign-On)를 사용할 수 있도록 하려고 합니다.

직원 세션은 공장 관리자와 같은 본사 직원의 경우 회사 네트워크에서 시작되거나 방문 판매원과 같은 모바일 직원의 경우 인터넷에서 시작될 수 있습니다. 즉, 다음 두 가지 유형의 인증 메커니즘이 사용됩니다.

  • 인트라넷 직원은 통합 인증을 사용합니다.

  • 모바일 직원은 TLS/SSL(전송 계층 보안/Secure Sockets Layer) 클라이언트 인증 또는 폼 인증을 사용합니다.

사용자 계정 또는 인증 메커니즘 유형에 관계없이 ADFS(Active Directory Federation Service) 인증은 사용자 요청에 대한 권한 부여를 위해 응용 프로그램에 제공되는 보안 토큰을 항상 생성합니다. 인벤토리 응용 프로그램은 Active Directory 계정이 있는 직원만 사용하기 때문에 AD FS 사용 웹 서버의 AD FS 웹 에이전트는 사용자에 대해 Windows NT 토큰도 만들며, 응용 프로그램에서 토큰을 가장할 수 있습니다.

경계 네트워크의 모든 AD FS 사용 웹 서버는 프록시 서버 없이 인터넷에 직접 공개됩니다. 이러한 웹 서버는 웹 트래픽이 아닌 트래픽을 차단하는 방화벽으로만 보호됩니다. 프로덕션 환경에서는 Adventure Works가 웹 팜 서버 앞에 프록시 서버를 배포할 것입니다. 하지만 프록시 서버로 인해 흐름이 추가 단계로 복잡해지므로 이 예에서는 명확하도록 프록시 서버가 생략됩니다.

방문 판매원 원격 액세스에 대한 메시지 흐름

구매 응용 프로그램을 호스트하는 AD FS 사용 웹 서버는 경계 네트워크의 Active Directory 포리스트에 있습니다. 방문 판매원은 계정 페더레이션 서버 프록시를 통해 응용 프로그램에 인증합니다. 하지만 AD FS 사용 웹 서버에 대한 기본 페더레이션 서비스는 리소스 페더레이션 서비스입니다. 따라서 여러 계정 저장소나 여러 파트너가 구성된 경우 직원을 계정 페더레이션 서버 프록시로 리디렉션하려면 계정 파트너 검색이 필요합니다. 계정 페더레이션 서버와 회사 네트워크 Active Directory 서비스는 방문 판매원 자격 증명의 유효성을 검사하고 보안 토큰을 작성하기 위한 특성을 가져옵니다.

클라이언트 응용 프로그램 요청

다음 그림과 해당 단계에서는 TLS/SSL을 사용하는 AD FS의 클라이언트 응용 프로그램 요청 프로세스에 대해 자세히 설명합니다.

포리스트 트러스트를 사용하는 페더레이션된 웹 SSO 디자인 예
  1. 방문 판매원이 웹 브라우저를 사용하여 AD FS 사용 웹 서버에서 구매 응용 프로그램을 엽니다.

  2. AD FS 인증 쿠키가 없어 AD FS 사용 웹 서버에서 요청을 거부합니다. 웹 서버에서 클라이언트 브라우저를 리소스 페더레이션 서버의 로그온 웹 페이지로 리디렉션합니다.

  3. 클라이언트 브라우저에서 리소스 페더레이션 서버의 로그온 웹 페이지를 요청합니다.

  4. 여러 계정 저장소나 여러 파트너가 구성되어 있는지에 따라 리소스 페더레이션 서버의 웹 페이지에서 사용자에게 계정 파트너 검색을 물어보는 프롬프트를 표시합니다.

  5. 리소스 페더레이션 서버에서 클라이언트 브라우저를 계정 페더레이션 서버 프록시의 로그온 웹 페이지로 리디렉션합니다.

  6. 클라이언트 브라우저에서 계정 페더레이션 서버 프록시의 로그온 웹 페이지를 요청합니다.

응용 프로그램에 대한 액세스를 요청하는 사용자 인증

다음 그림과 해당 단계에서는 방문 판매원이 주문 입력 응용 프로그램에 대한 액세스를 요청한 후 인증되는 방법에 대해 자세히 설명합니다. 다르게 명시되지 않은 경우 모든 트래픽은 TLS/SSL을 사용합니다.

포리스트 트러스트를 사용하는 페더레이션된 웹 SSO 디자인 예
  1. 계정 페더레이션 서버 프록시의 웹 페이지에서 사용자에게 사용자 자격 증명을 물어보는 프롬프트를 표시합니다.

  2. 계정 페더레이션 서버 프록시는 HTTPS(Secure Hypertext Transfer Protocol)를 사용하여 계정 페더레이션 서버의 보안 토큰을 요청합니다.

  3. 계정 페더레이션 서버는 다음을 수행합니다.

    • 사용자 인증서를 매핑하고 LDAP를 사용하여 회사 네트워크의 Active Directory에서 필요한 모든 LDAP(Lightweight Directory Access Protocol) 특성을 검색합니다.

    • 웹 응용 프로그램에 대한 보안 토큰을 작성합니다.

    • AD FS 인증 쿠키를 작성합니다.

  4. 계정 페더레이션 서버는 SOAP(Simple Object Access Protocol) 및 HTTPS를 사용하여 인증 쿠키와 보안 토큰을 계정 페더레이션 서버 프록시로 보냅니다.

  5. 계정 페더레이션 서버 프록시에서 리소스 페더레이션 서버로 POST 요청을 보내도록 웹 브라우저를 리디렉션합니다.

    • 리소스 페더레이션 서버에서 Java 스크립트 코드가 포함된 HTML 페이지를 반환합니다. 웹 브라우저에서 이 Java 스크립트 코드를 실행하면 AD FS 사용 웹 서버에 대해 보안 토큰의 HTTP POST가 수행됩니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  6. 클라이언트 브라우저에서 리소스 페더레이션 서버로 POST 요청을 보냅니다.

  7. 리소스 페더레이션 서버는 다음을 수행합니다.

    • 웹 응용 프로그램에 대한 새 보안 토큰을 작성합니다.

    • 새 AD FS 인증 쿠키를 작성합니다.

    리소스 페더레이션 서버에서 AD FS 사용 웹 서버로 POST 요청을 보내도록 웹 브라우저를 리디렉션합니다. 그러면 다음 작업이 수행됩니다.

    • 리소스 페더레이션 서버에서 Java 스크립트 코드가 포함된 HTML 페이지를 반환합니다. 웹 브라우저에서 이 Java 스크립트 코드를 실행하면 AD FS 사용 웹 서버에 대해 보안 토큰의 HTTP POST가 수행됩니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  8. 클라이언트 브라우저에서 AD FS 사용 웹 서버로 POST 요청을 보냅니다.

  9. AD FS 사용 웹 서버에서 웹 브라우저를 응용 프로그램 URL로 리디렉션합니다. 그런 후에 다음 작업이 수행됩니다.

    • AD FS 사용 웹 서버 구성 요소에서 보안 토큰의 유효성을 검사합니다.

    • AD FS 사용 웹 서버에서 새 AD FS 인증 쿠키를 작성합니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  10. 웹 브라우저에서 AD FS 인증 쿠키를 사용하여 AD FS 사용 웹 서버의 원래 응용 프로그램 URL을 요청합니다.

  11. AD FS 사용 웹 서버 응용 프로그램에서 다음 작업을 수행합니다.

    • 보안 토큰에서 가장 Windows NT 토큰을 작성합니다.

    • 이 Windows NT 토큰을 사용하여 가장하고 액세스 검사를 수행합니다.

웹 브라우저에서 해당 AD FS 인증 쿠키를 사용하여 AD FS 사용 웹 서버의 추가 응용 프로그램 URL을 요청합니다.

창고 관리자 내부 액세스에 대한 메시지 흐름

인벤토리 응용 프로그램을 호스트하는 AD FS 사용 웹 서버는 경계 네트워크 포리스트에 있습니다. 창고 관리자는 회사 네트워크의 계정 페더레이션 서버에서 현재 로그온한 데스크톱 세션 자격 증명과 통합 인증을 사용하여 인증합니다. 회사 네트워크의 계정 페더레이션 서버와 AD DS는 자격 증명의 유효성을 검사하고 보안 토큰을 작성하기 위한 특성을 가져옵니다.

회사 네트워크 사용자가 AD FS 사용 웹 서버에 직접 연결하면 리소스 페더레이션 서버로 리디렉션됩니다. 그런 다음 방문 판매원의 경우와 마찬가지로 DNS(Domain Name System) 서버를 통해 계정 페더레이션 서버의 정식 이름(CNAME)으로 리디렉션됩니다.

클라이언트 응용 프로그램 요청

다음 그림과 해당 단계에서는 TLS/SSL을 사용하는 AD FS의 클라이언트 응용 프로그램 요청 프로세스에 대해 자세히 설명합니다.

포리스트 트러스트를 사용하는 페더레이션된 웹 SSO 디자인 예
  1. 창고 관리자가 웹 브라우저를 사용하여 AD FS 사용 웹 서버에서 응용 프로그램을 엽니다.

  2. AD FS 인증 쿠키가 없어 AD FS 사용 웹 서버에서 요청을 거부합니다. AD FS 사용 웹 서버에서 클라이언트 브라우저를 리소스 페더레이션 서버의 로그온 웹 페이지로 리디렉션합니다.

  3. 클라이언트 브라우저에서 리소스 페더레이션 서버의 로그온 웹 페이지를 요청합니다.

  4. 여러 계정 저장소나 여러 파트너가 구성되어 있는지에 따라 리소스 페더레이션 서버의 웹 페이지에서 사용자에게 계정 파트너 검색을 물어보는 프롬프트를 표시합니다.

  5. 클라이언트 브라우저가 계정 페더레이션 서버로 직접 전송됩니다.

사용자 인증

다음 그림과 해당 단계에서는 AD FS의 클라이언트 응용 프로그램 요청 프로세스에 대해 자세히 설명합니다. 다르게 명시되지 않은 경우 모든 트래픽은 TLS/SSL을 사용합니다.

포리스트 트러스트를 사용하는 페더레이션된 웹 SSO 디자인 예
  1. 계정 페더레이션 서버는 다음을 수행합니다.

    • 사용자 자격 증명의 유효성을 검사하고 LDAP를 사용하여 회사 네트워크 포리스트의 AD DS에서 특성을 가져옵니다.

    • 웹 응용 프로그램에 대한 보안 토큰을 작성합니다.

    • AD FS 인증 쿠키를 작성합니다.

  2. 계정 페더레이션 서버에서 리소스 페더레이션 서버로 POST 요청을 보내도록 웹 브라우저를 리디렉션합니다.

    • 리소스 페더레이션 서버에서 Java 스크립트 코드가 포함된 HTML 페이지를 반환합니다. 웹 브라우저에서 이 Java 스크립트 코드를 실행하면 AD FS 사용 웹 서버에 대해 보안 토큰의 HTTP POST가 수행됩니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  3. 클라이언트 브라우저에서 리소스 페더레이션 서버로 POST 요청을 보냅니다.

  4. 리소스 페더레이션 서버에서 다음 작업을 수행합니다.

    • 웹 응용 프로그램에 대한 새 보안 토큰을 작성합니다.

    • 새 AD FS 인증 쿠키를 작성합니다.

    그런 다음 리소스 페더레이션 서버에서 AD FS 사용 웹 서버로 POST 요청을 보내도록 웹 브라우저를 리디렉션합니다.

    • 리소스 페더레이션 서버에서 Java 스크립트 코드가 포함된 HTML 페이지를 반환합니다. 웹 브라우저에서 이 Java 스크립트 코드를 실행하면 AD FS 사용 웹 서버에 대해 보안 토큰의 HTTP POST가 수행됩니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  5. 클라이언트 브라우저에서 AD FS 사용 웹 서버로 POST 요청을 보냅니다.

  6. AD FS 사용 웹 서버에서 웹 브라우저를 응용 프로그램 URL로 리디렉션합니다.

    • AD FS에서 보안 토큰의 유효성을 검사합니다.

    • AD FS 사용 웹 서버에서 새 AD FS 인증 쿠키를 작성합니다.

    • AD FS 인증 쿠키가 브라우저에 기록됩니다.

  7. 클라이언트 브라우저에서 AD FS 인증 쿠키를 사용하여 AD FS 사용 웹 서버의 원래 응용 프로그램 URL을 요청합니다.

  8. 웹 응용 프로그램에서 다음 작업을 수행합니다.

    • 보안 토큰에서 가장 Windows NT 토큰을 작성합니다.

    • 이 Windows NT 토큰을 사용하여 가장하고 액세스 검사를 수행합니다.

웹 브라우저에서 해당 AD FS 인증 쿠키를 사용하여 AD FS 사용 웹 서버의 추가 응용 프로그램 URL을 요청합니다.