KR20190036504A - 클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스 - Google Patents

클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스 Download PDF

Info

Publication number
KR20190036504A
KR20190036504A KR1020180115172A KR20180115172A KR20190036504A KR 20190036504 A KR20190036504 A KR 20190036504A KR 1020180115172 A KR1020180115172 A KR 1020180115172A KR 20180115172 A KR20180115172 A KR 20180115172A KR 20190036504 A KR20190036504 A KR 20190036504A
Authority
KR
South Korea
Prior art keywords
mobile device
identity provider
application
request
authentication
Prior art date
Application number
KR1020180115172A
Other languages
English (en)
Other versions
KR102188919B1 (ko
Inventor
자와할 자날드하난
Original Assignee
사이트릭스 시스템스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20190036504A publication Critical patent/KR20190036504A/ko
Application granted granted Critical
Publication of KR102188919B1 publication Critical patent/KR102188919B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/068Authentication using credential vaults, e.g. password manager applications or one time password [OTP] applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/069Authentication using certificates or pre-shared keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/108Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/37Managing security policies for mobile devices or for controlling mobile applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/71Hardware identity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/72Subscriber identity

Abstract

클라이언트 애플리케이션들에 대한 싱글 사인 온(SSO) 및/또는 조건부 액세스를 구현하기 위한 방법들 및 시스템들이 본 출원에서 설명된다. 시스템은 아이덴티티 제공자 게이트웨이를 포함할 수 있으며, 시스템은 아이덴티티 제공자 게이트웨이를 사용하여 클라이언트 애플리케이션의 사용자를 인증할 수 있다. 몇몇 양상들에서, 보안 통신 터널은 클라이언트 애플리케이션 및 아이덴티티 제공자 게이트웨이 사이에 수립될 수 있으며, 보안 통신 터널은, 예를 들면, 클라이언트 인증서를 사용할 수 있다. 아이덴티티 제공자 게이트웨이는 클라이언트 인증서와 연관된 정보에 기초하여 하나 이상의 리소스들로의 액세스를 클라이언트 애플리케이션에게 승인하거나 또는 거부할 수 있다.

Description

클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스{SECURE SINGLE SIGN ON AND CONDITIONAL ACCESS FOR CLIENT APPLICATIONS}
본 출원에서 설명된 양상들은 일반적으로 컴퓨터 네트워킹 및 데이터 보안에 관한 것이다. 보다 구체적으로, 본 출원에서 설명된 양상들은 싱글 사인 온 및/또는 조건부 액세스 메커니즘들을 사용하여 하나 이상의 리소스들로의 액세스를 클라이언트 디바이스들에게 승인하는 것에 관한 것이다.
갈수록 더, 소프트웨어 애플리케이션들(예로서, 기업 애플리케이션들)은, BYOD(bring your own device)와 같은, 기업 발행 디바이스들이 아닐 수 있는 디바이스들을 사용하여 소비될 수 있다. 최종 사용자들은 그들의 기업 애플리케이션들에 대한 소비자-형 사용자 경험을 바랄 수 있다. 예를 들면, 사용자들은 기업 애플리케이션들에 대한 싱글 사인 온(SSO)을 수행하기 위한 능력을 원할 수 있다. 동시에, IT 부서들은 기업 데이터가 허가된 사용자들에 의해, 허가된 엔드포인트들 상에서, 허가된 애플리케이션들을 사용하여 안전하게 소비되길 원할 수 있다. 그들은 또한 조건부 액세스 메커니즘들을 사용하여 이상 거동들을 인식하며 기업 데이터로의 액세스를 제한하기 위해, 기계 학습과 같은, 기술들을 레버리징하기를 원할 수 있다.
SSO 및 조건부 액세스는 모바일 디바이스 플랫폼들과 같은, 특정한 플랫폼들에 대해 도전할 수 있다. 예를 들면, 모바일 플랫폼들(예로서, iOS, 안드로이드, 윈도우즈 10 등)은 애플리케이션 샌드박싱을 중시할 수 있으며, 이것은 데스크탑 컴퓨터들 상에서 사용되는 SSO에 대한 종래의 솔루션들(예로서, 공유 시스템 키-체인 또는 공유 인증 쿠키들)을 방지할 수 있다. 모바일 엔드포인트들은 BYOD 디바이스들일 수 있으며, 예를 들면, 최종 사용자에 의해 설치된 비-기업 애플리케이션들을 가질 수 있다. 어떤 애플리케이션들이 SSO 기능으로의 액세스를 갖는지를 제어하기 위한 요구가 있다. 조건부 액세스 결정들에 영향을 주는 인자들을 고려하기 위한 요구가 또한 있다.
다음은 본 출원에서 설명된 다양한 양상들의 단순화된 요약을 제공한다. 이러한 요약은 광대한 개요가 아니며, 주요한 또는 중대한 요소들을 식별하거나 또는 청구항들의 범위를 기술하도록 의도되지 않는다. 다음의 요약은 단지 이하에서 제공되는 보다 상세한 설명에 대한 도입 서곡으로서 단순화된 형태로 몇몇 개념들을 제공한다.
보안 통신 터널은 모바일 디바이스 상에서 운용하는 애플리케이션 및 아이덴티티 제공자 게이트웨이 디바이스 사이에서 수립될 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 모바일 디바이스 상에서 운용하는 애플리케이션으로부터, 상기 보안 통신 터널을 통해, 클라이언트 인증서를 포함한 인증 요청을 수신할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 클라이언트 인증서로부터, 상기 모바일 디바이스와 연관된 디바이스 식별자를 추출할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 디바이스 관리 서버로, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신할 수 있다. 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청은 상기 모바일 디바이스와 연관된 디바이스 식별자를 포함할 수 있다. 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하는 것에 응답하여, 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 디바이스 관리 서버로부터, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시를 수신할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시에 기초하여, 상기 모바일 디바이스 상에서 운용하는 애플리케이션과 연관된 서비스로의 액세스를 상기 모바일 디바이스 상에서 운용하는 애플리케이션에게 승인할지를 결정할 수 있다.
몇몇 양상들에서, 상기 보안 통신 터널을 수립하는 것은, 상기 모바일 디바이스 상에서 운용하는 애플리케이션에 의해, 상기 아이덴티티 제공자 게이트웨이 디바이스를 액세스하기 위한 요청을 검출하는 것을 포함할 수 있다. 터널링 애플리케이션은 상기 아이덴티티 제공자 게이트웨이 디바이스를 액세스하기 위한 요청을 가로챌 수 있다. 상기 터널링 애플리케이션은, 상기 클라이언트 인증서를 사용하여, 상기 모바일 디바이스 상에서 운용하는 애플리케이션 및 상기 아이덴티티 제공자 게이트웨이 디바이스 사이에 보안 통신 터널을 수립할 수 있다. 상기 보안 통신 터널을 수립하는 것은, 상기 서비스의 서비스 제공자로부터, 상기 인증 요청을 상기 아이덴티티 제공자 게이트웨이 디바이스로 리다이렉트시키기 위해, 요청에 응답하여 수행될 수 있다. 상기 보안 통신 터널은 가상 사설 네트워크(VPN) 터널을 포함할 수 있다.
몇몇 양상들에서, 서비스로의 액세스를 승인하도록 결정한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스는 상기 모바일 디바이스와 연관된 캐시된 인증 데이터를 검색할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 모바일 디바이스로, 상기 인증 토큰을 송신할 수 있다. 상기 인증 토큰은 상기 모바일 디바이스 상에서 운용하는 애플리케이션과 연관된 서비스를 액세스하기 위해 모바일 디바이스에 의해 사용될 수 있다.
몇몇 양상들에서, 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스와 연관된 인증 데이터가 상기 아이덴티티 제공자 게이트웨이 디바이스에 캐시되지 않음을 결정할 수 있다. 상기 인증 데이터가 상기 아이덴티티 제공자 게이트웨이 디바이스에 캐시되지 않음을 결정하는 것에 응답하여, 상기 아이덴티티 제공자 게이트웨이 디바이스는, 모바일 디바이스로, 아이덴티티 제공자 디바이스로부터의 상기 인증 데이터에 대한 요청을 송신할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 모바일 디바이스로부터, 아이덴티티 제공자 디바이스를 통해, 상기 모바일 디바이스와 연관된 인증 데이터를 수신할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스와 연관된 인증 데이터를 캐시할 수 있다. 미리 결정된 시간량 후, 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스와 연관된 캐시된 인증 데이터를 제거할 수 있다.
몇몇 양상들에서, 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스와 연관된 캐시된 인증 데이터를 검색할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스로, 상기 인증 토큰을 송신할 수 있다.
몇몇 양상들에서, 서비스로의 액세스를 승인하도록 결정한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스는, 클라이언트 인증서로부터, 모바일 디바이스의 사용자와 연관된 사용자 식별자를 추출할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 사용자 식별자를 사용하여, 인증 토큰을 생성할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는 모바일 디바이스로, 상기 인증 토큰을 송신할 수 있다.
몇몇 양상들에서, 상기 사용자 식별자를 추출한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스는, 디렉토리 서비스로, 모바일 디바이스의 사용자와 연관된 부가 데이터에 대한 요청을 송신할 수 있다. 상기 아이덴티티 제공자 게이트웨이 디바이스는, 상기 디렉토리 서비스로부터, 상기 모바일 디바이스의 사용자와 연관된 부가 데이터를 수신할 수 있다. 인증 토큰을 생성하는 것은 사용자 식별자 및 상기 디렉토리 서비스로부터 수신된 사용자와 연관된 부가 데이터를 사용하여 인증 토큰을 생성하는 것을 포함할 수 있다.
이들 및 부가적인 양상들은 이하에서 보다 상세하게 논의된 개시들의 이득을 갖고 이해될 것이다.
본 출원에서 설명된 양상들 및 그것의 이점들에 대한 보다 완전한 이해는 수반되는 도면들을 고려하여 다음의 설명을 참조함으로써 획득될 수 있으며, 여기에서 유사한 참조 번호들은 유사한 특징들을 나타낸다:
도 1은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 컴퓨터 시스템 아키텍처를 묘사한다.
도 2는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 원격-액세스 시스템 아키텍처를 묘사한다.
도 3은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 가상화(하이퍼바이저) 시스템 아키텍처를 묘사한다.
도 4는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 클라우드-기반 시스템 아키텍처를 묘사한다.
도 5는 예시적인 기업 이동성 관리 시스템을 묘사한다.
도 6은 또 다른 예시적인 기업 이동성 관리 시스템을 묘사한다.
도 7은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 예시적인 시스템 및 방법을 묘사한다.
도 8a 및 도 8b는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 예시적인 시스템 및 방법을 묘사한다.
도 9는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 또 다른 예시적인 시스템 및 방법을 묘사한다.
도 10은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 또 다른 예시적인 시스템 및 방법을 묘사한다.
다양한 실시예들에 대한 다음의 설명에서, 상기 식별되고 그 일부를 형성하며, 설명된 양상들이 실시될 수 있는 다양한 실시예들이 예시로서 도시되는 수반된 도면들에 대한 참조가 이루어진다. 다른 실시예들이 이용될 수 있으며 구조적 및 기능적 수정들이 여기에 설명된 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다. 다양한 양상들은 다른 실시예들이 가능하며 다양한 상이한 방식들로 실시되거나 또는 실행되는 것이 가능하다.
여기에서 사용된 어법 및 전문 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되지 않아야 한다는 것이 이해될 것이다. 오히려, 여기에서 사용된 구절들 및 용어들은 그것들의 가장 넓은 해석 및 의미를 제공받을 것이다. "포함시키는" 및 "포함한" 및 그것의 변형들의 사용은 그 후 나열된 아이템들 및 그것의 등가물들뿐만 아니라 부가적인 아이템들 및 그것의 등가물들을 포함하는 것으로 의도된다. 용어들("장착된", "연결된", "결합된", "배치된", "맞물린" 및 유사한 용어들)의 사용은 직접 및 간접적 장착, 연결, 결합, 배치 및 맞물림 모두를 포함하도록 의도된다.
컴퓨팅 아키텍처
컴퓨터 소프트웨어, 하드웨어, 및 네트워크들은 다른 것들 중에서, 독립형, 네트워킹, 원격-액세스(또한, 원격 데스크탑으로 알려진), 가상화, 및/또는 클라우드-기반 환경들을 포함한, 다양한 상이한 환경들에서 이용될 수 있다. 도 1은 독립형 및/또는 네트워킹 환경에서 본 출원에서 설명된 하나 이상의 예시적인 양상들을 구현하기 위해 사용될 수 있는 시스템 아키텍처 및 데이터 프로세싱 디바이스의 일 예를 예시한다. 다양한 네트워크 노드들(103, 105, 107, 및 109)은 인터넷과 같은, 광역 네트워크(WAN)(101)를 통해 상호 연결될 수 있다. 사설 인트라넷들, 기업 네트워크들, LAN들, 대도시 영역 네트워크들(MAN) 무선 네트워크들, 개인 네트워크들(PAN) 등을 포함한, 다른 네트워크들이 또한 또는 대안적으로 사용될 수 있다. 네트워크(101)는 예시적인 목적들을 위한 것이며 보다 적은 또는 부가적인 컴퓨터 네트워크들로 대체될 수 있다. 근거리 네트워크(LAN)는 임의의 알려진 LAN 토폴로지 중 하나 이상을 가질 수 있으며 이더넷과 같은, 다양한 상이한 프로토콜들 중 하나 이상을 사용할 수 있다. 디바이스들(103, 105, 107, 109) 및 다른 디바이스들(도시되지 않음)은 연선들, 동축 케이블들, 광섬유, 라디오 파들 또는 다른 통신 미디어를 통해 네트워크들 중 하나 이상에 연결될 수 있다.
여기에서 사용되고 도면들에서 묘사된 바와 같이 용어("네트워크")는 원격 저장 디바이스들이 하나 이상의 통신 경로들을 통해 함께 결합되는 시스템들뿐만 아니라 가끔 저장 능력을 가진 이러한 시스템들에 결합될 수 있는 독립형 디바이스들을 또한 나타낸다. 결과적으로, 용어("네트워크")는 "물리적 네트워크"뿐만 아니라 "콘텐트 네트워크"를 또한 포함하며, 이것은 모든 물리적 네트워크들에 걸쳐 존재하는 - 단일 엔티티에 기인하는 - 데이터로 구성된다.
구성요소들은 데이터 서버(103), 웹 서버(105), 및 클라이언트 컴퓨터들(107, 109)을 포함할 수 있다. 데이터 서버(103)는 본 출원에서 설명된 하나 이상의 예시적인 양상들을 수행하기 위해 제어 소프트웨어 및 데이터베이스들의 전체 액세스, 제어 및 관리를 제공한다. 데이터 서버(103)는 사용자들이 상호 작용하며 요구된 대로 데이터를 획득하는 웹 서버(105)에 연결될 수 있다. 대안적으로, 데이터 서버(103)는 웹 서버 자체로서 동작하며 인터넷에 직접 연결될 수 있다. 데이터 서버(103)는, 네트워크(101)(예로서, 인터넷)를 통해, 직접 또는 간접 연결을 통해, 또는 몇몇 다른 네트워크를 통해 웹 서버(105)에 연결될 수 있다. 사용자들은 원격 컴퓨터들(107, 109)을 사용하여, 예로서, 웹 서버(105)에 의해 호스팅된 하나 이상의 외부적으로 노출된 웹 사이트들을 통해 데이터 서버(103)에 연결하기 위해 웹 브라우저를 사용하여 데이터 서버(103)와 상호 작용할 수 있다. 클라이언트 컴퓨터들(107, 109)은 그 안에 저장된 데이터를 액세스하기 위해 데이터 서버(103)와 협력하여 사용될 수 있거나, 또는 다른 목적들을 위해 사용될 수 있다. 예를 들면, 클라이언트 디바이스(107)로부터, 사용자는 이 기술분야에 알려진 바와 같이, 인터넷 브라우저를 사용하여, 또는 컴퓨터 네트워크(인터넷과 같은)를 통해 웹 서버(105) 및/또는 데이터 서버(103)와 통신하는 소프트웨어 애플리케이션을 실행함으로써 웹 서버(105)를 액세스할 수 있다.
서버들 및 애플리케이션들은 동일한 물리적 기계들 상에서 조합될 수 있으며, 별개의 가상 또는 논리 어드레스들을 유지하거나, 또는 별개의 물리적 기계들 상에 존재할 수 있다. 도 1은 사용될 수 있는 네트워크 아키텍처의 일 예를 예시하며, 이 기술분야의 숙련자들은 여기에서 추가로 설명되는 바와 같이, 사용된 특정 네트워크 아키텍처 및 데이터 프로세싱 디바이스들이 달라질 수 있으며, 그것들이 제공하는 기능에 부차적이라는 것을 이해할 것이다. 예를 들면, 웹 서버(105) 및 데이터 서버(103)에 의해 제공된 서비스들은 단일 서버상에서 조합될 수 있다.
각각의 구성요소(103, 105, 107, 109)는 임의의 유형의 알려진 컴퓨터, 서버, 또는 데이터 프로세싱 디바이스일 수 있다. 예로서, 데이터 서버(103)는 데이터 서버(103)의 전체 동작을 제어하는 프로세서(111)를 포함할 수 있다. 데이터 서버(103)는 랜덤 액세스 메모리(RAM)(113), 판독 전용 메모리(ROM)(116), 네트워크 인터페이스(117), 입력/출력 인터페이스들(119)(예로서, 키보드, 마우스, 디스플레이, 프린터 등), 및 메모리(121)를 추가로 포함할 수 있다. 입력/출력(I/O)(119)은 데이터 또는 파일들을 판독하고, 기록하고, 디스플레이하며, 및/또는 인쇄하기 위해 다양한 인터페이스 유닛들 및 드라이브들을 포함할 수 있다. 메모리(121)는 데이터 프로세싱 디바이스(103), 본 출원에서 설명된 양상들을 수행하도록 데이터 서버(103)에 지시하기 위한 제어 로직(125), 본 출원에서 설명된 양상들과 함께 사용되거나 또는 사용되지 않을 수 있는 보조, 지원, 및/또는 다른 기능을 제공하는 다른 애플리케이션 소프트웨어(127)의 전체 동작을 제어하기 위한 운영 체제 소프트웨어(123)를 추가로 저장할 수 있다. 제어 로직은 또한 여기에서 데이터 서버 소프트웨어(125)로서 불리울 수 있다. 데이터 서버 소프트웨어의 기능은 제어 로직으로 코딩된 규칙들에 기초하여 자동으로 이루어지고, 사용자가 시스템에 입력을 제공하는 것에 의해 수동으로 이루어진 동작들 또는 판단들, 및/또는 사용자 입력(예로서, 질의들, 데이터 업데이트들 등)에 기초한 자동 프로세싱의 조합을 나타낼 수 있다.
메모리(121)는 또한 제 1 데이터베이스(129) 및 제 2 데이터베이스(131)를 포함한, 본 출원에서 설명된 하나 이상의 양상들의 수행 시 사용된 데이터를 저장할 수 있다. 몇몇 실시예들에서, 제 1 데이터베이스는 제 2 데이터베이스(예로서, 개별 테이블, 보고 등으로서)를 포함할 수 있다. 즉, 정보는, 시스템 설계에 의존하여, 단일 데이터베이스에 저장되거나, 또는 상이한 논리, 가상, 또는 물리적 데이터베이스들로 분리될 수 있다. 디바이스들(105, 107, 109)은 디바이스(103)에 대하여 설명된 바와 같이 유사한 또는 상이한 아키텍처를 가질 수 있다. 이 기술분야의 숙련자들은 본 출원에서 설명된 바와 같이 데이터 프로세싱 디바이스(103)(또는 디바이스(105, 107, 109))의 기능이, 지리적 위치, 사용자 액세스 레벨, 서비스 품질(QoS) 등에 기초하여 트랜잭션들을 분리하기 위해, 예를 들면, 다수의 컴퓨터들에 걸쳐 프로세싱 부하를 분배하기 위해, 다수의 데이터 프로세싱 디바이스들에 걸쳐 확산될 수 있다는 것을 이해할 것이다.
하나 이상의 양상들은 본 출원에서 설명된 바와 같이 하나 이상의 컴퓨터들 또는 다른 디바이스들에 의해 실행된, 하나 이상의 프로그램 모듈들에서와 같은, 컴퓨터-사용 가능한 또는 판독 가능한 데이터 및/또는 컴퓨터-실행 가능 지시들에서 구체화될 수 있다. 일반적으로, 프로그램 모듈들은 컴퓨터 또는 다른 디바이스에서 프로세서에 의해 실행될 때 특정한 태스크들을 수행하거나 또는 특정한 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 구성요소들, 데이터 구조들 등을 포함한다. 모듈들은 실행을 위해 그 뒤에 컴파일링되는 소스 코드 프로그래밍 언어로 기록될 수 있거나, 또는 (이에 제한되지 않지만) 하이퍼텍스트 마크업 언어(HTML) 또는 확장 가능 마크업 언어(XML)와 같은 스크립트 언어로 기록될 수 있다. 컴퓨터 실행 가능 지시들은 비휘발성 저장 디바이스와 같은 컴퓨터 판독 가능 매체상에 저장될 수 있다. 하드 디스크들, CD-ROM들, 광학 저장 디바이스들, 자기 저장 디바이스들, 및/또는 그것의 임의의 조합을 포함한, 임의의 적절한 컴퓨터 판독 가능 저장 미디어가 이용될 수 있다. 또한, 본 출원에서 설명된 바와 같이 데이터 또는 이벤트들을 표현한 다양한 송신(비-저장) 미디어는 금속 와이어들, 광 섬유들, 및/또는 무선 송신 미디어(예로서, 공기 및/또는 공간)와 같은 신호-전도 미디어를 통해 이동하는 전자기파들의 형태로 소스 및 목적지 사이에서 전달될 수 있다. 본 출원에서 설명된 다양한 양상들은 방법, 데이터 프로세싱 시스템, 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 그러므로, 다양한 기능들은 소프트웨어, 펌웨어 및/또는 집적 회로들, 필드 프로그램 가능한 게이트 어레이들(FPGA) 등과 같은 하드웨어 또는 하드웨어 등가물들에서 전체적으로 또는 부분적으로 구체화될 수 있다. 특정한 데이터 구조들은 본 출원에서 설명된 하나 이상의 양상들을 보다 효과적으로 구현하기 위해 사용될 수 있으며, 이러한 데이터 구조들은 본 출원에서 설명된 컴퓨터 실행 가능한 지시들 및 컴퓨터-사용 가능한 데이터의 범위 내에서 고려된다.
도 2를 추가로 참조하면, 본 출원에서 설명된 하나 이상의 양상들은 원격-액세스 환경에서 구현될 수 있다. 도 2는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따라 사용될 수 있는 예시적인 컴퓨팅 환경(200)에서 일반 컴퓨팅 디바이스(201)를 포함한 예시적인 시스템 아키텍처를 묘사한다. 일반 컴퓨팅 디바이스(201)는 클라이언트 액세스 디바이스들을 위한 가상 기계들을 제공하도록 구성된 단일-서버 또는 다중-서버 데스크탑 가상화 시스템(예로서, 원격 액세스 또는 클라우드 시스템)에서 서버(206a)로서 사용될 수 있다. 일반 컴퓨팅 디바이스(201)는 RAM(205), ROM(207), I/O 모듈(209), 및 메모리(215)를 포함한, 서버 및 그것의 연관된 구성요소들의 전체 동작을 제어하기 위해 프로세서(203)를 가질 수 있다.
I/O 모듈(209)은 일반 컴퓨팅 디바이스(201)의 사용자가 입력을 제공할 수 있는 마우스, 키패드, 터치 스크린, 스캐너, 광학 판독기, 및/또는 스타일러스(또는 다른 입력 디바이스(들))를 포함할 수 있으며, 또한 오디오 출력을 제공하기 위한 스피커 및 텍스트, 시청각, 및/또는 그래픽 출력을 제공하기 위한 비디오 디스플레이 디바이스 중 하나 이상을 포함할 수 있다. 소프트웨어는 본 출원에서 설명된 바와 같이 다양한 기능들을 제공하기 위해 특수 목적 컴퓨팅 디바이스로 일반 컴퓨팅 디바이스(201)를 구성하기 위한 지시들을 프로세서(203)에 제공하기 위해 메모리(215) 및/또는 다른 저장 장치 내에 저장될 수 있다. 예를 들면, 메모리(215)는 운영 체제(217), 애플리케이션 프로그램들(219), 및 연관된 데이터베이스(221)와 같은, 컴퓨팅 디바이스(201)에 의해 사용된 소프트웨어를 저장할 수 있다.
컴퓨팅 디바이스(201)는 단말기들(240)(또한 클라이언트 디바이스들로서 불리우는)과 같은, 하나 이상의 원격 컴퓨터들로의 연결들을 지원하는 네트워킹 환경에서 동작할 수 있다. 단말기들(240)은 일반 컴퓨팅 디바이스(103 또는 201)에 대하여 상기 설명된 많은 또는 모든 요소들을 포함하는 개인용 컴퓨터들, 모바일 디바이스들, 랩탑 컴퓨터들, 태블릿들, 또는 서버들일 수 있다. 도 2에 묘사된 네트워크 연결들은 근거리 네트워크(LAN)(225) 및 광역 네트워크(WAN)(229)를 포함하지만, 또한 다른 네트워크들을 포함할 수 있다. LAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스(201)는 네트워크 인터페이스 또는 어댑터(223)를 통해 LAN(225)에 연결될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스(201)는 컴퓨터 네트워크(230)(예로서, 인터넷)와 같은, WAN(229)을 통한 통신들을 수립하기 위해 모뎀(227) 또는 다른 광역 네트워크 인터페이스를 포함할 수 있다. 도시된 네트워크 연결들은 예시적이며 컴퓨터들 사이에 통신 링크를 수립하는 다른 수단이 사용될 수 있다는 것이 이해될 것이다. 컴퓨팅 디바이스(201) 및/또는 단말기들(240)은 또한 배터리, 스피커, 및 안테나들(도시되지 않음)과 같은, 다양한 다른 구성요소들을 포함한 이동 단말기들(예로서, 이동 전화들, 스마트폰들, 개인용 디지털 보조기들(PDA들), 노트북들 등)일 수 있다.
본 출원에서 설명된 양상들은 또한 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들을 갖고 동작적일 수 있다. 본 출원에서 설명된 양상들과 함께 사용하기에 적합할 수 있는 다른 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 이에 제한되지 않지만, 개인용 컴퓨터들, 서버 컴퓨터들, 핸드-헬드 또는 랩탑 디바이스들, 다중프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋 탑 박스들, 프로그램 가능한 소비자 전자 장치들, 네트워크 개인용 컴퓨터들(PC들), 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산 컴퓨팅 환경들 등을 포함한다.
도 2에 도시된 바와 같이, 하나 이상의 클라이언트 디바이스들(240)은 하나 이상의 서버들(206a 내지 206n)(일반적으로 여기에서 "서버(들)(206)"로 불리우는)과 통신할 수 있다. 일 실시예에서, 컴퓨팅 환경(200)은 서버(들)(206) 및 클라이언트 기계(들)(240) 사이에 설치된 네트워크 기기를 포함할 수 있다. 네트워크 기기는 클라이언트/서버 연결들을 관리할 수 있으며, 몇몇 경우들에서 복수의 백엔드 서버들(206) 간에 클라이언트 연결들을 로드 밸런싱할 수 있다.
클라이언트 기계(들)(240)는 몇몇 실시예들에서 단일 클라이언트 기계(240) 또는 클라이언트 기계들(240)의 단일 그룹으로 불리울 수 있지만, 서버(들)(206)는 단일 서버(206) 또는 서버들(206)의 단일 그룹으로 불리울 수 있다. 일 실시예에서, 단일 클라이언트 기계(240)는 하나 이상의 서버(206)와 통신하지만, 또 다른 실시예에서 단일 서버(206)는 하나 이상의 클라이언트 기계(240)와 통신한다. 또 다른 실시예에서, 단일 클라이언트 기계(240)는 단일 서버(206)와 통신한다.
클라이언트 기계(240)는, 몇몇 실시예들에서, 다음의 비-배타적 용어들 중 임의의 하나로 불리울 수 있다: 클라이언트 기계(들); 클라이언트(들); 클라이언트 컴퓨터(들); 클라이언트 디바이스(들); 클라이언트 컴퓨팅 디바이스(들); 로컬 기계; 원격 기계; 클라이언트 노드(들); 엔드포인트(들); 또는 엔드포인트 노드(들). 서버(206)는, 몇몇 실시예들에서, 다음의 비-배타적 용어들 중 임의의 하나로 불리울 수 있다: 서버(들), 로컬 기계; 원격 기계; 서버 팜(들), 또는 호스트 컴퓨팅 디바이스(들).
일 실시예에서, 클라이언트 기계(240)는 가상 기계일 수 있다. 가상 기계는 임의의 가상 기계일 수 있지만, 몇몇 실시예들에서 가상 기계는 유형 1 또는 유형 2 하이퍼바이저, 예를 들면, Citrix Systems에 의해 개발된 하이퍼바이저, IBM, VMware, 또는 임의의 다른 하이퍼바이저에 의해 관리된 임의의 가상 기계일 수 있다. 몇몇 양상들에서, 가상 기계는 하이퍼바이저에 의해 관리될 수 있지만, 양상들에서 가상 기계는 서버(206) 상에서 실행하는 하이퍼바이저 또는 클라이언트(240) 상에서 실행하는 하이퍼바이저에 의해 관리될 수 있다.
몇몇 실시예들은 서버(206) 또는 다른 원격에 위치된 기계 상에서 원격으로 실행하는 애플리케이션에 의해 생성된 애플리케이션 출력을 디스플레이하는 클라이언트 디바이스(240)를 포함한다. 이들 실시예들에서, 클라이언트 디바이스(240)는 애플리케이션 윈도우, 브라우저, 또는 다른 출력 윈도우에서 출력을 디스플레이하기 위해 가상 기계 수신기 프로그램 또는 애플리케이션을 실행할 수 있다. 일 예에서, 애플리케이션은 데스크탑이지만, 다른 예들에서 애플리케이션은 데스크탑을 생성하거나 또는 보여주는 애플리케이션이다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영 체제의 인스턴스에 대한 사용자 인터페이스를 제공하는 그래픽 셸을 포함할 수 있다. 여기에서 사용된 바와 같이, 애플리케이션들은 운영 체제(및, 선택적으로 또한 데스크탑)의 인스턴스가 로딩된 후 실행하는 프로그램들이다.
서버(206)는, 몇몇 실시예들에서, 서버(206) 상에서 실행하는 애플리케이션에 의해 생성된 디스플레이 출력을 제공하기 위해 클라이언트 상에서 실행하는 씬-클라이언트 또는 원격-디스플레이 애플리케이션으로 데이터를 전송하기 위해 원격 프리젠테이션 프로토콜 또는 다른 프로그램을 사용한다. 씬-클라이언트 또는 원격-디스플레이 프로토콜은 다음의 프로토콜들의 비-배타적 리스트 중 임의의 하나일 수 있다: 플로리다, 포트 로더데일의, Citrix Systems, Inc.에 의해 개발된 독립 컴퓨팅 아키텍처(ICA) 프로토콜; 워싱턴, 레드몬드의 Microsoft Corporation에 의해 제조된 원격 데스크탑 프로토콜(RDP).
원격 컴퓨팅 환경은 서버들(206a 내지 206n)이 예를 들면, 클라우드 컴퓨팅 환경에서, 서버 팜(206)으로 함께 논리적으로 그룹핑되도록 하나 이상의 서버(206a 내지 206n)를 포함할 수 있다. 서버 팜(206)은 논리적으로 함께 그룹핑되는 동안 지리적으로 분산되는 서버들(206), 또는 논리적으로 함께 그룹핑되는 동안 서로에 근접하여 위치되는 서버들(206)을 포함할 수 있다. 서버 팜(206) 내에서 지리적으로 분산된 서버들(206a 내지 206n)은, 몇몇 실시예들에서, WAN(광역), MAN(대도시), 또는 LAN(로컬)을 사용하여 통신할 수 있으며, 여기에서 상이한 지리적 지역들은: 상이한 대륙들; 대륙의 상이한 지역들; 상이한 국가들; 상이한 주들; 상이한 도시들; 상이한 캠퍼스들; 상이한 룸들; 또는 앞서 말한 지리적 위치들의 임의의 조합으로서 특성화될 수 있다. 몇몇 실시예들에서, 서버 팜(206)은 단일 엔티티로서 관리될 수 있지만, 다른 실시예들에서 서버 팜(206)은 다수의 서버 팜들을 포함할 수 있다.
몇몇 실시예들에서, 서버 팜은 대체로 유사한 유형의 운영 체제 플랫폼(예로서, WINDOWS, UNIX, LINUX, iOS, ANDROID, SYMBIAN 등)을 실행하는 서버들(206)을 포함할 수 있다. 다른 실시예들에서, 서버 팜(206)은 제 1 유형의 운영 체제 플랫폼을 실행하는 제 1 그룹의 하나 이상의 서버들, 및 제 2 유형의 운영 체제 플랫폼을 실행하는 제 2 그룹의 하나 이상의 서버들을 포함할 수 있다.
서버(206)는 요구된 대로, 임의의 유형의 서버, 예로서 파일 서버, 애플리케이션 서버, 웹 서버, 프록시 서버, 기기, 네트워크 기기, 게이트웨이, 애플리케이션 게이트웨이, 게이트웨이 서버, 가상화 서버, 배치 서버, 보안 소켓 계층(SSL) VPN 서버, 방화벽, 웹 서버, 애플리케이션 서버로서 또는 마스터 애플리케이션 서버, 활성 디렉토리를 실행하는 서버, 또는 방화벽 기능, 애플리케이션 기능, 또는 로드 밸런싱 기능을 제공하는 애플리케이션 가속화 프로그램을 실행하는 서버로서 구성될 수 있다. 다른 서버 유형들이 또한 사용될 수 있다.
몇몇 실시예들은 클라이언트 기계(240)로부터 요청들을 수신하고, 요청을 제 2 서버(206b)로 포워딩하며, 제 2 서버(206b)로부터의 응답으로 클라이언트 기계(240)에 의해 생성된 요청에 응답하는 제 1 서버(206a)를 포함한다. 제 1 서버(206a)는 클라이언트 기계(240)에 이용 가능한 애플리케이션들의 목록뿐만 아니라 애플리케이션들의 목록 내에서 식별된 애플리케이션을 호스팅하는 애플리케이션 서버(206)와 연관된 어드레스 정보를 획득할 수 있다. 제 1 서버(206a)는 그 후 웹 인터페이스를 사용하여 클라이언트의 요청에 응답을 제공하며, 식별된 애플리케이션으로의 액세스를 클라이언트(240)에 제공하기 위해 클라이언트(240)와 직접 통신할 수 있다. 하나 이상의 클라이언트들(240) 및/또는 하나 이상의 서버들(206)은 네트워크(230), 예로서 네트워크(101)를 통해 데이터를 송신할 수 있다.
도 2는 예시적인 데스크탑 가상화 시스템의 고-레벨 아키텍처를 도시한다. 도시된 바와 같이, 데스크탑 가상화 시스템은, 하나 이상의 클라이언트 액세스 디바이스들(204)로 가상 데스크탑들 및/또는 가상 애플리케이션들을 제공하도록 구성된 적어도 하나의 가상화 서버(206)를 포함하여, 단일-서버 또는 다중-서버 시스템, 또는 클라우드 시스템일 수 있다. 여기에서 사용된 바와 같이, 데스크탑은 하나 이상의 애플리케이션들이 호스팅되고 및/또는 실행될 수 있는 그래픽 환경 또는 공간을 나타낸다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영 체제의 인스턴스에 대한 사용자 인터페이스를 제공하는 그래픽 셸을 포함할 수 있다. 애플리케이션들은 운영 체제(및, 선택적으로 또한 데스크탑)의 인스턴스가 로딩된 후 실행하는 프로그램들을 포함할 수 있다. 운영 체제의 각각의 인스턴스는 물리적(예로서, 디바이스 당 하나의 운영 체제)이거나 또는 가상적(예로서, 단일 디바이스 상에서 운용하는 OS의 많은 인스턴스들)일 수 있다. 각각의 애플리케이션은 로컬 디바이스 상에서 실행되거나, 또는 원격에 위치된 디바이스(예로서, 원격) 상에서 실행될 수 있다.
도 3을 추가로 참조하면, 컴퓨터 디바이스(301)는 가상화 환경, 예를 들면, 단일-서버, 다중-서버, 또는 클라우드-컴퓨팅 환경에서 가상화 서버로서 구성될 수 있다. 도 3에 예시된 가상화 서버(301)는 도 2에 예시된 서버(206)의 하나 이상의 실시예들에 의해 또는 다른 알려진 컴퓨팅 디바이스들에 의해 구현되고 및/또는 그것으로서 배치될 수 있다. 하나 이상의 물리적 디스크들(304), 하나 이상의 물리적 디바이스들(306), 하나 이상의 물리적 프로세서들(308) 및 하나 이상의 물리적 메모리들(316)을 포함할 수 있는 하드웨어 계층이 가상화 서버(301)에 포함된다. 몇몇 실시예들에서, 펌웨어(312)는 물리적 메모리(316)에서 메모리 요소 내에 저장될 수 있으며 물리적 프로세서들(308) 중 하나 이상에 의해 실행될 수 있다. 가상화 서버(301)는 물리적 메모리(316)에서 메모리 요소에 저장되며 물리적 프로세서들(308) 중 하나 이상에 의해 실행될 수 있는 운영 체제(314)를 추가로 포함할 수 있다. 더 나아가, 하이퍼바이저(302)는 물리적 메모리(316)에서 메모리 요소에 저장될 수 있으며 물리적 프로세서들(308) 중 하나 이상에 의해 실행될 수 있다.
물리적 프로세서들(308) 중 하나 이상에서 하나 이상의 가상 기계들(332A 내지 332C)(일반적으로 332)을 실행할 수 있다. 각각의 가상 기계(332)는 가상 디스크(326A 내지 326C) 및 가상 프로세서(328A 내지 328C)를 가질 수 있다. 몇몇 실시예들에서, 제 1 가상 기계(332A)는, 가상 프로세서(328A)를 사용하여, 툴 스택(324)을 포함하는 제어 프로그램(320)을 실행할 수 있다. 제어 프로그램(320)은 제어 가상 기계, Dom0, Domain 0, 또는 시스템 관리 및/또는 제어를 위해 사용된 다른 가상 기계로서 불리울 수 있다. 몇몇 실시예들에서, 하나 이상의 가상 기계들(332B 내지 332C)은, 가상 프로세서(328B 내지 328C)를 사용하여, 게스트 운영 체제(330A 내지 330B)를 실행할 수 있다.
가상화 서버(301)는 가상화 서버(301)와 통신하는 하드웨어의 하나 이상의 조각들을 가진 하드웨어 층(310)을 포함할 수 있다. 몇몇 실시예들에서, 하드웨어 층(310)은 하나 이상의 물리적 디스크들(304), 하나 이상의 물리적 디바이스들(306), 하나 이상의 물리적 프로세서들(308), 및 하나 이상의 메모리(316)를 포함할 수 있다. 물리적 구성요소들(304, 306, 308, 및 316)은, 예를 들면, 상기 설명된 구성요소들 중 임의의 것을 포함할 수 있다. 물리적 디바이스들(306)은, 예를 들면, 네트워크 인터페이스 카드, 비디오 카드, 키보드, 마우스, 입력 디바이스, 모니터, 디스플레이 디바이스, 스피커들, 광학 드라이브, 저장 디바이스, 범용 직렬 버스 연결, 프린터, 스캐너, 네트워크 요소(예로서, 라우터, 방화벽, 네트워크 어드레스 변환기, 로드 밸런서, 가상 사설 네트워크(VPN) 게이트웨이, 동적 호스트 구성 프로토콜(DHCP) 라우터 등), 또는 가상화 서버(301)에 연결되거나 또는 그것과 통신하는 임의의 디바이스를 포함할 수 있다. 하드웨어 계층(310)에서 물리적 메모리(316)는 임의의 유형의 메모리를 포함할 수 있다. 물리적 메모리(316)는 데이터를 저장할 수 있으며, 몇몇 실시예들에서, 하나 이상의 프로그램들, 또는 실행 가능한 지시들의 세트를 저장할 수 있다. 도 3은 펌웨어(312)가 가상화 서버(301)의 물리적 메모리(316) 내에 저장되는 실시예를 예시한다. 물리적 메모리(316)에 저장된 프로그램들 또는 실행 가능한 지시들은 가상화 서버(301)의 하나 이상의 프로세서들(308)에 의해 실행될 수 있다.
가상화 서버(301)는 또한 하이퍼바이저(302)를 포함할 수 있다. 몇몇 실시예들에서, 하이퍼바이저(302)는 임의의 수의 가상 기계들(332)을 생성하고 관리하기 위해 가상화 서버(301) 상에서 프로세서들(308)에 의해 실행된 프로그램일 수 있다. 하이퍼바이저(302)는 가상 기계 모니터, 또는 플랫폼 가상화 소프트웨어로서 불리울 수 있다. 몇몇 실시예들에서, 하이퍼바이저(302)는 컴퓨팅 기계 상에서 실행하는 가상 기계들을 모니터링하는 하드웨어 및 실행 가능한 지시들의 임의의 조합일 수 있다. 하이퍼바이저(302)는 유형 2 하이퍼바이저일 수 있으며, 여기에서 운영 체제(314) 내에서 실행하는 하이퍼바이저는 가상화 서버(301) 상에서 실행한다. 가상 기계들은 그 후 하이퍼바이저 위의 레벨에서 실행한다. 몇몇 실시예들에서, 유형 2 하이퍼바이저는 유형 2 하이퍼바이저가 사용자의 운영 체제와 상호 작용하도록 사용자의 운영 체제의 콘텍스트 내에서 실행한다. 다른 실시예들에서, 가상화 환경에서 하나 이상의 가상화 서버들(301)은 대신에 유형 1 하이퍼바이저(도시되지 않음)를 포함할 수 있다. 유형 1 하이퍼바이저는 하드웨어 계층(310) 내에서 하드웨어 및 리소스들을 직접 액세스함으로써 가상화 서버(301) 상에서 실행할 수 있다. 즉, 유형 2 하이퍼바이저(302)는 도시된 바와 같이, 호스트 운영 체제(314)를 통해 시스템 리소스들을 액세스하지만, 유형 1 하이퍼바이저는 호스트 운영 체제(314) 없이 모든 시스템 리소스들을 직접 액세스할 수 있다. 유형 1 하이퍼바이저는 가상화 서버(301)의 하나 이상의 물리적 프로세서들(308) 상에서 직접 실행할 수 있으며, 물리적 메모리(316)에 저장된 프로그램 데이터를 포함할 수 있다.
하이퍼바이저(302)는, 몇몇 실시예들에서, 시스템 리소스들로의 직접 액세스를 가진 운영 체제들(330) 또는 제어 프로그램들(320)을 시뮬레이션하는 임의의 방식으로 가상 기계들(332) 상에서 실행하는 운영 체제들(330) 또는 제어 프로그램들(320)로 가상 리소스들을 제공할 수 있다. 시스템 리소스들은, 이에 제한되지 않지만, 물리적 디바이스들(306), 물리적 디스크들(304), 물리적 프로세서들(308), 물리적 메모리(316) 및 가상화 서버(301) 하드웨어 계층(310)에 포함된 임의의 다른 구성요소를 포함할 수 있다. 하이퍼바이저(302)는 가상 하드웨어를 에뮬레이팅하고, 물리적 하드웨어를 분할하고, 물리적 하드웨어를 가상화하며, 및/또는 컴퓨팅 환경들로의 액세스를 제공하는 가상 기계들을 실행하기 위해 사용될 수 있다. 계속해서 다른 실시예들에서, 하이퍼바이저(302)는 가상화 서버(301) 상에서 실행하는 가상 기계(332)에 대한 프로세서 스케줄링 및 메모리 분할을 제어한다. 하이퍼바이저(302)는 캘리포니아, 팔로 알토의 VMWare, Inc.에 의해 제조된 것들; XEN 하이퍼바이저, 개발이 개방 소스 Xen.org 커뮤니티에 의해 감독되는 개방 소스 제품; Microsoft에 의해 제공된 HyperV, VirtualServer 또는 가상 PC 하이퍼바이저들, 또는 기타를 포함할 수 있다. 몇몇 실시예들에서, 가상화 서버(301)는 게스트 운영 체제들이 실행할 수 있는 가상 기계 플랫폼을 생성하는 하이퍼바이저(302)를 실행한다. 이들 실시예들에서, 가상화 서버(301)는 호스트 서버로서 불리울 수 있다. 이러한 가상화 서버의 예는 플로리다, 포트 로더데일의 Citrix Systems, InC.에 의해 제공된 XEN SERVER이다.
하이퍼바이저(302)는 게스트 운영 체제들(330)이 실행하는 하나 이상의 가상 기계들(332B 내지 332C)(일반적으로 332)을 생성할 수 있다. 몇몇 실시예들에서, 하이퍼바이저(302)는 가상 기계(332)를 생성하기 위해 가상 기계 이미지를 로딩할 수 있다. 다른 실시예들에서, 하이퍼바이저(302)는 가상 기계(332) 내에서 게스트 운영 체제(330)를 실행할 수 있다. 계속해서 다른 실시예들에서, 가상 기계(332)는 게스트 운영 체제(330)를 실행할 수 있다.
가상 기계들(332)을 생성하는 것 외에, 하이퍼바이저(302)는 적어도 하나의 가상 기계(332)의 실행을 제어할 수 있다. 다른 실시예들에서, 하이퍼바이저(302)는 가상화 서버(301)에 의해 제공된 적어도 하나의 하드웨어 리소스(예로서, 하드웨어 계층(310) 내에서 이용 가능한 임의의 하드웨어 리소스)의 추상화를 적어도 하나의 가상 기계(332)에 제공할 수 있다. 다른 실시예들에서, 하이퍼바이저(302)는 가상 기계들(332)이 가상화 서버(301)에서 이용 가능한 물리적 프로세서들(308)을 액세스하는 방식을 제어할 수 있다. 물리적 프로세서들(308)로의 액세스를 제어하는 것은 가상 기계(332)가 프로세서(308)로의 액세스를 가져야 하는지, 및 물리적 프로세서 능력들이 어떻게 가상 기계(332)에 제공되는지를 결정하는 것을 포함할 수 있다.
도 3에 도시된 바와 같이, 가상화 서버(301)는 하나 이상의 가상 기계들(332)을 호스팅하거나 또는 실행할 수 있다. 가상 기계(332)는 프로세서(308)에 의해 실행될 때, 가상 기계(332)가 프로그램들을 실행하고 물리적 컴퓨팅 디바이스처럼 프로세싱하도록 물리적 컴퓨터의 동작을 모방하는 실행 가능한 지시들의 세트이다. 도 3은 가상화 서버(301)가 3개의 가상 기계들(332)을 호스팅하는 실시예를 예시하지만, 다른 실시예들에서, 가상화 서버(301)는 임의의 수의 가상 기계들(332)을 호스팅할 수 있다. 하이퍼바이저(302)는, 몇몇 실시예들에서, 물리적 하드웨어, 메모리, 프로세서 및 상기 가상 기계(332)에 이용 가능한 다른 시스템 리소스들의 고유 가상 뷰를 각각의 가상 기계(332)에 제공한다. 몇몇 실시예들에서, 고유 가상 뷰는 가상 기계 허가들, 하나 이상의 가상 기계 식별자들로의 정책 엔진의 적용, 가상 기계를 액세스하는 사용자, 가상 기계 상에서 실행하는 애플리케이션들, 가상 기계에 의해 액세스된 네트워크들, 또는 임의의 다른 원하는 기준들 중 하나 이상에 기초할 수 있다. 예를 들면, 하이퍼바이저(302)는 하나 이상의 비보안 가상 기계들(332) 및 하나 이상의 보안 가상 기계들(332)을 생성할 수 있다. 비보안 가상 기계들(332)은 보안 가상 기계들(332)이 액세스하도록 허용될 수 있는 리소스들, 하드웨어, 메모리 위치들, 및 프로그램들을 액세스하는 것이 방지될 수 있다. 다른 실시예들에서, 하이퍼바이저(302)는 가상 기계들(332)에 이용 가능한 물리적 하드웨어, 메모리, 프로세서 및 다른 시스템 리소스들의 대체로 유사한 가상 뷰를 각각의 가상 기계(332)에 제공할 수 있다.
각각의 가상 기계(332)는 가상 디스크(326A 내지 326C)(일반적으로 326) 및 가상 프로세서(328A 내지 328C)(일반적으로 328)를 포함할 수 있다. 가상 디스크(326)는, 몇몇 실시예들에서, 가상화 서버(301)의 하나 이상의 물리적 디스크들(304), 또는 가상화 서버(301)의 하나 이상의 물리적 디스크들(304)의 일 부분의 가상화 뷰이다. 물리적 디스크들(304)의 가상화 뷰는 하이퍼바이저(302)에 의해 생성되고, 제공되며 관리될 수 있다. 몇몇 실시예들에서, 하이퍼바이저(302)는 물리적 디스크들(304)의 고유 뷰를 각각의 가상 기계(332)에 제공한다. 따라서, 이들 실시예들에서, 각각의 가상 기계(332)에 포함된 특정한 가상 디스크(326)는 다른 가상 디스크들(326)과 비교할 때 고유할 수 있다.
가상 프로세서(328)는 가상화 서버(301)의 하나 이상의 물리적 프로세서들(308)의 가상화 뷰일 수 있다. 몇몇 실시예들에서, 물리적 프로세서들(308)의 가상화 뷰는 하이퍼바이저(302)에 의해 생성되고, 제공되며 관리될 수 있다. 몇몇 실시예들에서, 가상 프로세서(328)는 실질적으로 적어도 하나의 물리적 프로세서(308)의 동일한 특성들 모두를 갖는다. 다른 실시예들에서, 가상 프로세서(308)는 가상 프로세서(328)의 특성들 중 적어도 일부가 대응하는 물리적 프로세서(308)의 특성들과 상이하도록 물리적 프로세서들(308)의 수정된 뷰를 제공한다.
도 4를 추가로 참조하면, 본 출원에서 설명된 몇몇 양상들은 클라우드-기반 환경에서 구현될 수 있다. 도 4는 클라우드 컴퓨팅 환경(또는 클라우드 시스템)(400)의 예를 예시한다. 도 4에 보여지는 바와 같이, 클라이언트 컴퓨터들(411 내지 414)은 클라우드 시스템의 컴퓨팅 리소스들(예로서, 호스트 서버들(403), 저장 리소스들(404), 및 네트워크 리소스들(405))을 액세스하기 위해 클라우드 관리 서버(410)와 통신할 수 있다.
관리 서버(410)는 하나 이상의 물리적 서버들 상에서 구현될 수 있다. 관리 서버(410)는, 예를 들면, 다른 것들 중에서, CLOUDSTACK, 또는 OPENSTACK을 구동할 수 있다. 관리 서버(410)는, 클라우드 하드웨어 및 소프트웨어 리소스들, 예를 들면, 호스트 컴퓨터들(403), 데이터 저장 디바이스들(404), 및 네트워킹 디바이스들(405)을 포함한, 다양한 컴퓨팅 리소스들을 관리할 수 있다. 클라우드 하드웨어 및 소프트웨어 리소스들은 사설 및/또는 공공 구성요소들을 포함할 수 있다. 예를 들면, 클라우드는 하나 이상의 특정한 고객들 또는 클라이언트 컴퓨터들(411 내지 414)에 의해 및/또는 사설 네트워크를 통해 사용될 사설 클라우드로서 구성될 수 있다. 다른 실시예들에서, 공공 클라우드들 또는 하이브리드 공공-사설 클라우드들은 개방 또는 하이브리드 네트워크들을 통해 다른 고객들에 의해 사용될 수 있다.
관리 서버(410)는 클라우드 조작자들 및 클라우드 고객들이 클라우드 시스템과 상호 작용할 수 있는 사용자 인터페이스들을 제공하도록 구성될 수 있다. 예를 들면, 관리 서버(410)는 클라우드 조작자들이 클라우드 리소스들을 관리하고, 가상화 층을 구성하고, 고객 계정들을 관리하며, 다른 클라우드 관리 태스크들을 수행하도록 허용하기 위해 사용자 인터페이스들을 애플리케이션 프로그래밍 인터페이스들(API들)의 세트 및/또는 하나 이상의 클라우드 조작자 콘솔 애플리케이션들(예로서, 웹-기반 독립형 애플리케이션들)에 제공할 수 있다. 관리 서버(410)는 또한 클라이언트 컴퓨터들(411 내지 414)을 통해 최종 사용자들로부터 클라우드 컴퓨팅 요청들, 예를 들면, 클라우드 내에서 가상 기계들을 생성하고, 수정하거나, 또는 파괴하기 위한 요청을 수신하도록 구성된 사용자 인터페이스들을 가진 API들의 세트 및/또는 하나 이상의 고객 콘솔 애플리케이션들을 포함할 수 있다. 클라이언트 컴퓨터들(411 내지 414)은 인터넷 또는 다른 통신 네트워크를 통해 관리 서버(410)에 연결할 수 있으며, 관리 서버(410)에 의해 관리된 컴퓨팅 리소스들 중 하나 이상으로의 액세스를 요청할 수 있다. 클라이언트 요청들에 응답하여, 관리 서버(410)는 클라이언트 요청들에 기초하여 클라우드 시스템의 하드웨어 계층에서 물리적 리소스들을 선택하고 프로비저닝하도록 구성된 리소스 관리기를 포함할 수 있다. 예를 들면, 관리 서버(410) 및 클라우드 시스템의 부가적인 구성요소들은 네트워크(예로서, 인터넷)를 통해, 클라이언트 컴퓨터들(411 내지 414)에서 고객들에 대한 가상 기계들 및 그것들의 동작 환경들(예로서, 하이퍼바이저들, 저장 리소스들, 네트워크 요소들에 의해 공급된 서비스들 등)을 프로비저닝하고, 생성하며 관리하도록 구성되어, 계산 리소스들, 데이터 저장 서비스들, 네트워킹 능력들, 및 컴퓨터 플랫폼 및 애플리케이션 지원을 고객들에게 제공할 수 있다. 클라우드 시스템들은 또한 보안 시스템들, 개발 환경들, 사용자 인터페이스들 등을 포함한, 다양한 특정 서비스들을 제공하도록 구성될 수 있다.
특정한 클라이언트들(411 내지 414)은 예를 들면, 동일한 최종 사용자, 또는 동일한 회사 또는 조직과 제휴된 상이한 사용자들을 대신하여, 가상 기계들을 생성하는 상이한 클라이언트 컴퓨터들에 관련될 수 있다. 다른 예들에서, 상이한 회사들 또는 조직들과 제휴된 사용자들과 같은, 특정한 클라이언트들(411 내지 414)은 관련되지 않을 수 있다. 관련되지 않은 클라이언트들을 위해, 임의의 하나의 사용자의 가상 기계들 또는 저장 장치에 대한 정보는 다른 사용자들로부터 은닉될 수 있다.
이제 클라우드 컴퓨팅 환경의 물리적 하드웨어 계층을 참조하면, 가용성 구역들(401 내지 402)(또는 구역들)은 물리적 컴퓨팅 리소스들의 병치 세트를 나타낼 수 있다. 구역들은 컴퓨팅 리소스들의 전체 클라우드에서 다른 구역들로부터 지리적으로 분리될 수 있다. 예를 들면, 구역(401)은 캘리포니아에 위치된 제 1 클라우드 데이터센터일 수 있으며, 구역(402)은 플로리다에 위치된 제 2 클라우드 데이터센터일 수 있다. 관리 서버(410)는 가용성 구역들 중 하나에, 또는 별개의 위치에 위치될 수 있다. 각각의 구역은, 게이트웨이를 통해, 관리 서버(410)와 같은, 구역의 바깥쪽에 있는 디바이스들과 인터페이스하는 내부 네트워크를 포함할 수 있다. 클라우드의 최종 사용자들(예로서, 클라이언트들(411 내지 414))은 구역들 사이에서의 구별들을 인식하거나 또는 인식하지 않을 수 있다. 예를 들면, 최종 사용자는 특정된 양의 메모리, 프로세싱 전력, 및 네트워크 능력들을 가진 가상 기계의 생성을 요청할 수 있다. 관리 서버(410)는 사용자의 요청에 응답할 수 있으며 가상 기계가 구역(401) 또는 구역(402)으로부터의 리소스들을 사용하여 생성되었는지를 아는 사용자 없이 가상 기계를 생성하기 위해 리소스들을 할당할 수 있다. 다른 예들에서, 클라우드 시스템은 최종 사용자들로 하여금 가상 기계들(또는 다른 클라우드 리소스들)이 특정 구역에서 또는 구역 내에서의 특정 리소스들(403 내지 405) 상에 할당하도록 요청하는 것을 허용할 수 있다.
이 예에서, 각각의 구역(401 내지 402)은 다양한 물리적 하드웨어 구성요소들(또는 컴퓨팅 리소스들)(403 내지 405), 예를 들면, 물리적 호스팅 리소스들(또는 프로세싱 리소스들), 물리적 네트워크 리소스들, 물리적 저장 리소스들, 스위치들, 및 클라우드 컴퓨팅 서비스들을 고객들에게 제공하기 위해 사용될 수 있는 부가적인 하드웨어 리소스들의 배열을 포함할 수 있다. 클라우드 구역(401 내지 402)에서 물리적 호스팅 리소스들은, 상기 설명된 가상화 서버들(301)과 같은, 하나 이상의 컴퓨터 서버들(403)을 포함할 수 있으며, 이것은 가상 기계 인스턴스들을 생성하고 호스팅하도록 구성될 수 있다. 클라우드 구역(401 또는 402)에서 물리적 네트워크 리소스들은 방화벽들, 네트워크 어드레스 변환기들, 로드 밸런서들, 가상 사설 네트워크(VPN) 게이트웨이들, 동적 호스트 구성 프로토콜(DHCP) 라우터들 등과 같은, 네트워크 서비스를 클라우드 고객들에게 제공하도록 구성된 하드웨어 및/또는 소프트웨어를 포함한 하나 이상의 네트워크 요소들(405)(예로서, 네트워크 서비스 제공자들)을 포함할 수 있다. 클라우드 구역(401 내지 402)에서 저장 리소스들은 저장 디스크들(예로서, 고체 상태 드라이브들(SSD들), 자기 하드 디스크들 등) 및 다른 저장 디바이스들을 포함할 수 있다.
도 4에 도시된 예시적인 클라우드 컴퓨팅 환경은 또한 가상 기계들을 생성 및 관리하고 클라우드에서의 물리적 리소스들을 사용하여 다른 서비스들을 고객들에게 제공하도록 구성된 부가적인 하드웨어 및/또는 소프트웨어 리소스들을 가진 가상화 층(예로서, 도 1 내지 도 3에 도시된 바와 같이)을 포함할 수 있다. 가상화 층은, 네트워크 가상화들, 저장 장치 가상화들 등을 제공하기 위해 다른 구성요소들과 함께, 도 3에서 상기 설명된 바와 같이, 하이퍼바이저들을 포함할 수 있다. 가상화 층은 물리적 리소스 층으로부터 분리된 층일 수 있거나, 또는 물리적 리소스 층과 동일한 하드웨어 및/또는 소프트웨어 리소스들 중 일부 또는 모두를 공유할 수 있다. 예를 들면, 가상화 층은 물리적 컴퓨팅 리소스들을 갖고 가상화 서버들(403)의 각각에 설치된 하이퍼바이저를 포함할 수 있다. 알려진 클라우드 시스템들, 예를 들면, WINDOWS AZURE(워싱턴 레드몬드의 Microsoft Corporation), AMAZON EC2(워싱턴, 시애틀의 Amazon.com, Inc.), IBM BLUE CLOUD(뉴욕, 아몽크의 IBM Corporation), 또는 기타가 대안적으로 사용될 수 있다.
기업 이동성 관리 아키텍처
도 5는 BYOD 환경에서의 사용을 위한 기업 이동성 기술 아키텍처(500)를 나타낸다. 아키텍처는 모바일 디바이스(502)의 사용자로 하여금 모바일 디바이스(502)로부터 기업 또는 개인 리소스들 액세스하며 개인적 사용을 위해 모바일 디바이스(502)를 사용할 수 있게 한다. 사용자는 사용자에 의해 구매된 모바일 디바이스(502) 또는 기업에 의해 사용자에게 제공되는 모바일 디바이스(502)를 사용하여 이러한 기업 리소스들(504) 또는 기업 서비스들(508)을 액세스할 수 있다. 사용자는 단지 비즈니스 사용을 위해 또는 비즈니스 및 개인적인 사용을 위해 모바일 디바이스(502)를 이용할 수 있다. 모바일 디바이스는 iOS 운영 체제, 안드로이드 운영 체제 등을 구동할 수 있다. 기업은 모바일 디바이스(504)를 관리하기 위한 정책들을 구현하는 걸 택할 수 있다. 정책들은 모바일 디바이스가 식별되고, 보안되거나 또는 보안 검증되며, 기업 리소스들로의 선택적 또는 완전한 액세스를 제공받을 수 있도록 하는 방식으로 방화벽 또는 게이트웨이를 통해 이식(implant)될 수 있다. 정책들은 모바일 디바이스 관리 정책들, 모바일 애플리케이션 관리 정책들, 이동 데이터 관리 정책들, 또는 모바일 디바이스, 애플리케이션, 및 데이터 관리 정책들의 몇몇 조합일 수 있다. 모바일 디바이스 관리 정책들의 애플리케이션을 통해 관리되는 모바일 디바이스(504)는 등록 디바이스로서 불리울 수 있다.
몇몇 실시예들에서, 모바일 디바이스의 운영 체제는 관리형 파티션(510) 및 비관리형 파티션(512)으로 분리될 수 있다. 관리형 파티션(510)은 관리형 파티션 상에서 운용하는 애플리케이션들 및 그것에 저장된 데이터를 안전하게 하기 위해 그것에 적용된 정책들을 가질 수 있다. 관리형 파티션 상에서 운용하는 애플리케이션들은 보안 애플리케이션들일 수 있다. 다른 실시예들에서, 모든 애플리케이션들은 애플리케이션으로부터 개별적으로 수신되며, 상기 애플리케이션이 디바이스 상에서 실행 중일 때 모바일 디바이스 관리 시스템에 의해 시행되는 하나 이상의 보안 파라미터들, 피처들, 리소스 제한들, 및/또는 다른 액세스 제어들을 정의하는 하나 이상의 정책 파일들의 세트에 따라 실행할 수 있다. 그것들 각각의 정책 파일(들)에 따라 동작함으로써, 각각의 애플리케이션은 하나 이상의 다른 애플리케이션들 및/또는 리소스들과의 통신들로부터 허용되거나 또는 제한될 수 있으며, 그에 의해 가상 파티션을 생성한다. 따라서, 여기에서 사용된 바와 같이, 파티션은 메모리의 물리적으로 분할된 부분(물리적 파티션), 메모리의 논리적으로 분할된 부분(논리 파티션), 및/또는 본 출원에서 설명된 바와 같이 다수의 앱들에 걸쳐 하나 이상의 정책들 및/또는 정책 파일들의 시행의 결과로서 생성된 가상 파티션(가상 파티션)을 나타낼 수 있다. 달리 서술하면, 관리형 앱들에 대한 정책들을 시행함으로써, 이들 앱들은 다른 관리형 앱들 및 신뢰형 기업 리소스들과만 통신할 수 있도록 제한될 수 있으며, 그에 의해 비관리형 앱들 및 디바이스들에 의해 액세스 가능하지 않은 가상 파티션을 생성한다.
보안 애플리케이션들은 이메일 애플리케이션들, 웹 브라우징 애플리케이션들, 서비스로서의 소프트웨어(SaaS) 액세스 애플리케이션들, 윈도우즈 애플리케이션 액세스 애플리케이션들 등일 수 있다. 보안 애플리케이션들은 보안 네이티브 애플리케이션들(514), 보안 애플리케이션 론처(518)에 의해 실행된 보안 원격 애플리케이션들(522), 보안 애플리케이션 론처(518)에 의해 실행된 가상화 애플리케이션들(526) 등일 수 있다. 보안 네이티브 애플리케이션들(514)은 보안 애플리케이션 래퍼(wrapper)(520)에 의해 래핑될 수 있다. 보안 애플리케이션 래퍼(520)는 보안 네이티브 애플리케이션이 디바이스 상에서 실행될 때 모바일 디바이스(502) 상에서 실행되는 통합 정책들을 포함할 수 있다. 보안 애플리케이션 래퍼(520)는 보안 네이티브 애플리케이션(514)이 보안 네이티브 애플리케이션(514)의 실행 시 요청된 태스크를 완료하도록 요구할 수 있는 기업에서 호스팅된 리소스들에 대해 모바일 디바이스(502) 상에서 운용하는 보안 네이티브 애플리케이션(514)을 나타내는 메타-데이터를 포함할 수 있다. 보안 애플리케이션 론처(518)에 의해 실행된 보안 원격 애플리케이션들(522)은 보안 애플리케이션 론처 애플리케이션(518) 내에서 실행될 수 있다. 보안 애플리케이션 론처(518)에 의해 실행된 가상화 애플리케이션들(526)은 모바일 디바이스(502) 상에서, 기업 리소스들(504) 등에서 리소스들을 이용할 수 있다. 보안 애플리케이션 론처(518)에 의해 실행된 가상화 애플리케이션들(526)에 의해 모바일 디바이스(502) 상에서 사용된 리소스들은 사용자 상호 작용 리소스들, 프로세싱 리소스들 등을 포함할 수 있다. 사용자 상호 작용 리소스들은 키보드 입력, 마우스 입력, 카메라 입력, 촉각 입력, 오디오 입력, 시각 입력, 제스처 입력 등을 수집하고 송신하기 위해 사용될 수 있다. 프로세싱 리소스들은 사용자 인터페이스를 제공하고, 기업 리소스들(504)로부터 수신된 데이터를 프로세싱하는 등을 위해 사용될 수 있다. 보안 애플리케이션 론처(518)에 의해 실행된 가상화 애플리케이션들(526)에 의해 기업 리소스들(504)에서 사용된 리소스들은 사용자 인터페이스 생성 리소스들, 프로세싱 리소스들 등을 포함할 수 있다. 사용자 인터페이스 생성 리소스들은 사용자 인터페이스를 모으고, 사용자 인터페이스를 수정하고, 사용자 인터페이스를 리프레싱하는 등을 위해 사용될 수 있다. 프로세싱 리소스들은 정보를 생성하고, 정보를 판독하고, 정보를 업데이트하고, 정보를 삭제하는 등을 하기 위해 사용될 수 있다. 예를 들면, 가상화 애플리케이션은 그래픽 사용자 인터페이스(GUI)와 연관된 사용자 상호 작용들을 기록하며 그것들을 서버 애플리케이션으로 전달할 수 있고 여기에서 서버 애플리케이션은 서버상에서 동작하는 애플리케이션으로의 입력으로서 사용자 상호 작용 데이터를 사용할 수 있다. 이러한 배열에서, 기업은 서버 측 상에서의 애플리케이션뿐만 아니라 애플리케이션과 연관된 데이터, 파일들 등을 유지하기 위해 택할 수 있다. 기업이 모바일 디바이스 상에서의 배치를 위해 그것들을 안전하게 함으로써 여기에서의 원리들에 따라 몇몇 애플리케이션들을 "이동화(mobilize)"시키는 것을 택할 수 있지만, 이러한 배열은 또한 특정한 애플리케이션들을 위해 선택될 수 있다. 예를 들면, 몇몇 애플리케이션들은 모바일 디바이스 상에서의 사용을 위해 안전하게 될 수 있지만, 다른 것들은 모바일 디바이스 상에서의 배치를 위해 준비되거나 또는 적절하지 않을 수 있으며 따라서 기업은 가상화 기술들을 통해 준비되지 않은 애플리케이션들로의 모바일 사용자 액세스를 제공하도록 택할 수 있다. 또 다른 예로서, 기업은 크고 복잡한 데이터 세트들(예로서, 자료 리소스 플래닝 애플리케이션들)을 가진 크고 복잡한 애플리케이션들을 가질 수 있으며 여기에서 모바일 디바이스를 위한 애플리케이션을 맞춤화하는 것인 매우 어렵거나 또는 그 외 바람직하지 않을 수 있으며, 따라서 기업은 가상화 기술들을 통해 애플리케이션으로의 액세스를 제공하도록 택할 수 있다. 또 다른 예로서, 기업은 기업에 의해 심지어 안전한 모바일 환경에 대해 너무 민감한 것으로 간주될 수 있는 고도 보안 데이터(예로서, 인적 자원 데이터, 고객 데이터, 엔지니어링 데이터)를 유지하는 애플리케이션을 가질 수 있으며 따라서 기업은 이러한 애플리케이션들 및 데이터로의 모바일 액세스를 허용하기 위해 가상화 기술들을 사용하는 것을 택할 수 있다. 기업은 서버 측 상에서 보다 적절하게 동작되는 것으로 간주되는 애플리케이션들로의 액세스를 허용하기 위해 모바일 디바이스 상에서 완전 보안 및 완전 기능 애플리케이션들뿐만 아니라 가상화 애플리케이션을 제공하는 것을 택할 수 있다. 실시예에서, 가상화 애플리케이션은 보안 저장 위치들 중 하나에서 이동 전화상에 몇몇 데이터, 파일들 등을 저장할 수 있다. 기업은, 예를 들면, 다른 정보를 허용하지 않는 동안 특정한 정보가 전화상에 저장되도록 허용하는 것을 택할 수 있다.
본 출원에서 설명된 바와 같이, 가상화 애플리케이션과 관련되어, 모바일 디바이스는 GUI들을 제공하며 그 후 GUI와의 사용자 상호 작용들을 기록하도록 설계되는 가상화 애플리케이션을 가질 수 있다. 애플리케이션은 애플리케이션과의 사용자 상호 작용들로서 서버 측 애플리케이션에 의해 사용될 사용자 상호 작용들을 서버 측으로 전달할 수 있다. 이에 응답하여, 서버 측 상에서의 애플리케이션은 모바일 디바이스로 다시 새로운 GUI를 송신할 수 있다. 예를 들면, 새로운 GUI는 정적 페이지, 동적 페이지, 애니메이션 등일 수 있으며, 그에 의해 원격으로 위치된 리소스들로의 액세스를 제공한다.
보안 애플리케이션들은 모바일 디바이스의 관리형 파티션(510)에서 보안 데이터 컨테이너(528)에 저장된 데이터를 액세스할 수 있다. 보안 데이터 컨테이너에서 안전하게 된 데이터는 보안 래핑 애플리케이션들(514), 보안 애플리케이션 론처(522)에 의해 실행된 애플리케이션들, 보안 애플리케이션 론처(522)에 의해 실행된 가상화 애플리케이션들(526) 등에 의해 액세스될 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 파일들, 데이터베이스들 등을 포함할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 특정 보안 애플리케이션(530)에 제한되고, 보안 애플리케이션들(532) 간에 공유된 데이터를 포함할 수 있다. 보안 애플리케이션에 제한된 데이터는 보안 일반 데이터(534) 및 고도 보안 데이터(538)를 포함할 수 있다. 보안 일반 데이터는 개선된 암호화 표준(AES) 128-비트 암호화 등과 같은 강한 형태의 암호화를 사용할 수 있지만, 고도 보안 데이터(538)는 AES 256-비트 암호화와 같은 매우 강한 형태의 암호화를 사용할 수 있다. 보안 데이터 컨테이너(528)에 저장된 데이터는 디바이스 관리기(524)로부터의 명령의 수신 시 디바이스로부터 삭제될 수 있다. 보안 애플리케이션들은 이중-모드 옵션(540)을 가질 수 있다. 이중 모드 옵션(540)은 비보안 또는 비관리 모드에서 보안 애플리케이션을 동작시키기 위한 옵션을 사용자에게 제공할 수 있다. 비보안 또는 비관리 모드에서, 보안 애플리케이션들은 모바일 디바이스(502)의 비관리형 파티션(512) 상에서 비보안 데이터 컨테이너(542)에 저장된 데이터를 액세스할 수 있다. 비보안 데이터 컨테이너에 저장된 데이터는 개인 데이터(544)일 수 있다. 비보안 데이터 컨테이너(542)에 저장된 데이터는 또한 모바일 디바이스(502)의 비관리형 파티션(512) 상에서 운용하는 비보안 애플리케이션들(548)에 의해 액세스될 수 있다. 비보안 데이터 컨테이너(542)에 저장된 데이터는 보안 데이터 컨테이너(528)에 저장된 데이터가 모바일 디바이스(502)로부터 삭제될 때 모바일 디바이스(502) 상에 남아있을 수 있다. 기업은 사용자(개인 데이터)에 의해 소유되고, 허가되거나 또는 제어된 개인 데이터, 파일들, 및/또는 애플리케이션들을 남기거나 또는 그 외 보존하는 동안 기업(기업 데이터)에 의해 소유되고, 허가되거나 또는 제어된 선택된 또는 모든 데이터, 파일들, 및/또는 애플리케이션들을 모바일 디바이스로부터 삭제하기를 원할 수 있다. 이러한 동작은 선택적 와이프(wipe)로서 불리울 수 있다. 본 출원에서 설명된 양상들에 따라 배열된 기업 및 개인 데이터를 갖고, 기업은 선택적 와이프를 수행할 수 있다.
모바일 디바이스(502)는 기업에서 기업 리소스들(504) 및 기업 서비스들(508)에, 공공 인터넷(548) 등에 연결할 수 있다. 모바일 디바이스는 가상 사설 네트워크 연결들을 통해 기업 리소스들(504) 및 기업 서비스들(508)에 연결할 수 있다. 또한 마이크로VPN 또는 애플리케이션-특정 VPN으로 불리우는, 가상 사설 네트워크 연결들은 특정한 애플리케이션들(예로서, 마이크로VPN들(550)에 의해 예시된 바와 같이), 특정한 디바이스들, 모바일 디바이스 상에서의 특정한 보안 영역들(예로서, O/S VPN(552)에 의해 예시된 바와 같이) 등에 특정적일 수 있다. 예를 들면, 전화의 보안 영역에서 래핑 애플리케이션들의 각각은 가능하게는 사용자 또는 디바이스 속성 정보와 함께, VPN으로의 액세스가 애플리케이션과 연관된 속성들에 기초하여 승인되도록 애플리케이션 특정 VPN을 통해 기업 리소스들을 액세스할 수 있다. 가상 사설 네트워크 연결들은 마이크로소프트 익스체인지 트래픽, 마이크로소프트 액티브 디렉토리 트래픽, 하이퍼텍스트 전송 프로토콜(HTTP) 트래픽, 하이퍼텍스트 전송 프로토콜 보안(HTTPS) 트래픽, 애플리케이션 관리 트래픽 등을 운반할 수 있다. 가상 사설 네트워크 연결들은 싱글-사인-온 인증 프로세스들(554)을 지원하고 이를 가능하게 할 수 있다. 싱글-사인-온 프로세스들은 사용자가 단일 세트의 인증 크리덴셜들을 제공하도록 허용할 수 있으며, 이것은 그 후 인증 서비스(558)에 의해 검증된다. 인증 서비스(558)는 그 후, 각각의 개개의 기업 리소스(504)에 인증 크리덴셜들을 제공하도록 사용자에게 요구하지 않고, 다수의 기업 리소스들(504)로의 액세스를 사용자에게 승인할 수 있다.
가상 사설 네트워크 연결들은 액세스 게이트웨이(560)에 의해 수립되고 관리될 수 있다. 액세스 게이트웨이(560)는 모바일 디바이스(502)로의 기업 리소스들(504)의 전달을 관리하고, 가속화하며, 개선하는 성능 강화 피처들을 포함할 수 있다. 액세스 게이트웨이는 또한 모바일 디바이스(502)로부터 공공 인터넷(548)으로 트래픽을 재-라우팅할 수 있어서, 모바일 디바이스(502)가 공공 인터넷(548) 상에서 운용하는 공개적으로 이용 가능한 비보호 애플리케이션들을 액세스할 수 있게 한다. 모바일 디바이스는 이송 네트워크(562)를 통해 액세스 게이트웨이에 연결할 수 있다. 이송 네트워크(562)는 하나 이상의 이송 프로토콜들을 사용할 수 있으며 유선 네트워크, 무선 네트워크, 클라우드 네트워크, 근거리 네트워크, 대도시 영역 네트워크, 광역 네트워크, 공공 네트워크, 사설 네트워크 등일 수 있다.
기업 리소스들(504)은 이메일 서버들, 파일 공유 서버들, SaaS 애플리케이션들, 웹 애플리케이션 서버들, 윈도우즈 애플리케이션 서버들 등을 포함할 수 있다. 이메일 서버들은 Exchange 서버들, Lotus Notes 서버들 등을 포함할 수 있다. 파일 공유 서버들은 ShareFile 서버들 등을 포함할 수 있다. SaaS 애플리케이션들은 Salesforce 등을 포함할 수 있다. 윈도우즈 애플리케이션 서버들은 로컬 윈도우즈 운영 체제 등 상에서 운용하도록 의도되는 애플리케이션들을 제공하기 위해 구축되는 임의의 애플리케이션 서버를 포함할 수 있다. 기업 리소스들(504)은 구내-기반 리소스들, 클라우드 기반 리소스들 등일 수 있다. 기업 리소스들(504)은 직접 또는 액세스 게이트웨이(560)를 통해 모바일 디바이스(502)에 의해 액세스될 수 있다. 기업 리소스들(504)은 이송 네트워크(562)를 통해 모바일 디바이스(502)에 의해 액세스될 수 있다. 이송 네트워크(562)는 유선 네트워크, 무선 네트워크, 클라우드 네트워크, 근거리 네트워크, 대도시 영역 네트워크, 광역 네트워크, 공공 네트워크, 사설 네트워크 등일 수 있다.
기업 서비스들(508)은 인증 서비스들(558), 위협 탐지 서비스들(564), 디바이스 관리기 서비스들(524), 파일 공유 서비스들(568), 정책 관리기 서비스들(570), 소셜 통합 서비스들(572), 애플리케이션 제어기 서비스들(574) 등을 포함할 수 있다. 인증 서비스들(558)은 사용자 인증 서비스들, 디바이스 인증 서비스들, 애플리케이션 인증 서비스들, 데이터 인증 서비스들 등을 포함할 수 있다. 인증 서비스들(558)은 인증서들을 사용할 수 있다. 인증서들은, 기업 리소스들(504) 등에 의해, 모바일 디바이스(502) 상에 저장될 수 있다. 모바일 디바이스(502) 상에 저장된 인증서들은 모바일 디바이스 상에서 암호화 위치에 저장될 수 있고, 인증서는 인증 시 사용을 위해 모바일 디바이스(502) 상에 일시적으로 저장될 수 있다. 위협 탐지 서비스들(564)은 침입 탐지 서비스들, 비허가 액세스 시도 탐지 서비스들 등을 포함할 수 있다. 비허가 액세스 시도 탐지 서비스들은 디바이스들, 애플리케이션들, 데이터 등을 액세스하려는 허가되지 않은 시도들을 포함할 수 있다. 디바이스 관리 서비스들(524)은 구성, 프로비저닝, 보안, 지원, 모니터링, 보고, 및 해체 서비스들을 포함할 수 있다. 파일 공유 서비스들(568)은 파일 관리 서비스들, 파일 저장 서비스들, 파일 협력 서비스들 등을 포함할 수 있다. 정책 관리기 서비스들(570)은 디바이스 정책 관리기 서비스들, 애플리케이션 정책 관리기 서비스들, 데이터 정책 관리기 서비스들 등을 포함할 수 있다. 소셜 통합 서비스들(572)은 연락처 통합 서비스들, 협력 서비스들, Facebook, Twitter, 및 LinkedIn과 같은 소셜 네트워크들과의 통합 등을 포함할 수 있다. 애플리케이션 제어기 서비스들(574)은 관리 서비스들, 프로비저닝 서비스들, 배치 서비스들, 할당 서비스들, 철회 서비스들, 래핑 서비스들 등을 포함할 수 있다.
기업 이동성 기술 아키텍처(500)는 애플리케이션 저장소(578)를 포함할 수 있다. 애플리케이션 저장소(578)는 비래핑 애플리케이션들(580), 사전-래핑 애플리케이션들(582) 등을 포함할 수 있다. 애플리케이션들은 애플리케이션 제어기(574)로부터 애플리케이션 저장소(578)에 실장될 수 있다. 애플리케이션 저장소(578)는 액세스 게이트웨이(560)를 통해, 공공 인터넷(548) 등을 통해 모바일 디바이스(502)에 의해 액세스될 수 있다. 애플리케이션 저장소는 직관적이며 사용하기 용이한 사용자 인터페이스를 제공받을 수 있다.
소프트웨어 개발 키트(584)는 본 설명에서 이전에 설명된 바와 같이 애플리케이션을 래핑함으로써 사용자에 의해 선택된 보안 애플리케이션들에 대한 능력을 사용자에게 제공할 수 있다. 소프트웨어 개발 키트(584)를 사용하여 래핑된 애플리케이션은 그 후 애플리케이션 제어기(574)를 사용하여 애플리케이션 저장소(578)에서 그것을 실장함으로써 모바일 디바이스(502)에 대해 이용 가능해질 수 있다.
기업 이동성 기술 아키텍처(500)는 관리 및 분석 능력을 포함할 수 있다. 관리 및 분석 능력은 리소스들이 어떻게 사용되는지, 얼마나 자주 리소스들이 사용되는지 등에 관련된 정보를 제공할 수 있다. 리소스들은 디바이스들, 애플리케이션들, 데이터 등을 포함할 수 있다. 리소스들이 어떻게 사용되는지는 어떤 디바이스들이 어떤 애플리케이션들을 다운로드하는지, 어떤 애플리케이션들이 어떤 데이터를 액세스하는지 등을 포함할 수 있다. 얼마나 자주 리소스들이 사용되는지는 얼마자 자주 애플리케이션이 다운로드되었는지, 얼마나 많이 특정 세트의 데이터가 애플리케이션에 의해 액세스되었는지 등을 포함할 수 있다.
도 6은 또 다른 예시적인 기업 이동성 관리 시스템(600)이다. 도 5를 참조하여 상기 설명된 이동성 관리 시스템(500)의 구성요소들 중 일부는 단순성을 위해 생략되었다. 도 6에 묘사된 시스템(600)의 아키텍처는 도 5에 대하여 상기 설명된 시스템(500)의 아키텍처에 대하여 많은 점들에서 유사하며 상기 언급되지 않은 부가적인 피처들을 포함할 수 있다.
이 경우에, 좌변은 클라이언트 에이전트(604)를 가진 등록된 모바일 디바이스(602)를 나타내며, 이것은 상기 우변 상에서 도시된 바와 같이, Exchange, Sharepoint, 공개-키 기반구조(PKI) 리소스들, Kerberos 리소스들, 인증서 발행 서비스와 같은, 다양한 기업 리소스들(608) 및 서비스들(609)을 액세스하기 위해 게이트웨이 서버(606)(액세스 게이트웨이 및 애플리케이션 제어기 기능을 포함하는)와 상호 작용한다. 구체적으로 도시되지 않지만, 모바일 디바이스(602)는 또한 애플리케이션의 선택 및 다운로딩을 위해 기업 애플리케이션 저장소(StoreFront)와 상호 작용할 수 있다.
클라이언트 에이전트(604)는 기업 데이터 센터에서 호스팅된 윈도우즈 앱들/데스크탑들에 대한 UI(사용자 인터페이스) 중재자로서 동작하며, 이것은 고화질 사용자 경험(HDX)/ICA 디스플레이 원격 프로토콜을 사용하여 액세스된다. 클라이언트 에이전트(604)는 또한, 네이티브 iOS 또는 안드로이드 애플리케이션들과 같은, 모바일 디바이스(602) 상에서의 네이티브 애플리케이션들의 설치 및 관리를 지원한다. 예를 들면, 상기 도면에 도시된 관리형 애플리케이션들(610)(메일, 브라우저, 래핑 애플리케이션)은 모두 디바이스 상에서 국소적으로 실행하는 네이티브 애플리케이션들이다. 이러한 아키텍처의 클라이언트 에이전트(604) 및 애플리케이션 관리 프레임워크는 연결성 및 SSO(싱글 사인 온)와 같은 정책 구동 관리 능력들 및 피처들을 기업 리소스들/서비스들(608)에 제공하도록 동작한다. 클라이언트 에이전트(604)는 기업, 보통 다른 게이트웨이 서버 구성요소들에 대한 SSO를 가진 액세스 게이트웨이(AG)로의 1차 사용자 인증을 핸들링한다. 클라이언트 에이전트(604)는 모바일 디바이스(602) 상에서 관리형 애플리케이션들(610)의 거동을 제어하기 위해 게이트웨이 서버(606)로부터 정책들을 획득한다.
네이티브 애플리케이션들(610) 및 클라이언트 에이전트(604) 사이에서의 보안 프로세스간 통신(IPC) 링크들(612)은 관리 채널을 나타내며, 이것은 클라이언트 에이전트가 각각의 애플리케이션을 "래핑하는(wrapping)" 애플리케이션 관리 프레임워크(614)에 의해 시행될 정책들을 공급하도록 허용한다. IPC 채널(612)은 또한 클라이언트 에이전트(604)가 기업 리소스들(608)로의 연결성 및 SSO를 가능하게 하는 크리덴셜 및 인증 정보를 공급하도록 허용한다. 최종적으로 IPC 채널(612)은 애플리케이션 관리 프레임워크(614)가 온라인 및 오프라인 인증과 같은, 클라이언트 에이전트(604)에 의해 구현된 사용자 인터페이스 기능들을 호출하도록 허용한다.
클라이언트 에이전트(604) 및 게이트웨이 서버(606) 사이에서의 통신들은 본질적으로 각각의 네이티브 관리형 애플리케이션(610)을 래핑하는 애플리케이션 관리 프레임워크(614)로부터 관리 채널의 확대이다. 애플리케이션 관리 프레임워크(614)는 클라이언트 에이전트(604)로부터 정책 정보를 요청하며, 이것은 결과적으로 게이트웨이 서버(606)로부터 그것을 요청한다. 애플리케이션 관리 프레임워크(614)는 인증을 요청하며, 클라이언트 에이전트(604)는 게이트웨이 서버(606)(또한 NetScaler 액세스 게이트웨이로 알려져 있는)의 게이트웨이 서비스 부분에 접속한다. 클라이언트 에이전트(604)는 또한 게이트웨이 서버(606) 상에서 지원 서비스들을 호출할 수 있으며, 이것은 이하에서 보다 완전하게 설명되는 바와 같이, 국소적 데이터 볼트(vault)들(616)에 대한 암호화 키들을 도출하기 위한 입력 자료를 생성하거나, 또는 PKI 보호 리소스들로의 직접 인증을 가능하게 할 수 있는 클라이언트 인증서들을 제공할 수 있다.
보다 상세하게, 애플리케이션 관리 프레임워크(614)는 각각의 관리형 애플리케이션(610)을 "래핑한다(wrap)". 이것은 명시적 구축 단계를 통해, 또는 구축-후 프로세싱 단계를 통해 통합될 수 있다. 애플리케이션 관리 프레임워크(614)는 보안 IPC 채널을 초기화하며 상기 애플리케이션에 대한 정책을 획득하기 위해 애플리케이션(610)의 제 1 론칭 시 클라이언트 에이전트(604)와 "쌍을 이룰 수 있다(pair)". 애플리케이션 관리 프레임워크(614)는, 어떻게 로컬 OS 서비스들이 사용될 수 있는지, 또는 어떻게 그것들이 애플리케이션(610)과 상호 작용할 수 있는지를 제한하는 봉쇄 정책들 중 일부 및 클라이언트 에이전트 로그인 종속성들과 같은, 국소적으로 적용하는 정책의 관련 부분들을 시행할 수 있다.
애플리케이션 관리 프레임워크(614)는 인증 및 내부 네트워크 액세스를 가능하게 하기 위해 보안 IPC 채널(612)을 통해 클라이언트 에이전트(604)에 의해 제공된 서비스들을 사용할 수 있다. 사설 및 공유 데이터 볼트들(616)(컨테이너들)에 대한 키 관리는 또한 관리형 애플리케이션들(610) 및 클라이언트 에이전트(604) 사이에서의 적절한 상호 작용들에 의해 관리될 수 있다. 볼트들(616)은 온라인 인증 후에만 이용 가능할 수 있거나, 또는 정책에 의해 허용된다면 오프라인 인증 후 이용 가능해질 수 있다. 볼트들(616)의 제 1 사용은 온라인 인증을 요구할 수 있으며, 오프라인 액세스는 온라인 인증이 다시 요구되기 전에 많아야 정책 리프레시 기간에 제한될 수 있다.
내부 리소스들로의 네트워크 액세스는 액세스 게이트웨이(606)를 통해 개개의 관리형 애플리케이션들(610)로부터 직접 발생할 수 있다. 애플리케이션 관리 프레임워크(614)는 각각의 애플리케이션(610)을 대신하여 네트워크 액세스를 조직할 책임이 있다. 클라이언트 에이전트(604)는 온라인 인증에 이어서 획득된 적절한 시간 제한 2차 크리덴셜들을 제공함으로써 이들 네트워크 연결들을 가능하게 할 수 있다. 역방향 웹 프록시 연결들 및 단-대-단 VPN-스타일 터널들(618)과 같은, 네트워크 연결의 다수의 모드들이 사용될 수 있다.
메일 및 브라우저 관리형 애플리케이션들(610)은 특별한 상태를 가지며 일반적으로 임의의 래핑 애플리케이션들에 이용 가능하지 않을 수 있는 시설들을 이용할 수 있다. 예를 들면, 메일 애플리케이션은 완전한 AG 로그온을 요구하지 않고 확장된 시간 기간에 걸쳐 그것이 Exchange를 액세스하는 것을 허용하는 특수 배경 네트워크 액세스 메커니즘을 사용할 수 있다. 브라우저 애플리케이션은 상이한 종류들의 데이터를 분리하기 위해 다수의 사설 데이터 볼트들을 사용할 수 있다.
이러한 아키텍처는 다양한 다른 보안 피처들의 통합을 지원한다. 예를 들면, 몇몇 경우들에서 게이트웨이 서버(606)(그것의 게이트웨이 서비스들을 포함한)는 활성 디렉토리(AD) 패스워드들을 검증하도록 요구하지 않을 수 있다. AD 패스워드가 몇몇 상황들에서 몇몇 사용자들에 대한 인증 인자로서 사용되는지는 기업의 재량에 맡겨질 수 있다. 상이한 인증 방법들이 사용자가 온라인 또는 오프라인인 경우(즉, 네트워크 연결되거나 또는 연결되지 않은) 사용될 수 있다.
스텝 업 인증은 게이트웨이 서버(606)가 강한 인증을 사용하여 보다 민감한 데이터로의 액세스를 갖도록 허용되는 관리형 네이티브 애플리케이션들(610)을 식별하며, 이것이 이전의 보다 약한 레벨의 로그인 후 재-인증이 사용자로부터 요청됨을 의미할지라도, 이들 애플리케이션들로의 액세스가 단지 적절한 인증을 수행한 후에만 허용됨을 보장할 수 있다.
이러한 솔루션의 또 다른 보안 피처는 모바일 디바이스(602) 상에서 데이터 볼트들(616)(컨테이너들)의 암호화이다. 볼트들(616)은 파일들, 데이터베이스들, 및 구성들을 포함한 모든 온-디바이스 데이터가 보호되도록 암호화될 수 있다. 온-라인 볼트들에 대해, 키들이 서버(게이트웨이 서버(606)) 상에 저장될 수 있으며, 오프-라인 볼트들에 대해, 키들의 로컬 사본이 사용자 패스워드 또는 생체 측정 검증에 의해 보호될 수 있다. 데이터가 보안 컨테이너(616)에서 디바이스(602) 상에 국소적으로 저장될 때, AES 256 암호화 알고리즘의 최소치가 이용되는 것이 바람직하다.
다른 보안 컨테이너 피처들이 또한 구현될 수 있다. 예를 들면, 로깅 피처가 포함될 수 있으며, 여기에서 애플리케이션(610) 안에서 일어나는 모든 보안 이벤트들은 로깅되며 백엔드로 보고된다. 애플리케이션(610)이 무단 조작을 검출하는 경우와 같은, 데이터 와이핑이 지원될 수 있고, 연관된 암호화 키들은 랜덤 데이터를 갖고 다시 쓰여질 수 있어서, 사용자 데이터가 파괴된다는 어떤 힌트도 파일 시스템에 남기지 않는다. 스크린샷 보호는 또 다른 피처이며, 여기에서 애플리케이션은 임의의 데이터가 스크린샷들에 저장되는 것을 방지할 수 있다. 예를 들면, 키 윈도우의 은닉 속성은 YES로 설정될 수 있다. 이것은 스크린상에 현재 디스플레이되는 콘텐트가 무엇이든지 은닉되게 할 수 있어서, 임의의 콘텐트가 통상적으로 존재하는 블랭크 스크린샷을 야기한다.
예로서, 복사하거나 또는 그것을 외부 애플리케이션에 전송하는 것에 의해, 임의의 데이터가 애플리케이션 컨테이너 바깥쪽에서 국소적으로 전달되는 것을 방지함으로써와 같은, 로컬 데이터 전달이 방지될 수 있다. 키보드 캐시 피처는 민감한 텍스트 필드들에 대한 자동 수정 기능을 불능시키도록 동작할 수 있다. SSL 인증서 검증이 동작 가능할 수 있으며 따라서 애플리케이션은 그것이 키체인에 저장되는 대신에 서버 SSL 인증서를 구체적으로 검증한다. 암호화 키 생성 피처는 디바이스 상에서의 데이터를 암호화하기 위해 사용된 키가 사용자에 의해 공급된(오프라인 액세스가 요구된다면) 패스프레이즈(passphrase) 또는 생체 측정 데이터를 사용하여 생성되도록 사용될 수 있다. 그것은 오프라인 액세스가 요구되지 않는다면 랜덤하게 생성되고 서버 측 상에 저장된 또 다른 키를 갖고 XOR될 수 있다. 키 도출 함수들은 사용자 패스워드로부터 생성된 키들이 그것의 암호 해시를 생성하기보다는 KDF들(키 도출 함수들, 특히 패스워드-기반 키 도출 함수 2(PBKDF2))을 사용하도록 동작할 수 있다. 후자는 키가 폭력 또는 사전 공격들에 민감하게 한다.
뿐만 아니라, 하나 이상의 초기화 벡터들은 암호화 방법들에서 사용될 수 있다. 초기화 벡터는 동일한 암호화 데이터의 다수의 사본들이 상이한 암호 텍스트 출력을 산출하게 할 수 있어서, 다시 보기 및 암호 해독 공격들 양쪽 모두를 방지한다. 이것은 또한 공격자가 훔친 암호화 키를 갖고 임의의 데이터를 복호화하는 것도 방지할 수 있다. 뿐만 아니라, 인증은 그 후 복호화가 사용될 수 있으며, 여기에서 애플리케이션 데이터는 단지 사용자가 애플리케이션 내에서 인증한 후에만 복호화된다. 또 다른 피처는 메모리에서의 민감한 데이터에 관련될 수 있으며, 이것은 단지 그것이 요구될 때에만 메모리에(디스크에서가 아닌) 유지될 수 있다. 예를 들면, 로그인 크리덴셜들은 로그인 후 메모리로부터 와이핑될 수 있으며, 오브젝티브-C 인스턴스 변수들 안에서의 암호화 키들 및 다른 데이터는, 그것들이 쉽게 참조될 수 있으므로, 저장되지 않는다. 대신에, 메모리는 이것들을 위해 수동으로 할당될 수 있다.
무활동 타임아웃이 구현될 수 있으며, 여기에서 무활동의 정책-정의 기간 후, 사용자 세션이 종료된다.
애플리케이션 관리 프레임워크(614)로부터의 데이터 누출은 다른 방식들로 방지될 수 있다. 예를 들면, 애플리케이션(610)이 배경에 넣어질 때, 메모리는 미리 결정된(구성 가능한) 시간 기간 후 비워질 수 있다. 배경화될 때, 스냅샷은 전경 프로세스를 고정시키기 위해 애플리케이션의 마지막 디스플레이된 스크린에 대해 취해질 수 있다. 스크린샷은 기밀 데이터를 포함할 수 있으며 그러므로 제거되어야 한다.
또 다른 보안 피처는 하나 이상의 애플리케이션들로의 액세스를 위한 AD(활성 디렉토리(622) 패스워드의 사용 없이 OTP(일회용 패스워드)(620)의 사용에 관한 것이다. 몇몇 경우들에서, 몇몇 사용자들은 그들의 AD 패스워드를 모르며(또는 알도록 허용되지 않으며), 따라서 이들 사용자들은 SecurID와 같은 하드웨어 OTP 시스템을 사용함으로써와 같은 OTP(620)를 사용하여 인증할 수 있다(OTP들은 Entrust 또는 Gemalto와 같은, 상이한 벤더들에 의해 또한 제공될 수 있다). 몇몇 경우들에서, 사용자가 사용자|ID를 갖고 인증한 후, 텍스트는 OTP(620)를 갖고 사용자로 전송된다. 몇몇 경우들에서, 이것은 단일 필드인 프롬프트를 갖고, 단지 온라인 사용을 위해서만 구현될 수 있다.
오프라인 패스워드는 오프라인 사용이 기업 정책을 통해 허용되는 이들 애플리케이션(610)에 대한 오프라인 인증을 위해 구현될 수 있다. 예를 들면, 기업은 이러한 방식으로 StoreFront가 액세스되기를 원할 수 있다. 이 경우에, 클라이언트 에이전트(604)는 맞춤 오프라인 패스워드를 설정하도록 사용자에게 요구할 수 있으며 AD 패스워드는 사용되지 않는다. 게이트웨이 서버(606)는, 표준 윈도우즈 서버 패스워드 복잡도 요건들에 의해 설명된 바와 같이, 최소 길이, 문자 클래스 구성, 및 패스워드들의 수명에 대하여 패스워드 표준들을 제어하고 시행하기 위해 정책들을 제공할 수 있지만, 이들 요건들은 수정될 수 있다.
또 다른 피처는 2차 크리덴셜들로서(애플리케이션 관리 프레임워크 마이크로 VPN 피처를 통해 PKI 보호 웹 리소스들을 액세스할 목적으로) 특정한 애플리케이션들(610)에 대한 클라이언트 측 인증서의 가능화에 관한 것이다. 예를 들면, 애플리케이션은 이러한 인증서를 이용할 수 있다. 이 경우에, ActiveSync 프로토콜을 사용하는 인증서-기반 인증이 지원될 수 있으며, 여기에서 클라이언트 에이전트(604)로부터의 인증서는 게이트웨이 서버(606)에 의해 검색되고 키체인에서 사용될 수 있다. 각각의 관리형 애플리케이션은, 게이트웨이 서버(606)에서 정의되는 라벨에 의해 식별된, 하나의 연관된 클라이언트 인증서를 가질 수 있다.
게이트웨이 서버(606)는 관련된 관리형 애플리케이션들이 내부 PKI 보호 리소스들에 대해 인증하도록 허용하기 위해 클라이언트 인증서들의 발행을 지원하도록 기업 특수 목적 웹 서비스와 상호 작용할 수 있다.
클라이언트 에이전트(604) 및 애플리케이션 관리 프레임워크(614)는 내부 PKI 보호 네트워크 리소스들에 대한 인증을 위해 클라이언트 인증서들을 획득하고 사용하는 것을 지원하기 위해 강화될 수 있다. 다양한 레벨들의 보안 및/또는 분리 요건들에 매칭시키기 위해서와 같은, 하나 이상의 인증서가 지원될 수 있다. 인증서들은 메일 및 브라우저 관리형 애플리케이션들에 의해, 및 궁극적으로 임의의 래핑 애플리케이션들에 의해(애플리케이션 관리 프레임워크가 https 요청들을 중재하는 것이 적정한 이들 애플리케이션들 사용 웹 서비스 스타일 통신 패턴들을 제공받으면) 사용될 수 있다.
iOS 상에서의 애플리케이션 관리 클라이언트 인증서 지원은 각각의 사용 기간 동안 각각의 관리형 애플리케이션에서 iOS 키체인으로 공개-키 암호 표준들(PKCS) 12 BLOB(이전 대형 오브젝트)를 불러오는 것에 의존할 수 있다. 애플리케이션 관리 프레임워크 클라이언트 인증서 지원은 사설 메모리-내 키 저장을 가진 HTTPS 구현을 사용할 수 있다. 클라이언트 인증서는 결코 iOS 키체인에 존재하지 않으며 잠재적으로 강하게 보호되는 "온라인-전용(online-only)" 데이터 값을 제외하고 지속되지 않을 수 있다.
상호 SSL 또는 TLS는 또한 모바일 디바이스(602)가 기업에 대해 인증되며 그 역 또한 마찬가지임을 요구함으로써 부가적인 보안을 제공하기 위해 구현될 수 있다. 게이트웨이 서버(606)로의 인증을 위한 가상 스마트 카드들이 또한 구현될 수 있다.
제한된 및 완전한 Kerberos 지원 양쪽 모두는 부가적인 피처들일 수 있다. 완전 지원 피처는, 활성 디렉토리(AD) 패스워드 또는 신뢰형 클라이언트 인증서를 사용하여, AD(622)로의 완전한 Kerberos 로그인을 행하며, HTTP 협상 인증 도전들에 응답하도록 Kerberos 서비스 티켓들을 획득하기 위한 능력에 관한 것이다. 제한된 지원 피처는 Citrix 액세스 게이트웨이 기업 에디션(AGEE)에서 제한된 위임에 관한 것이며, 여기에서 AGEE는 그것이 HTTP 협상 인증 도전들에 응답하여 Kerberos 서비스 티켓들(제한된 위임의 대상이 되는)을 획득하고 사용할 수 있도록 Kerberos 프로토콜 전이를 호출하는 것을 지원한다. 이러한 메커니즘은 역방향 웹 프록시(기업 가상 사설 네트워크(CVPN)라고도 알려진) 모드에서, http(https가 아닌) 연결들이 VPN 및 MicroVPN 모드에서 프록시될 때 작동한다.
또 다른 피처는 애플리케이션 컨테이너 잠금 및 와이핑에 관한 것이며, 이것은 탈옥 또는 루팅 검출 시 자동으로 발생하고, 관리 콘솔로부터의 푸싱 명령으로서 발생할 수 있며, 애플리케이션(610)이 구동 중이지 않을 때에도 원격 와이프 기능을 포함할 수 있다.
사용자들이 고장의 경우에 여러 개의 상이한 위치들 중 하나로부터 서비스되도록 허용하는 기업 애플리케이션 저장소 및 애플리케이션 제어기의 다중-사이트 아키텍처 또는 구성이 지원될 수 있다.
몇몇 경우들에서, 관리형 애플리케이션들(610)은 API(예시적인 OpenSSL)를 통해 인증서 및 사설 키를 액세스하도록 허용될 수 있다. 기업의 신뢰된 관리형 애플리케이션들(610)은 애플리케이션의 클라이언트 인증서 및 사설 키를 갖고 특정 공개 키 동작들을 수행하도록 허용될 수 있다. 애플리케이션이 브라우저처럼 동작하며 어떤 인증서 액세스도 사용되지 않을 때, 애플리케이션이 "나는 누구인가(who am I)"에 대한 인증서를 판독할 때, 애플리케이션이 보안 세션 토큰을 구축하기 위해 인증서를 사용할 때, 및 애플리케이션이 중요한 데이터(예로서, 트랜잭션 로그)의 디지털 서명을 위해 또는 임시 데이터 암호화를 위해 사설 키들을 사용할 때와 같은, 다양한 사용 경우들이 식별되고 그에 따라 처리될 수 있다.
클라이언트 애플리케이션들을 위한 싱글 사인 온 및/또는 조건부 액세스의 예시적인 예들
모바일 애플리케이션들과 같은, 클라이언트 애플리케이션들을 위한 싱글 사인 온(SSO) 및/또는 조건부 액세스를 구현하는 시스템들 및 방법들이 본 출원에서 설명된다. SSO 및/또는 조건부 액세스를 위한 시스템들 및 방법들 중 하나 이상은 안전할 수 있다. 예를 들면, 시스템은 허가된 사용자들을 식별하고, 허가된 디바이스들을 식별하며, 및/또는 허가된 애플리케이션들을 식별할 수 있을 것이다. 본 출원에서 설명된 하나 이상의 SSO 및/또는 조건부 액세스 능력은, 어떤 사용자들, 디바이스들, 및/또는 애플리케이션들이 기능으로의 액세스를 갖는지를 제어하기 위해 IT 관리자들의 능력을 희생시키지 않고, 안전하게 달성될 수 있다. 몇몇 양상들에서, 조건부 액세스 판단들은, 사용자 아이덴티티, 디바이스 아이덴티티, 애플리케이션 아이덴티티, 액세스의 위치 등과 같은, 다양한 인자들에 기초하여 이루어질 수 있다.
본 출원에서 설명된 SSO 및/또는 조건부 액세스를 위한 시스템들 및 방법들 중 하나 이상은 애플리케이션 중립일 수 있다. 예를 들면, 본 출원에서 설명된 시스템들 방법들은 다양한 유형들의 모바일 애플리케이션들을 다룰 수 있으며 및/또는 애플리케이션들에 대한 수정들을 요구하지 않을 수 있다(예로서, SDK를 사용하지 않고, 애플리케이션을 래핑하지 않고 등). 본 출원에서 설명된 SSO 및/또는 조건부 액세스를 위한 시스템들 및 방법들 중 하나 이상은 아이덴티티 제공자(IDP) 중립일 수 있다. 예를 들면, 본 출원에서 설명된 양상들은 임의의 표준-기반 IDP를 이용하고 지원할 수 있다. 본 출원에서 설명된 SSO 및/또는 조건부 액세스를 위한 시스템들 및 방법들 중 하나 이상은 플랫폼 중립일 수 있다. 예를 들면, 그것들은, 안드로이드, iOS, 윈도우즈, 또는 임의의 다른 모바일 디바이스 플랫폼과 같은, 임의의 인기 있는 모바일 플랫폼을 지원할 수 있다.
몇몇 양상들에서, 본 출원에서 설명된 시스템들 및 방법들 중 하나 이상은, 허가된 디바이스로부터 허가된 애플리케이션을 사용하는 허가된 사용자가 임의의 부가적인 사용자 상호 작용 없이 인증할 수 있는 경우와 같은, 제로 터치 모바일 SSO를 달성하기 위해 사용될 수 있다.
도 7은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 예시적인 시스템 및 방법을 묘사한다. 시스템은 클라이언트 디바이스(705)를 포함할 수 있다. 클라이언트 디바이스(705)는, 예를 들면, 이동 전화, 태블릿, 스마트워치, 가상 현실 또는 증강 현실 헤드셋, 또는 임의의 다른 모바일 디바이스와 같은, 모바일 디바이스일 수 있다. 클라이언트 디바이스(705)는 기업 발행 또는 관리 디바이스가 아닐 수 있으며, 예를 들면, BYOD 디바이스일 수 있다. 몇몇 양상들에서, 클라이언트 디바이스(705)는 도 1에 예시된 디바이스(103), 디바이스(105), 디바이스(107), 또는 디바이스(109), 도 2에 예시된 단말기들(240) 중 하나, 도 4에 예시된 클라이언트 컴퓨터들(411 내지 414) 중 하나, 도 5에 예시된 모바일 디바이스(502), 도 6에 예시된 모바일 디바이스(602), 또는 임의의 다른 클라이언트 디바이스일 수 있다.
클라이언트 디바이스(705)는 하나 이상의 클라이언트 애플리케이션들(710)을 포함할 수 있다. 몇몇 양상들에서, 클라이언트 애플리케이션은 IDP(735)와 같은, 특정한 아이덴티티 제공자(IDP)를 통해 인증하도록 구성될 수 있다. 그러나, 클라이언트 애플리케이션의 백엔드 서비스는, IDP 게이트웨이(725)와 같은, IDP 게이트웨이로의 인증을 연합하기 위해 재구성될 수 있다. 연합된 인증 시나리오들에서, 회사는 클라이언트 디바이스(705)의 사용자를 인증하며 서비스 제공자(예로서, 서비스 제공자 인증 사용자 대신에)에 의해 제공된 서비스로의 액세스를 허용할 수 있다.
클라이언트 디바이스(705)는 하나 이상의 VPN 서비스들(715)을 포함할 수 있다. 각각의 VPN 서비스는, 이하에서 보다 상세하게 설명될 바와 같이, 요구 시 론칭될 수 있는 앱-단위 VPN을 포함할 수 있으며 클라이언트 디바이스(705)를 IDP 게이트웨이(725)에 연결하기 위해 사용될 수 있다.
시스템은, 디바이스 관리 서버(예로서, 기업 이동성 관리 시스템에서의 기업 이동성 관리 서버)와 같은, 하나 이상의 서버들(730)을 포함할 수 있다. 서버(730)는 클라이언트 디바이스(705)와 같은, 허가된 클라이언트 디바이스들 상에 VPN들(예로서, 앱-단위 VPN들)을 설치하기 위해서와 같은, 클라이언트 디바이스들을 관리하도록 구성될 수 있다. 서버(730)(또는 시스템에서의 또 다른 디바이스)는 앱-단위 VPN으로 클라이언트 인증서를 전달할 수 있으며, 클라이언트 인증서는 사용자 아이덴티티 정보, 디바이스 아이덴티티 정보(예로서, Subject AlternativeNames로서), 또는 다른 사용자 또는 디바이스 정보를 인코딩할 수 있다. 디바이스 아이덴티티 정보는 클라이언트 디바이스(705)를 식별하기 위한 임의의 고유 스트링을 포함할 수 있으며, 스트링은 시스템에서의 구성에 기초할 수 있다. 사용자 아이덴티티 정보는, 예를 들면, 이메일 어드레스, 사용자명, 사용자 원이름, 또는 클라이언트 디바이스(705)의 사용자를 식별하기 위한 임의의 다른 아이덴티티를 포함할 수 있다. 서버(730)(또는 시스템에서의 또 다른 디바이스)는 서버(730)(또는 시스템에서의 또 다른 디바이스)에 의해 전달된 인증서를 갖고 클라이언트 인증서 인증을 사용하도록 앱-단위 VPN을 구성할 수 있다. 몇몇 양상들에서, 서버(730)(또는 시스템에서의 또 다른 디바이스)는 허가된 애플리케이션들로부터 요청들을 수용하고 및/또는 IDP 게이트웨이(725)로의 요청들을 인터셉트하도록 앱-단위 VPN을 구성할 수 있다. 단지 특정한 요청들만을 인터셉트하는 것은 핸들링될 요청들의 수를 감소시킴으로써 프로세싱 리소스들 및 통신 대역폭의 보다 효율적인 사용을 야기한다. 서버(730)는 또한, 이하에서 추가로 상세하게 설명될 바와 같이, 리소스들로의 액세스를 요청하는 클라이언트 디바이스(705)가 보안 정책들이 호환하는지를 결정하기 위해 사용될 수 있다.
시스템은 하나 이상의 서비스 제공자들(720)을 포함할 수 있다. 서비스 제공자(720)는 하나 이상의 리소스들(예로서, 문서 편집 리소스들, 고객 관계 관리(CRM) 리소스들, 이메일 서비스들, 뱅킹 리소스들 등)을 클라이언트 디바이스(705) 사용자에게 이용 가능하게 만들 수 있다. 몇몇 양상들에서, 애플리케이션(710)은 서비스 제공자(720) 또는 서비스 제공자(720)의 제휴사에 의해 관리되고, 제공되며, 및/또는 개발될 수 있다.
시스템은 하나 이상의 IDP 게이트웨이들(725)을 포함할 수 있다. IDP 게이트웨이(725)는 벡-엔드 서비스(예로서, 서비스 제공자(720)에 의해 제공된 서비스)의 원래 IDP(735)에 대한 인증을 연합하도록 구성될 수 있다. IDP 게이트웨이(725)는 임의의 서비스 제공자에 대해 표준-기반 IDP처럼 동작할 수 있다. IDP 게이트웨이(725)는 임의의 표준-기반 IDP(예로서, 실제 IDP)에 대해 표준-기반 서비스 제공자처럼 동작할 수 있다. IDP 게이트웨이(725)는 부가적으로 또는 대안적으로 실제 IDP처럼 거동할 수 있다. IDP 게이트웨이(725)는 직접 또는 허가된 VPN 터널을 통해 엔드포인트들(예로서, 클라이언트 디바이스(705))에 의해 액세스될 수 있다.
시스템은 하나 이상의 아이덴티티 제공자들(735)을 포함할 수 있으며, 이것은 클라이언트 디바이스(705)의 사용자를 인증하기 위해 사용된 원래 IDP일 수 있다. 이하에서 추가로 상세하게 설명될 바와 같이, 아이덴티티 제공자(735)는 비관리형 엔드포인트들, 데스크탑들, 및/또는 로그(rogue) 애플리케이션들로부터의 액세스의 경우들을 다룰 수 있다.
도 8a 및 도 8b는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 예시적인 시스템 및 방법을 묘사한다.
단계(810)에서, 클라이언트 디바이스(예로서, 모바일 애플리케이션과 같은, 클라이언트 애플리케이션(710)을 통해)는 서비스 제공자(720)로부터 서비스를 액세스하기 위한 요청을 송신할 수 있다. 예를 들면, 클라이언트 디바이스의 사용자는, 터치 스크린, 키보드, 마우스, 제스처 등과 같은, 클라이언트 디바이스의 입력 디바이스를 통해, 클라이언트 애플리케이션(710)에 대한 아이콘을 선택할 수 있으며, 클라이언트 애플리케이션(710)은 클라이언트 디바이스 및 서비스 제공자(720) 사이에서 통신들을 개시할 수 있다.
단계(812)에서, 서비스 제공자(720)는 클라이언트 애플리케이션(710)으로부터 요청을 수신할 수 있다. 서비스 제공자(710)는, 클라이언트 디바이스의 클라이언트 애플리케이션(710)으로, 인증을 아이덴티티 제공자(IDP) 게이트웨이(725)로 리다이렉트시키기 위한 요청을 송신할 수 있다. 리다이렉트시키기 위한 요청은 서비스 제공자(720)가 요청자임을 나타낼 수 있다. 예를 들면, 모바일 애플리케이션이 인증할 때, 그것의 백엔드 서비스는 서비스 제공자(720)를 갖고 직접 인증하거나 또는 인증을 원래 아이덴티티 제공자(735)로 리다이렉트시키기보다는, 그것을 아이덴티티 제공자 게이트웨이(725)로 리다이렉트시킬 수 있다. 이하에서 추가로 상세하게 설명될 바와 같이, 보안 통신 터널은 인증 요청을 아이덴티티 제공자 게이트웨이(725)로 리다이렉트시키기 위한 서비스 제공자(720)로부터의 요청에 응답하여 애플리케이션(710) 및 아이덴티티 제공자 게이트웨이(725) 사이에서 수립될 수 있다.
단계(814)에서, 클라이언트 애플리케이션(710)은 아이덴티티 제공자 게이트웨이(725)를 액세스하도록 요청할 수 있다. 단계(816)에서, 터널링 애플리케이션(예로서, 앱-단위 VPN 플러그인과 같은, 가상 사설 네트워크(VPN)(715))은 아이덴티티 제공자 게이트웨이(725)를 액세스하기 위한 요청을 가로챌 수 있으며 예를 들면, 클라이언트 인증서를 사용하여 클라이언트 애플리케이션(710) 및 아이덴티티 제공자 게이트웨이(725) 사이에 보안 통신 터널(예로서, VPN 터널)을 수립할 수 있다. 보안 통신 터널을 수립하는 것은, 클라이언트 디바이스 상에서 운용하는 애플리케이션(710)에 의해, 아이덴티티 제공자 게이트웨이(725)를 액세스하기 위한 요청을 검출하는 것을 포함할 수 있다(예로서, VPN(715)에 의해). 예를 들면, 애플리케이션(710)이 아이덴티티 제공자 게이트웨이(725)에 도달하려고 시도할 때, 앱-단위 VPN은 VPN 엔드포인트로의 인증을 위한 구성된 클라이언트 인증서를 사용하여 활성화되고 VPN 터널을 수립할 수 있다. 터널링 애플리케이션은 아이덴티티 제공자 게이트웨이(725)를 액세스하기 위한 요청을 인터셉트하며 및/또는 클라이언트 인증서를 사용하여 보안 통신 터널을 수립할 수 있다. 터널링 애플리케이션은 요청에서 사용자 아이덴티티 및/또는 디바이스 아이덴티티 정보를 인코딩할 수 있다. 몇몇 양상들에서, 터널링 애플리케이션은 허가된 애플리케이션들로부터 요청들을 수용할 수 있지만, 허가되지 않은 애플리케이션들로부터의 요청들을 수용하지 않을 수 있다. 부가적으로 또는 대안적으로, 터널링 애플리케이션은 아이덴티티 제공자 게이트웨이(725)에 대해 의도된 요청들을 가로챌 수 있지만, 아이덴티티 제공자 게이트웨이(725)에 대해 의도된 요청들을 수용하지 않을 수 있다.
단계(818)에서, 아이덴티티 제공자 게이트웨이(725)는 클라이언트 애플리케이션(710) 및 아이덴티티 제공자 게이트웨이(725) 사이에서 보안 통신 터널의 수립을 확인할 수 있다. 단계(820)에서, VPN(715)은 확인을 수신하며 상기 확인을 클라이언트 애플리케이션(710)으로 포워딩할 수 있다. 클라이언트 애플리케이션(710) 및 아이덴티티 제공자 게이트웨이(725) 사이에서 보안 통신 터널이 수립될 수 있다.
단계(822)에서, 클라이언트 애플리케이션(710)은, 보안 통신 터널을 통해서와 같은, 인증 요청을 아이덴티티 제공자 게이트웨이(725)로 송신할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 애플리케이션(710)으로부터, 및 보안 통신 터널을 통해, 인증 요청을 수신할 수 있으며, 이것은 클라이언트 인증서를 사용할 수 있다. 클라이언트 인증서는 터널 자체를 수립하기 위해 사용될 수 있다. 다른 예들에서, 인증 요청은 보안 통신 터널을 통해 오지 않을 수 있으며 및/또는 클라이언트 인증서를 사용하지 않을 수 있다.
단계(824)에서, 아이덴티티 제공자 게이트웨이(725)는 요청이 클라이언트 인증서를 사용하여 인증된 터널을 통해 왔는지를 결정할 수 있다. 클라이언트 인증서가 터널(예로서, VPN 터널)을 수립하기 위해 사용되지 않았다면, 아이덴티티 제공자 게이트웨이(725)는 클라이언트 디바이스가 비-관리형 클라이언트 디바이스라고 결정할 수 있다. 아이덴티티 제공자 게이트웨이(725)는 싱글 사인 온 및 조건부 액세스가 클라이언트 요청에 대해 이용 가능하지 않다고 결정할 수 있으며, 아이덴티티 제공자 게이트웨이(725)는 클라이언트 디바이스를 아이덴티티 제공자(735)(예로서, 원래 아이덴티티 제공자)로 리다이렉트시킬 수 있다. 이러한 피처는 비관리형 엔드포인트들, 데스크탑들, 및/또는 로그 애플리케이션들로부터의 액세스의 경우들을 다룰 수 있다. 이들 액세스들은 싱글 사인 온 기능을 얻지 않을 수 있다. 새로운 인증 요청은 클라이언트 디바이스에 의해 구성될 수 있으며, 클라이언트 디바이스는, 아이덴티티 제공자 게이트웨이(725) 대신에, 아이덴티티 제공자(735)로 새로운 인증 요청을 포워딩할 수 있다.
다른 한편으로, 인증 요청이 터널을 통해 왔으며 클라이언트 인증서를 사용하였다면(예로서, 단계(824)에서 결정된 바와 같이), 단계(826)에서, 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 인증서로부터, 클라이언트 디바이스(예로서, 모바일 디바이스)에 대한 디바이스 식별자 및/또는 사용자에 대한 사용자 식별자를 추출할 수 있다. 단계(828)에서, 아이덴티티 제공자 게이트웨이(725)는, 클라이언트(예로서, 모바일) 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을, 서버(730)(디바이스 관리 서버를 포함할 수 있는)로 송신할 수 있다. 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청은 모바일 디바이스와 연관된 디바이스 식별자를 포함할 수 있다.
단계(830)에서, 서버(730)는, 아이덴티티 제공자 게이트웨이(725)로, 클라이언트 디바이스가 호환하는지를 나타낼 수 있는, 호환 정보를 리턴할 수 있다. 예를 들면, 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하는 것에 응답하여, 아이덴티티 제공자 게이트웨이(725)는, 디바이스 관리 서버(730)로부터, 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시를 수신할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시(예로서, 서버(730)에 의해 리턴된 호환 정보일 수 있는)에 기초하여, 클라이언트 디바이스가 호환하는지를 결정할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 호환 정보에 기초하여, 클라이언트 디바이스 및/또는 서비스 제공자(720) 상에서 운용하는 애플리케이션(710)과 연관된 서비스로의 액세스를 클라이언트 디바이스 상에서 운용하는 애플리케이션(710)에게 승인할지를 결정할 수 있다. 이러한 피처는, 디바이스 보안 프로파일에 기초하여서와 같은, 조건부 액세스를 제공할 수 있다.
단계(832)에서, 클라이언트 디바이스가 호환하지 않는다면, 아이덴티티 제공자 게이트웨이(725)는 액세스를 거부하고 및/또는 클라이언트 디바이스에 대한 인증을 거부할 수 있다. 그렇지 않다면, 아이덴티티 제공자 게이트웨이(725)는, 예를 들면, 아이덴티티 제공자 게이트웨이(725)가 클라이언트 디바이스가 호환하며 및/또는 그 외 서비스 제공자(720)의 서비스들로의 액세스를 클라이언트 디바이스에게 승인할지를 결정한다면 단계(834)로 진행할 수 있다.
단계(834)에서, 아이덴티티 제공자 게이트웨이(725)는 만료되지 않은 캐시된 인증 데이터(예로서, 클레임들과 같은, SAML 콘텐트)가 클라이언트 디바이스에 대해 이용 가능한지를 결정할 수 있다. 이하에서 보다 상세하게 설명될 바와 같이, 아이덴티티 제공자 게이트웨이(725)는 미래 인증 요청들을 위해 클라이언트 디바이스와 연관된 인증 데이터를 캐시할 수 있다. 캐시된 인증 데이터는 만료 시간을 가질 수 있다. 만료되지 않은 캐시된 인증 콘텐트가 이용 가능하다면, 아이덴티티 제공자 게이트웨이(725)는 클라이언트 디바이스와 연관된 캐시된 인증 데이터를 검색할 수 있다. 단계(836)에서, 아이덴티티 제공자 게이트웨이(725)는, 캐시된 인증 데이터(예로서, 클레임들과 같은, SAML 콘텐트)를 사용하여, 인증 토큰(예로서, SAML 토큰)을 생성하고 및/또는 그것에 서명할 수 있다. 예를 들면, 토큰은 사용자의 식별자, 루트들, 및/또는 사용자에 대한 다른 데이터를 가진 디지털 서명된 어서션(assertion)을 포함할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 디바이스로(예로서, 애플리케이션(710)을 통해) 인증 토큰을 송신할 수 있다. 단계(838)에서, 인증 토큰은 모바일 디바이스 상에서 운용하는 애플리케이션(710)과 연관된 서비스(예로서, 서비스 제공자(720)에 의해 제공된 서비스)를 액세스하기 위해 클라이언트 디바이스에 의해 사용될 수 있다. 이들 피처들은 싱글 사인 온 능력을 제공할 수 있다. 예를 들면, 만료 기간 내에 동일한 클라이언트 디바이스로부터의 뒤이은 인증 요청들은 사용자 크리덴셜 재-입력을 요구하지 않을 것이다.
몇몇 양상들에서, 아이덴티티 제공자 게이트웨이(725)는 클라이언트 디바이스와 연관된 인증 데이터가 아이덴티티 제공자 게이트웨이에서 캐시되지 않음을 결정할 수 있다. 캐시된 인증 콘텐트가 이용 가능하지 않다면, 아이덴티티 제공자 게이트웨이(725)는 토큰(예로서, SAML 토큰)을 인증하고 인출하기 위해 클라이언트 디바이스를 원래 아이덴티티 제공자(735)로 리다이렉트시킬 수 있다. 이하에서 보다 상세하게 설명될 바와 같이, 아이덴티티 제공자 게이트웨이(725)는, 클레임들의 세트와 같은, 토큰(예로서, SAML 토큰)의 콘텐트를 추출하며, 미래 인증 요청들을 위해 콘텐트를 캐시할 수 있다. 몇몇 양상들에서, 아이덴티티 제공자 게이트웨이(725)는 그 자신의 메모리 저장소에 콘텐트를 캐시할 수 있다.
단계(840)에서, 인증 데이터가 아이덴티티 제공자 게이트웨이(725)에 캐시되지 않음을 결정하는 것에 응답하여, 아이덴티티 제공자 게이트웨이(725)는 요청자로서 아이덴티티 제공자 게이트웨이(725)를 갖고 새로운 인증 요청을 구성할 수 있다. 단계(842)에서, 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 디바이스로(예로서, 클라이언트 애플리케이션(710)을 통해), 아이덴티티 제공자(735)(예로서, 원래 아이덴티티 제공자)로부터의 인증 데이터에 대한 요청을 송신할 수 있다. 요청은 새로운 인증 요청을 아이덴티티 제공자(735)로 리다이렉트시키기 위한 요청을 포함할 수 있다. 리다이렉트시키기 위한 요청은 요청자로서 아이덴티티 제공자 게이트웨이(725)를 나타낼 수 있다.
도 8b를 참조하면, 단계(844)에서, 클라이언트 애플리케이션(710)은, 아이덴티티 제공자(735)로, 요청자로서 아이덴티티 제공자 게이트웨이(725)를 나타낼 수 있는, 새로운 인증 요청을 송신할 수 있다. 단계(846)에서, 아이덴티티 제공자(735)는 사용자를 인증할 수 있다.
단계(848)에서, 클라이언트 디바이스(예로서, 클라이언트 애플리케이션(710)을 통해)는 클라이언트 디바이스의 사용자가 사용자 크리덴셜들(예로서, 패스코드, 패스워드, PIN 등)을 입력하도록 요청할 수 있다. 구성에 의존하여, 다수의 상호 작용들이 단계(848)에서 발생할 수 있다. 크리덴셜들은 아이덴티티 제공자(735)로 제출될 수 있으며, 사용자는 제출된 크리덴셜들에 기초하여 인증될 수 있다.
단계(850)에서, 아이덴티티 제공자(735)는 아이덴티티 제공자 토큰(예로서, SAML 토큰)을 요청자(예로서, 아이덴티티 제공자 게이트웨이(725))로 발송하기 위한 요청을 송신할 수 있다. 요청은, 예를 들면, 아이덴티티 제공자 토큰을 포함할 수 있다. 클라이언트 디바이스는 아이덴티티 제공자(735)로부터 요청 및/또는 토큰을 수신할 수 있다.
단계(852)에서, 클라이언트 애플리케이션(710)은, 아이덴티티 제공자 게이트웨이(725)로, 아이덴티티 제공자 토큰을 갖고, 아이덴티티 제공자 토큰을 발송하기 위한 요청을 송신할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 모바일 디바이스로부터, 클라이언트 디바이스와 연관된 인증 데이터를 포함할 수 있는, 토큰을 수신할 수 있다.
단계(854)에서, 아이덴티티 제공자 게이트웨이(725)는 아이덴티티 제공자 토큰을 프로세싱할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 토큰으로부터, 클라이언트 디바이스와 연관된 인증 데이터를 추출할 수 있으며 인증 데이터를 캐시할 수 있다. 캐시된 인증 데이터는, 예를 들면, 토큰 콘텐트들(예로서, SAML 토큰 콘텐트들)을 포함할 수 있다. 클라이언트 애플리케이션(710)으로부터 및 보안 통신 터널을 통한 미래 인증 요청들을 위해, 아이덴티티 제공자 게이트웨이(725)는 캐시된 인증 데이터를 검색하고, 캐시된 인증 데이터를 사용하여 인증 토큰을 생성하며, 및/또는 인증 토큰을 클라이언트 애플리케이션(710)으로 송신할 수 있다(예로서, 단계(834) 및 단계(836)를 참조하여 상기 설명된 바와 같이). 미리 결정된 시간량(예로서, 만료 시간) 후, 아이덴티티 제공자 게이트웨이 디바이스(725)는 클라이언트 디바이스와 연관된 캐시된 인증 데이터를 제거할 수 있다.
단계(856)에서, 아이덴티티 제공자 게이트웨이(725)는 새로운 토큰(예로서, SAML 토큰)을 서비스 제공자(720)로 발송하기 위한 요청을 송신할 수 있다. 단계(858)에서, 클라이언트 애플리케이션(710)은, 서비스 제공자(720)로, 새로운 토큰을 발송하기 위한 요청을 송신할 수 있다. 애플리케이션(710)은 서비스 제공자(720)의 리소스들로의 액세스를 얻기 위해 토큰(예로서, SAML 토큰)을 서비스 제공자(720)에게 제공할 수 있다. 단계(860)에서, 서비스 제공자(720)는 토큰을 프로세싱하며, 리소스들로의 액세스를 클라이언트 디바이스에게 승인할 수 있다.
매우 유사한 방법이 또한 OpenID 커넥트 및 다른 연합 표준들을 지원하기 위해 사용될 수 있다. 예를 들면, 액세스 코드 또는 인증 코드는 토큰(예로서, SAML 토큰) 대신에 사용될 수 있다. 이들 시스템들 중 하나 이상에서의 아이덴티티 제공자는 토큰들을 발행할 수 있으며, 이것은 SAML 클레임들에 유사한 서명된 어서션들일 수 있다.
도 9는 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 또 다른 예시적인 시스템 및 방법을 묘사한다. 몇몇 양상들에서, 사용자는, 서비스 제공자(720)를 통해 직접보다는, 도 5에 예시된 애플리케이션 저장소(578)와 같은, 애플리케이션 저장소를 통해 리소스들을 액세스할 수 있다. 애플리케이션 저장소는 아이덴티티 제공자(735)에 의해 제공될 수 있다. 애플리케이션 저장소를 통해 사용자에게 이용 가능한 애플리케이션들은 클라이언트 디바이스(705)의 디스플레이상에 디스플레이될 수 있으며 및/또는 예를 들면, 웹 애플리케이션들을 포함할 수 있다. 사용자는 애플리케이션과 연관된 리소스들을 액세스하려고 시도하기 위해 애플리케이션 저장소에서의 애플리케이션들 중 하나에 대한 아이콘을 선택(예로서, 클릭 온)할 수 있다.
단계(910)에서, 사용자는 아이덴티티 제공자(735)에 의해 제공된 애플리케이션 페이지로 접속할 수 있다. 예를 들면, 사용자는 사용자명, 패스워드, 패스코드, 또는 임의의 다른 크리덴셜들을 제공할 수 있으며, 클라이언트 디바이스는 사용자의 입력된 크리덴셜들을 아이덴티티 제공자(735)로 송신할 수 있다. 몇몇 양상들에서, 클라이언트 디바이스는 클라이언트 디바이스가 아이덴티티 제공자(735)를 갖고 직접 인증하였기 때문에 아이덴티티 제공자 게이트웨이(725)를 갖고 재-인증할 필요가 없을 것이다. 사용자는 애플리케이션 아이콘을 선택(예로서, 클릭 온)할 수 있다.
단계(912)에서, 아이덴티티 제공자(735)는 아이덴티티 제공자 토큰(예로서, SAML 토큰) 및/또는 아이덴티티 제공자 토큰을 아이덴티티 제공자 게이트웨이(725)로 발송하기 위한 요청을 송신할 수 있다. 클라이언트 디바이스는 아이덴티티 제공자(735)로부터 요청을 수신할 수 있다.
단계(914)에서, 클라이언트 애플리케이션(710)은, 아이덴티티 제공자 게이트웨이(725)로, 아이덴티티 제공자 토큰을 송신할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 디바이스로부터, 클라이언트 디바이스와 연관된 인증 데이터를 포함할 수 있는, 토큰을 수신할 수 있다. 토큰은 아이덴티티 제공자(735)를 갖고 클라이언트 디바이스(710)의 인증 후 수신될 수 있다.
단계(916)에서, 아이덴티티 제공자 게이트웨이(725)는 아이덴티티 제공자 토큰을 프로세싱할 수 있다. 아이덴티티 제공자 게이트웨이(725)는, 이전에 설명된 바와 같이, 클라이언트 디바이스와 연관된 인증 데이터를 캐시할 수 있다. 캐시된 인증 데이터는, 예를 들면, 토큰 콘텐트들(예로서, SAML 토큰 콘텐트들)을 포함할 수 있다. 아이덴티티 제공자 게이트웨이(725)는 캐시된 인증 데이터를 검색하고, 캐시된 인증 데이터를 사용하여 인증 토큰을 생성하고, 서비스 제공자(720)에 대한 토큰에 서명하며, 및/또는 보안 통신 터널을 통해, 인증 토큰을 클라이언트 애플리케이션(710)으로 송신할 수 있다. 이전에 설명된 바와 같이, 아이덴티티 제공자 게이트웨이 디바이스(725)는 미리 결정된 시간량(예로서, 만료 시간) 후 클라이언트 디바이스와 연관된 캐시된 인증 데이터를 제거할 수 있다.
단계(918)에서, 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 애플리케이션(710)으로, 새로운 토큰(예로서, SAML 토큰)을 서비스 제공자(720)로 발송하기 위한 요청을 송신할 수 있다. 클라이언트 애플리케이션(710)은 아이덴티티 제공자 게이트웨이(725)로부터 요청을 수신할 수 있다.
단계(920)에서, 클라이언트 애플리케이션(710)은, 서비스 제공자(720)로, 새로운 토큰을 발송하기 위한 요청을 송신할 수 있다. 애플리케이션(710)은 서비스 제공자(720)의 리소스들로의 액세스를 얻기 위해 서비스 제공자(720)에게 토큰(예로서, SAML 토큰)을 제공할 수 있다. 단계(922)에서, 서비스 제공자(720)는 토큰을 프로세싱하며 리소스들로의 액세스를 클라이언트 디바이스에게 승인할 수 있다.
몇몇 양상들에서, 아이덴티티 제공자 게이트웨이(725)는 원래 아이덴티티 제공자(735)의 하나 이상의 인증 단계들이며 및/또는 그것을 수행하도록 구성될 수 있다. 이들 예들에서, 최종 사용자 인증은 원래 아이덴티티 제공자(735)에서보다는, 아이덴티티 제공자 게이트웨이(725)에서 발생할 수 있다. VPN(715)에 의해 제공될 수 있는, 클라이언트 인증서는, 최종 사용자로부터 임의의 부가적인 입력을 요구하지 않고, 사용자를 인증하기 위한 인자로서 사용될 수 있다. 이들 예들은 제로 터치 모바일 SSO를 달성할 수 있다.
도 8a에 예시된 단계(830)를 간단히 참조하면, 아이덴티티 제공자 게이트웨이(725)는, 서버(730)로부터 리턴된 호환 정보에 기초하여서와 같은, 클라이언트 디바이스가 호환하는지를 결정할 수 있다. 아이덴티티 제공자 게이트웨이(725)가 클라이언트 디바이스가 호환하며 및/또는 그 외 서비스 제공자(720)의 서비스들로의 액세스를 클라이언트 디바이스에게 승인하도록 결정한다면, 본 출원에서 설명된 시스템은 사용자를 인증하거나 또는 그 외 서비스들로의 액세스를 사용자에게 주기 위해 하나 이상의 단계들을 수행할 수 있다. 이들 단계들은 원래 아이덴티티 제공자(735)로의 리다이렉트을 수반하지 않을 수 있다. 대신에, 아이덴티티 제공자 게이트웨이(725)는 디렉토리(745)(예로서, 활성 디렉토리)로부터 부가적인 정보를 획득할 수 있으며, 부가적인 정보는 사용자 및/또는 클라이언트 디바이스를 인증하기 위해 사용될 수 있다.
도 10은 본 출원에서 설명된 하나 이상의 예시적인 양상들에 따른 클라이언트 애플리케이션들에 대한 싱글 사인 온 및/또는 조건부 액세스를 위한 또 다른 예시적인 시스템 및 방법을 묘사한다. 아이덴티티 제공자 게이트웨이(725)가 클라이언트 디바이스가 호환하며(예로서, 단계(830)에서 수신된 호환 정보에 기초하여) 및/또는 그 외 서비스로의 액세스를 클라이언트 디바이스에게 승인하도록 결정한 후, 아이덴티티 제공자 게이트웨이(725)는, 단계(1010)에서, 클라이언트 인증서로부터, 클라이언트(예로서, 모바일) 디바이스의 사용자와 연관된 사용자 식별자를 추출할 수 있다. 이전에 설명된 바와 같이, 클라이언트 인증서는 클라이언트 애플리케이션(710) 및 아이덴티티 제공자 게이트웨이(725) 사이에 보안 통신 터널을 수립하기 위해 사용될 수 있다.
단계(1012)에서, 아이덴티티 제공자 게이트웨이(725)는, 디렉토리(745)로, 클라이언트 디바이스의 사용자와 연관된 부가 데이터에 대한 요청을 송신할 수 있다. 부가적인 사용자 정보는, 예를 들면, 그룹 멤버십 정보, 사용자가 이메일 계정을 갖는지, 사용자의 이메일 어드레스 등을 포함할 수 있다. 디렉토리(745)로부터 이용 가능한 정보의 유형은 구성 가능할 수 있다.
단계(1014)에서, 디렉토리(745)는, 아이덴티티 제공자 게이트웨이(725)로, 아이덴티티 제공자 게이트웨이(725)에 의해 요청된 부가적인 사용자 정보를 송신할 수 있다. 아이덴티티 제공자 게이트웨이(725)는 디렉토리(745)로부터 부가적인 사용자 정보를 수신할 수 있다. 몇몇 양상들에서, 아이덴티티 제공자 게이트웨이(725)는 부가적인 사용자 정보를 가진 데이터베이스를 가질 수 있다(및/또는 그것으로의 액세스를 가질 수 있다). 이들 예들에서, 아이덴티티 제공자 게이트웨이(725)는 사용자 정보에 대한 요청을 디렉토리(745)로 송신하지 않을 수 있으며, 대신에 데이터베이스로부터의 정보를 액세스할 수 있다.
단계(1016)에서, 아이덴티티 제공자 게이트웨이(725)는 사용자 식별자 및/또는 디렉토리(745)로부터의 부가적인 사용자 정보를 사용하여, SAML 토큰과 같은, 인증 토큰을 생성(예로서, 구성)할 수 있다. 예를 들면, 토큰은 사용자의 식별자, 루트들, 및/또는 사용자에 대한 다른 데이터를 가진 디지털 서명된 어서션을 포함할 수 있다.
단계(1018)에서, 아이덴티티 제공자 게이트웨이(725)는, 클라이언트 디바이스(예로서, 애플리케이션(710)을 구동하는)로, 인증 토큰(예로서, SAML 토큰) 및/또는 서비스 제공자(720)로 토큰을 발송하기 위한 요청을 송신할 수 있다. 단계(1018)는 이전에 설명된, 단계(856)와 유사할 수 있다.
단계(1020)에서, 클라이언트 애플리케이션(710)은, 서비스 제공자(720)로, 토큰을 발송하기 위한 요청을 송신할 수 있다. 애플리케이션(710)은 서비스 제공자(720)의 리소스들로의 액세스를 얻기 위해 토큰(예로서, SAML 토큰)을 서비스 제공자(720)에게 제공할 수 있다. 단계(1020)는, 이전에 설명된, 단계(858)와 유사할 수 있다.
단계(1022)에서, 서비스 제공자(720)는 토큰을 프로세싱하며 리소스들로의 액세스를 클라이언트 디바이스에게 승인할 수 있다. 단계(1022)는 이전에 설명된 단계(860)와 유사할 수 있다.
주제가 구조적 특징들 및/또는 방법적 동작들에 특정된 언어로 설명되었지만, 첨부된 청구항들에서 정의된 주제는 반드시 상기 설명된 특정 특징들 또는 동작들에 제한되는 것은 아니라는 것이 이해될 것이다. 오히려, 상기 설명된 특정 특징들 및 동작들은 다음의 청구항들의 예시적인 구현들로서 설명된다.

Claims (20)

  1. 방법에 있어서,
    모바일 디바이스 상에서 운용하는 애플리케이션과 아이덴티티 제공자 게이트웨이 디바이스 사이에 보안 통신 터널을 수립하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션으로부터, 상기 보안 통신 터널을 통해, 클라이언트 인증서를 포함한 인증 요청을 수신하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 클라이언트 인증서로부터, 상기 모바일 디바이스와 연관된 디바이스 식별자를 추출하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 디바이스 관리 서버로, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하는 단계로서, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청은 상기 모바일 디바이스와 연관된 상기 디바이스 식별자를 포함하는, 상기 송신 단계;
    상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하는 것에 응답하여, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 디바이스 관리 서버로부터, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시를 수신하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시에 기초하여, 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션과 연관된 서비스로의 액세스를 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션에게 승인할지를 결정하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 보안 통신 터널을 수립하는 단계는:
    상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션에 의해, 상기 아이덴티티 제공자 게이트웨이 디바이스를 액세스하기 위한 요청을 검출하는 단계;
    터널링 애플리케이션에 의해, 상기 아이덴티티 제공자 게이트웨이 디바이스를 액세스하기 위한 요청을 인터셉트하는 단계(intercepting); 및
    상기 터널링 애플리케이션에 의해 및 상기 클라이언트 인증서를 사용하여, 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션과 상기 아이덴티티 제공자 게이트웨이 디바이스 사이에 상기 보안 통신 터널을 수립하는 단계를 포함하는, 방법.
  3. 청구항 1에 있어서,
    상기 보안 통신 터널은 가상 사설 네트워크(VPN : virtual private network) 터널을 포함하는, 방법.
  4. 청구항 1에 있어서,
    상기 보안 통신 터널을 수립하는 단계는, 상기 서비스의 서비스 제공자로부터, 요청에 응답하여, 상기 인증 요청을 상기 아이덴티티 제공자 게이트웨이 디바이스로 리다이렉트(redirect)시키기 위해 수행되는, 방법.
  5. 청구항 1에 있어서,
    상기 서비스로의 액세스를 승인하도록 결정한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스와 연관된 캐시된 인증 데이터를 검색하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해 및 상기 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스로, 상기 인증 토큰을 송신하는 단계를 더 포함하는, 방법.
  6. 청구항 5에 있어서,
    상기 인증 토큰은 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션과 연관된 상기 서비스를 액세스하기 위해 상기 모바일 디바이스에 의해 사용되도록 구성되는, 방법.
  7. 청구항 1에 있어서,
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스와 연관된 인증 데이터가 상기 아이덴티티 제공자 게이트웨이 디바이스에서 캐시되지 않음을 결정하는 단계;
    상기 인증 데이터가 상기 아이덴티티 제공자 게이트웨이 디바이스에서 캐시되지 않음을 결정하는 것에 응답하여, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스로, 아이덴티티 제공자 디바이스로부터의 상기 인증 데이터에 대한 요청을 송신하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스로부터, 상기 아이덴티티 제공자 디바이스를 통해, 상기 모바일 디바이스와 연관된 상기 인증 데이터를 수신하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스와 연관된 상기 인증 데이터를 캐시하는 단계를 더 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스와 연관된 상기 캐시된 인증 데이터를 검색하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해 및 상기 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스로, 상기 인증 토큰을 송신하는 단계를 더 포함하는, 방법.
  9. 청구항 7에 있어서,
    미리 결정된 시간량 후, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스와 연관된 상기 캐시된 인증 데이터를 제거하는 단계를 더 포함하는, 방법.
  10. 청구항 1에 있어서,
    상기 서비스로의 액세스를 승인하도록 결정한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 클라이언트 인증서로부터, 상기 모바일 디바이스의 사용자와 연관된 사용자 식별자를 추출하는 단계;
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해 및 상기 사용자 식별자를 사용하여, 인증 토큰을 생성하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 모바일 디바이스로, 상기 인증 토큰을 송신하는 단계를 더 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 사용자 식별자를 추출한 후, 상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 디렉토리 서비스로, 상기 모바일 디바이스의 사용자와 연관된 부가 데이터에 대한 요청을 송신하는 단계; 및
    상기 아이덴티티 제공자 게이트웨이 디바이스에 의해, 상기 디렉토리 서비스로부터, 상기 모바일 디바이스의 사용자와 연관된 부가 데이터를 수신하는 단계로서, 상기 인증 토큰을 생성하는 단계는 상기 사용자 식별자 및 상기 디렉토리 서비스로부터 수신된 상기 사용자와 연관된 부가 데이터를 사용하여 상기 인증 토큰을 생성하는 단계를 포함하는, 상기 부가 데이터 수신 단계를 더 포함하는, 방법.
  12. 장치에 있어서,
    프로세서; 및
    컴퓨터-실행 가능한 지시들을 저장한 메모리로서, 상기 컴퓨터 실행 가능한 지시들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    모바일 디바이스 상에서 운용하는 애플리케이션으로부터, 상기 장치 및 상기 모바일 디바이스 상에서 운용하는 애플리케이션 사이에서의 보안 통신 터널을 통해, 클라이언트 인증서를 포함한 인증 요청을 수신하게 하고;
    상기 클라이언트 인증서로부터, 상기 모바일 디바이스와 연관된 디바이스 식별자를 추출하게 하고;
    디바이스 관리 서버로, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하게 하는 것으로서, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청은 상기 모바일 디바이스와 연관된 상기 디바이스 식별자를 포함하는, 상기 요청 송신하게 하기;
    상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 상기 요청을 송신하는 것에 응답하여, 상기 디바이스 관리 서버로부터, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시를 수신하게 하며;
    상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시에 기초하여, 상기 모바일 디바이스 상에서 운용하는 애플리케이션과 연관된 서비스로의 액세스를 상기 모바일 디바이스 상에서 운용하는 애플리케이션에게 승인할지를 결정하게 하는, 상기 메모리를 포함하는, 장치.
  13. 청구항 12에 있어서,
    상기 메모리는 컴퓨터-실행 가능한 지시들을 저장하며, 상기 컴퓨터-실행 가능한 지시들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    상기 서비스로의 액세스를 승인하도록 결정한 후, 상기 모바일 디바이스와 연관된 캐시된 인증 데이터를 검색하게 하고;
    상기 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성하게 하며;
    상기 모바일 디바이스로, 상기 인증 토큰을 송신하게 하는, 장치.
  14. 청구항 13에 있어서,
    상기 인증 토큰은 상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션과 연관된 서비스를 액세스하기 위해 상기 모바일 디바이스에 의해 사용되도록 구성되는, 장치
  15. 청구항 12에 있어서,
    상기 메모리는 컴퓨터-실행 가능한 지시들을 저장하며, 상기 컴퓨터-실행 가능한 지시들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    상기 모바일 디바이스와 연관된 인증 데이터가 상기 장치에 캐시되지 않음을 결정하게 하고;
    상기 인증 데이터가 상기 장치에 캐시되지 않음을 결정하는 것에 응답하여, 상기 모바일 디바이스로, 아이덴티티 제공자 디바이스로부터의 상기 인증 데이터에 대한 요청을 송신하게 하고;
    상기 모바일 디바이스로부터, 상기 아이덴티티 제공자 디바이스를 통해, 상기 모바일 디바이스와 연관된 상기 인증 데이터를 수신하게 하며;
    상기 모바일 디바이스와 연관된 상기 인증 데이터를 캐시하게 하는, 장치.
  16. 청구항 15에 있어서,
    상기 메모리는 컴퓨터-실행 가능한 지시들을 저장하며, 상기 컴퓨터-실행 가능한 지시들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    상기 모바일 디바이스와 연관된 상기 캐시된 인증 데이터를 검색하게 하고;
    상기 캐시된 인증 데이터를 사용하여, 인증 토큰을 생성하게 하며;
    상기 모바일 디바이스로, 상기 인증 토큰을 송신하게 하는, 장치.
  17. 청구항 12에 있어서,
    상기 메모리는 컴퓨터-실행 가능한 지시들을 저장하며, 상기 컴퓨터-실행 가능한 지시들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    상기 서비스로의 액세스를 승인하도록 결정한 후, 상기 클라이언트 인증서로부터, 상기 모바일 디바이스의 사용자와 연관된 사용자 식별자를 추출하게 하고;
    상기 사용자 식별자를 사용하여, 인증 토큰을 생성하게 하며;
    상기 모바일 디바이스로, 상기 인증 토큰을 송신하게 하는, 장치.
  18. 시스템에 있어서,
    모바일 디바이스로서:
    프로세서; 및
    컴퓨터-실행 가능한 지시들을 저장한 메모리로서, 상기 컴퓨터-실행 가능한 지시들은 상기 모바일 디바이스의 프로세서에 의해 실행될 때, 상기 모바일 디바이스로 하여금:
    상기 모바일 디바이스 상에서 운용하는 애플리케이션 및 컴퓨팅 디바이스 사이에 보안 통신 터널을 수립하게 하며;
    상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션으로부터, 상기 보안 통신 터널을 통해, 상기 컴퓨팅 디바이스로, 클라이언트 인증서를 포함한 인증 요청을 송신하게 하는, 상기 메모리를 포함한, 상기 모바일 디바이스; 및
    상기 컴퓨팅 디바이스로서:
    프로세서; 및
    컴퓨터-실행 가능한 지시들을 저장한 메모리로서, 상기 컴퓨터 실행 가능한 지시들은, 상기 컴퓨팅 디바이스의 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금:
    상기 모바일 디바이스 상에서 운용하는 상기 애플리케이션으로부터, 상기 보안 통신 터널을 통해, 상기 클라이언트 인증서를 포함한 인증 요청을 수신하게 하고;
    상기 클라이언트 인증서로부터, 상기 모바일 디바이스와 연관된 디바이스 식별자를 추출하게 하고;
    디바이스 관리 서버로, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하게 하는 것으로서, 상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청은 상기 모바일 디바이스와 연관된 상기 디바이스 식별자를 포함하는, 상기 요청 송신하게 하기;
    상기 모바일 디바이스가 보안 정책들이 호환하는지를 결정하기 위한 요청을 송신하는 것에 응답하여, 상기 디바이스 관리 서버로부터, 상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시를 수신하게 하며;
    상기 모바일 디바이스가 보안 정책들이 호환하는지에 대한 표시에 기초하여, 상기 모바일 디바이스 상에서 운용하는 애플리케이션과 연관된 서비스로의 액세스를 상기 모바일 디바이스 상에서 운용하는 애플리케이션에게 승인할지를 결정하게 하는, 상기 메모리를 포함한, 상기 컴퓨팅 디바이스를 포함하는, 시스템.
  19. 청구항 18에 있어서,
    상기 보안 통신 터널을 수립하는 것은:
    상기 모바일 디바이스 상에서 운용하는 애플리케이션에 의해, 상기 컴퓨팅 디바이스를 액세스하기 위한 요청을 검출하는 것;
    터널링 애플리케이션에 의해, 상기 컴퓨팅 디바이스를 액세스하기 위한 요청을 인터셉트하는 것; 및
    상기 터널링 애플리케이션에 의해 및 상기 클라이언트 인증서를 사용하여, 상기 모바일 디바이스 상에서 운용하는 애플리케이션 및 상기 컴퓨팅 디바이스 사이에 상기 보안 통신 채널을 수립하는 것을 포함하는, 시스템.
  20. 청구항 18에 있어서,
    상기 보안 통신 터널을 수립하는 것은, 상기 서비스의 서비스 제공자로부터, 요청에 응답하여, 상기 인증 요청을 상기 컴퓨팅 디바이스로 리다이렉트시키기 위해 수행되는, 시스템.
KR1020180115172A 2017-09-27 2018-09-27 클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스 KR102188919B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/716,871 2017-09-27
US15/716,871 US9948612B1 (en) 2017-09-27 2017-09-27 Secure single sign on and conditional access for client applications

Publications (2)

Publication Number Publication Date
KR20190036504A true KR20190036504A (ko) 2019-04-04
KR102188919B1 KR102188919B1 (ko) 2020-12-09

Family

ID=61873169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180115172A KR102188919B1 (ko) 2017-09-27 2018-09-27 클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스

Country Status (5)

Country Link
US (3) US9948612B1 (ko)
EP (1) EP3462759B1 (ko)
JP (2) JP6731023B2 (ko)
KR (1) KR102188919B1 (ko)
CN (1) CN109558721B (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102181608B1 (ko) * 2020-05-08 2020-11-24 한국과학기술정보연구원 연합 인증 장치 및 그것의 연합 인증 방법
KR102204143B1 (ko) * 2019-09-24 2021-01-18 프라이빗테크놀로지 주식회사 터널 기반 접속성 관리 방법 및 그를 위한 장치 및 시스템
US11082256B2 (en) 2019-09-24 2021-08-03 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11190494B2 (en) 2019-09-24 2021-11-30 Pribit Technology, Inc. Application whitelist using a controlled node flow
US11271777B2 (en) 2019-09-24 2022-03-08 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
KR20220064676A (ko) 2020-11-12 2022-05-19 김정호 Fido 방식 기반 통합 인증 관리 시스템 및 방법
KR20220066692A (ko) 2020-11-16 2022-05-24 김정호 업무 포탈의 통합 인증 관리 시스템 및 방법
US11381557B2 (en) 2019-09-24 2022-07-05 Pribit Technology, Inc. Secure data transmission using a controlled node flow
KR20220165303A (ko) * 2021-06-07 2022-12-15 한국전자통신연구원 원격업무용 사용자 단말의 보안성 보장을 위한 원격업무환경 구축 방법 및 이를 이용한 장치
WO2023033588A1 (ko) * 2021-09-03 2023-03-09 프라이빗테크놀로지 주식회사 가상화 단말에서 데이터 플로우를 제어하기 위한 시스템 및 그에 관한 방법
US11652801B2 (en) 2019-09-24 2023-05-16 Pribit Technology, Inc. Network access control system and method therefor

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
US10147984B2 (en) 2015-07-31 2018-12-04 SynCells, Inc. Portable and modular energy storage for multiple applications
US10523660B1 (en) 2016-05-13 2019-12-31 MobileIron, Inc. Asserting a mobile identity to users and devices in an enterprise authentication system
WO2017197400A1 (en) * 2016-05-13 2017-11-16 Mobile Iron, Inc. Unified vpn and identity based authentication to cloud-based services
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP4300160A2 (en) 2016-12-30 2024-01-03 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11125461B2 (en) 2017-06-13 2021-09-21 Gerard O'Hora Smart vent system with local and central control
US11394573B2 (en) 2017-06-13 2022-07-19 SynCells, Inc. Energy virtualization layer with a universal smart gateway
US11271766B2 (en) * 2017-06-13 2022-03-08 SynCells, Inc. Energy virtualization layer with a universal smart gateway
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
US9948612B1 (en) * 2017-09-27 2018-04-17 Citrix Systems, Inc. Secure single sign on and conditional access for client applications
KR102596429B1 (ko) 2017-12-10 2023-10-30 매직 립, 인코포레이티드 광학 도파관들 상의 반사―방지 코팅들
KR20200100720A (ko) 2017-12-20 2020-08-26 매직 립, 인코포레이티드 증강 현실 뷰잉 디바이스용 인서트
US10755676B2 (en) 2018-03-15 2020-08-25 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
CN112236713B (zh) 2018-05-30 2023-01-24 奇跃公司 紧凑的可变聚焦配置
WO2019231850A1 (en) 2018-05-31 2019-12-05 Magic Leap, Inc. Radar head pose localization
WO2019236495A1 (en) 2018-06-05 2019-12-12 Magic Leap, Inc. Homography transformation matrices based temperature calibration of a viewing system
WO2019237099A1 (en) 2018-06-08 2019-12-12 Magic Leap, Inc. Augmented reality viewer with automated surface selection placement and content orientation placement
WO2020010097A1 (en) 2018-07-02 2020-01-09 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
WO2020010226A1 (en) 2018-07-03 2020-01-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
EP3827224B1 (en) 2018-07-24 2023-09-06 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
WO2020023543A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Viewing device with dust seal integration
EP3831058A4 (en) 2018-08-02 2022-04-20 Magic Leap, Inc. VIEWING SYSTEM WITH PUPILE DISTANCE COMPENSATION BASED ON HEAD MOVEMENT
CN112789544B (zh) 2018-08-03 2023-06-30 奇跃公司 图腾在用户交互系统中的融合姿势的基于未融合姿势的漂移校正
CN109257209A (zh) * 2018-09-04 2019-01-22 山东浪潮云投信息科技有限公司 一种数据中心服务器集中管理系统及方法
EP3881279A4 (en) 2018-11-16 2022-08-17 Magic Leap, Inc. IMAGE SIZE-TRIGGERED CLARIFICATION TO MAINTAIN IMAGE SHARPNESS
CN109617907B (zh) * 2019-01-04 2022-04-08 平安科技(深圳)有限公司 认证方法、电子装置及计算机可读存储介质
US11190521B2 (en) * 2019-01-18 2021-11-30 Vmware, Inc. TLS policy enforcement at a tunnel gateway
US10944743B2 (en) * 2019-01-22 2021-03-09 Adp, Llc Rich communication services security authentication system
JP7273523B2 (ja) * 2019-01-25 2023-05-15 株式会社東芝 通信制御装置および通信制御システム
EP4369151A2 (en) 2019-02-06 2024-05-15 Magic Leap, Inc. Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors
US11375043B2 (en) * 2019-03-06 2022-06-28 Citizen Watch Co., Ltd. Program management system, external device and terminal device for controlling a program developer's ability to access, publish and manage marketing of a program
US11818129B2 (en) * 2019-03-07 2023-11-14 Lookout, Inc. Communicating with client device to determine security risk in allowing access to data of a service provider
JP2022523852A (ja) 2019-03-12 2022-04-26 マジック リープ, インコーポレイテッド 第1および第2の拡張現実ビューア間でのローカルコンテンツの位置合わせ
CN113632437B (zh) * 2019-03-29 2023-05-30 Abb瑞士股份有限公司 工业物联网中的安全远程连接
JP2022530900A (ja) * 2019-05-01 2022-07-04 マジック リープ, インコーポレイテッド コンテンツプロビジョニングシステムおよび方法
NL2023545B1 (en) * 2019-07-22 2021-02-10 Mobuyou B V A computer implemented method of authorizing a user of a communication device access to restricted content on a server.
WO2021021670A1 (en) 2019-07-26 2021-02-04 Magic Leap, Inc. Systems and methods for augmented reality
CN110557320B (zh) * 2019-09-11 2022-01-28 太仓市同维电子有限公司 基于家庭智能网关实现vpn插件海淘加速功能的系统及其方法
CN110535884B (zh) * 2019-09-26 2021-10-22 招商局金融科技有限公司 跨企业系统间访问控制的方法、装置及存储介质
EP3817327A1 (en) * 2019-10-28 2021-05-05 Lookout Inc. Monitoring security of a client device to provide continuous conditional server access
EP4058979A4 (en) 2019-11-15 2023-01-11 Magic Leap, Inc. VIEWING SYSTEM FOR USE IN A SURGICAL ENVIRONMENT
CN111125674B (zh) * 2019-12-20 2022-03-22 中国银联股份有限公司 开放式数据处理系统、开放式数据系统及数据处理方法
CN113127223B (zh) * 2019-12-31 2022-10-11 武汉斗鱼鱼乐网络科技有限公司 一种Windows客户端程序模块间的加密数据传输的方法和装置
US11425098B2 (en) * 2020-02-28 2022-08-23 Cisco Technology, Inc. Streamlined authentication and authorization for virtual private network tunnel establishment
CN111416822B (zh) * 2020-03-20 2022-10-18 数篷科技(深圳)有限公司 访问控制的方法、电子设备和存储介质
CN111988314A (zh) * 2020-08-19 2020-11-24 杭州铂钰信息科技有限公司 一种动态部署网络安全服务的系统架构及其方法
US11457008B2 (en) * 2020-10-13 2022-09-27 Cisco Technology, Inc. Steering traffic on a flow-by-flow basis by a single sign-on service
CN112383557B (zh) * 2020-11-17 2023-06-20 北京明朝万达科技股份有限公司 一种安全接入网关及工业设备通信管理方法
US11610011B2 (en) * 2021-01-29 2023-03-21 Akamai Technologies, Inc. Secure transfer of data between programs executing on the same end-user device
CN113114638A (zh) * 2021-03-26 2021-07-13 湖南和信安华区块链科技有限公司 联盟链的访问和验证方法及系统
US11909723B2 (en) * 2021-06-15 2024-02-20 Microsoft Technology Licensing, Llc Mobile VPN autostart through app-only management
CN113422768B (zh) * 2021-06-21 2022-05-31 深圳竹云科技有限公司 零信任中的应用接入方法、装置及计算设备
CN113691378A (zh) * 2021-08-24 2021-11-23 平安国际智慧城市科技股份有限公司 基于网关的Oauth2单点登录方法、装置、电子设备及存储介质
US20230068880A1 (en) * 2021-08-27 2023-03-02 EMC IP Holding Company LLC Function-based service framework with trusted execution platform
CN114422212A (zh) * 2021-12-31 2022-04-29 中煤科工集团信息技术有限公司 一种工业互联网装置云连接方法、系统及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160219060A1 (en) * 2015-01-26 2016-07-28 Mobile Iron, Inc. Identity proxy to provide access control and single sign on

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100759489B1 (ko) * 2004-11-18 2007-09-18 삼성전자주식회사 이동통신망에서 공개키 기반구조를 이용한 아이피보안터널의 보안 방법 및 장치
IL177904A0 (en) * 2006-09-05 2007-07-04 Worklight Ltd Secured web syndication
US8990910B2 (en) * 2007-11-13 2015-03-24 Citrix Systems, Inc. System and method using globally unique identities
US9781148B2 (en) * 2008-10-21 2017-10-03 Lookout, Inc. Methods and systems for sharing risk responses between collections of mobile communications devices
CN101431517B (zh) * 2008-12-08 2011-04-27 西安西电捷通无线网络通信股份有限公司 一种基于三元对等鉴别的可信网络连接握手方法
EP2334034B1 (en) * 2009-11-11 2018-06-27 BlackBerry Limited Using a trusted token and push for validating the request for single sign on
KR101630755B1 (ko) * 2010-01-15 2016-06-15 삼성전자주식회사 모바일 디바이스 간 보안 통신 방법 및 장치
EP2355439A1 (en) * 2010-02-02 2011-08-10 Swisscom AG Accessing restricted services
US8549300B1 (en) * 2010-02-23 2013-10-01 Juniper Networks, Inc. Virtual single sign-on for certificate-protected resources
CN102333090A (zh) * 2011-09-28 2012-01-25 辽宁国兴科技有限公司 一种内控堡垒主机及安全访问内网资源的方法
CN102710605A (zh) * 2012-05-08 2012-10-03 重庆大学 一种云制造环境下的信息安全管控方法
US9690920B2 (en) * 2012-08-30 2017-06-27 International Business Machines Corporation Secure configuration catalog of trusted identity providers
CN104904178B (zh) * 2012-10-15 2018-09-25 思杰系统有限公司 提供虚拟专用网络隧道的方法和设备及计算机可读介质
US8910239B2 (en) * 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US20140109171A1 (en) * 2012-10-15 2014-04-17 Citrix Systems, Inc. Providing Virtualized Private Network tunnels
US9264905B2 (en) * 2013-02-21 2016-02-16 Digi International Inc. Establishing secure connection between mobile computing device and wireless hub using security credentials obtained from remote security credential server
US9098687B2 (en) * 2013-05-03 2015-08-04 Citrix Systems, Inc. User and device authentication in enterprise systems
US9363251B2 (en) * 2013-10-01 2016-06-07 Google Technology Holdings LLC Systems and methods for credential management between electronic devices
US9450955B2 (en) * 2014-01-13 2016-09-20 Oracle International Corporation Authenticator for user state management
US9584515B2 (en) * 2014-04-30 2017-02-28 Citrix Systems, Inc. Enterprise system authentication and authorization via gateway
US10021088B2 (en) * 2014-09-30 2018-07-10 Citrix Systems, Inc. Fast smart card logon
US9882887B2 (en) * 2015-06-15 2018-01-30 Airwatch Llc Single sign-on for managed mobile devices
US9948612B1 (en) * 2017-09-27 2018-04-17 Citrix Systems, Inc. Secure single sign on and conditional access for client applications

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160219060A1 (en) * 2015-01-26 2016-07-28 Mobile Iron, Inc. Identity proxy to provide access control and single sign on

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102204143B1 (ko) * 2019-09-24 2021-01-18 프라이빗테크놀로지 주식회사 터널 기반 접속성 관리 방법 및 그를 위한 장치 및 시스템
US11082256B2 (en) 2019-09-24 2021-08-03 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11190494B2 (en) 2019-09-24 2021-11-30 Pribit Technology, Inc. Application whitelist using a controlled node flow
US11271777B2 (en) 2019-09-24 2022-03-08 Pribit Technology, Inc. System for controlling network access of terminal based on tunnel and method thereof
US11381557B2 (en) 2019-09-24 2022-07-05 Pribit Technology, Inc. Secure data transmission using a controlled node flow
US11652801B2 (en) 2019-09-24 2023-05-16 Pribit Technology, Inc. Network access control system and method therefor
KR102181608B1 (ko) * 2020-05-08 2020-11-24 한국과학기술정보연구원 연합 인증 장치 및 그것의 연합 인증 방법
KR20220064676A (ko) 2020-11-12 2022-05-19 김정호 Fido 방식 기반 통합 인증 관리 시스템 및 방법
KR20220066692A (ko) 2020-11-16 2022-05-24 김정호 업무 포탈의 통합 인증 관리 시스템 및 방법
KR20220165303A (ko) * 2021-06-07 2022-12-15 한국전자통신연구원 원격업무용 사용자 단말의 보안성 보장을 위한 원격업무환경 구축 방법 및 이를 이용한 장치
US11784978B2 (en) 2021-06-07 2023-10-10 Electronics And Telecommunications Research Institute Method for establishing remote work environment to ensure security of remote work user terminal and apparatus using the same
WO2023033588A1 (ko) * 2021-09-03 2023-03-09 프라이빗테크놀로지 주식회사 가상화 단말에서 데이터 플로우를 제어하기 위한 시스템 및 그에 관한 방법

Also Published As

Publication number Publication date
CN109558721B (zh) 2023-08-08
CN109558721A (zh) 2019-04-02
US10218679B1 (en) 2019-02-26
EP3462759B1 (en) 2021-12-08
JP2020166906A (ja) 2020-10-08
US10992473B2 (en) 2021-04-27
EP3462759A1 (en) 2019-04-03
US20190149514A1 (en) 2019-05-16
US9948612B1 (en) 2018-04-17
KR102188919B1 (ko) 2020-12-09
JP6731023B2 (ja) 2020-07-29
JP6987931B2 (ja) 2022-01-05
JP2019079504A (ja) 2019-05-23

Similar Documents

Publication Publication Date Title
KR102188919B1 (ko) 클라이언트 애플리케이션들에 대한 보안 싱글 사인 온 및 조건부 액세스
US11706205B2 (en) Extending single-sign-on to relying parties of federated logon providers
US10609560B2 (en) Using derived credentials for enrollment with enterprise mobile device management services
JP6539357B2 (ja) ハイブリッドクラウドサービスのためのパスワードの暗号化
KR101722631B1 (ko) 프록시를 사용하여 자원들에의 보안 액세스
US11652613B2 (en) Secure information exchange in federated authentication
KR20160010600A (ko) 모바일 애플리케이션 관리를 위한 모바일 애플리케이션의 아이덴티티 검증
US20220094547A1 (en) Enhanced token transfer
US11366883B2 (en) Reflection based endpoint security test framework
US11722461B2 (en) Connecting client devices to anonymous sessions via helpers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant