KR102282656B1 - 컴퓨터 서브네트워크들 내의 프록시 서버들 - Google Patents

컴퓨터 서브네트워크들 내의 프록시 서버들 Download PDF

Info

Publication number
KR102282656B1
KR102282656B1 KR1020177010222A KR20177010222A KR102282656B1 KR 102282656 B1 KR102282656 B1 KR 102282656B1 KR 1020177010222 A KR1020177010222 A KR 1020177010222A KR 20177010222 A KR20177010222 A KR 20177010222A KR 102282656 B1 KR102282656 B1 KR 102282656B1
Authority
KR
South Korea
Prior art keywords
message
processing
determining
proxy server
policy
Prior art date
Application number
KR1020177010222A
Other languages
English (en)
Other versions
KR20170063724A (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 오라클 인터내셔날 코포레이션
Priority to KR1020217022779A priority Critical patent/KR102357697B1/ko
Publication of KR20170063724A publication Critical patent/KR20170063724A/ko
Application granted granted Critical
Publication of KR102282656B1 publication Critical patent/KR102282656B1/ko

Links

Images

Classifications

    • H04L67/28
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • 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/0209Architectural arrangements, e.g. perimeter networks or demilitarized zones
    • 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/0281Proxies
    • 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
    • H04L63/105Multiple levels of security
    • 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
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1045Proxies, e.g. for session initiation protocol [SIP]
    • H04L65/105
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Abstract

본 발명의 실시예들은 컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하기 위한 기술들을 포함한다. 일부 실시예들에 있어서, 다양한 유형들의 웹 서비스들, 애플리케이션들, 및 다른 웹 컨텐트에 대한 요청들 및 응답들과 같은 메시지들이 복수의 컴퓨터 네트워크들 사이에서 송신될 수 있다. 물리적인 또는 논리적인 서브네트워크 내에 구현된 프록시 서버와 같은 하나 이상의 중간 디바이스들 또는 애플리케이션들이 통신 엔드포인트들 사이에서 메시지들을 수신하고, 프로세싱하며, 송신할 수 있다. 일부 실시예들에 있어서, 프록시 서버는 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성될 수 있으며, 이는 내부 컴퓨터 네트워크의 다양한 웹 애플리케이션들 및/또는 서비스들을 외부 컴퓨터 네트워크들에 노출시킬 수 있다. 이러한 프록시 서버는 다양한 메시지 특성들 및 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트에 기초하여 메시지들을 프로세싱하기 위한 특정 정책들을 선택할 수 있다. 메시지에 적용될 특정 정책들을 선택한 이후에, 프록시 서버는 정책들에 따라 메시지를 프로세싱하고 그 메시지를 그것의 의도된 목적지로 포워딩할 수 있다.

Description

컴퓨터 서브네트워크들 내의 프록시 서버들{PROXY SERVERS WITHIN COMPUTER SUBNETWORKS}
관련 출원들
본 출원은, "MOBILE SECURITY ACCESS SERVER(MSAS)"라는 명칭으로 2014년 09월 24일자로 출원된 미국 가특허 출원번호 제62/054,613호의 이익 및 우선권을 주장하는, "PROXY SERVERS WITHIN COMPUTER SUBNETWORKS"라는 명칭으로 2015년 04월 24일자로 출원된 미국 정규 특허 출원번호 제14/696,186호의 이익 및 우선권을 주장한다. 이상에서 식별된 특허 출원들의 전체 내용들은 모든 목적들을 위하여 본원에 참조로서 통합된다.
본 개시는 전반적으로 보안 서비스들을 제공하기 위한 시스템들, 방법들 및 기계-판독가능 매체들에 관한 것이다. 보다 더 구체적으로, 본 개시는, 다른 것들 중에서도 특히 인증, 인가, 감사, 싱글 사인 온(single sign on), 보안 정책 집행, 키 관리 및 분배, 보안 통신, 보안 데이터 저장, 및 보안 데이터 공유를 포함하는, 모바일 디바이스와 기업 애플리케이션들 사이의 연결에 대한 보안 서비스를 제공하기 위한 시스템들, 방법들, 및 기계-판독가능 매체들에 관한 것이다.
본원에서 설명되는 측면들은 컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하기 위한 다양한 기술들을 제공한다. 일부 실시예들에 있어서, 다양한 유형들의 웹 서비스들, 애플리케이션들, 및 다른 웹 컨텐트에 대한 요청들 및 응답들과 같은 메시지들이 복수의 컴퓨터 네트워크들 사이에서 송신될 수 있다. 물리적인 또는 논리적인 서브네트워크(subnetwork) 내에 구현된 프록시 서버(proxy server)와 같은 하나 이상의 중간 디바이스들 또는 애플리케이션들이 통신 엔드포인트(endpoint)들 사이에서 메시지들을 수신하고, 프로세싱하며, 송신할 수 있다. 예를 들어, 프록시 서버는 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성될 수 있으며, 이는 내부 컴퓨터 네트워크의 다양한 웹 애플리케이션들 및/또는 서비스들을 외부 컴퓨터 네트워크들에 노출시킬 수 있다.
특정 실시예들에 있어서, 프록시 서버는 내부 네트워크 내의 엔드포인트로부터 외부 시스템 내의 엔드포인트로 또는 외부 시스템 내의 엔드포인트로부터 내부 네트워크 내의 엔드포인트로 송신되는 메시지를 수신할 수 있다. 메시지는, 메시지의 의도된 목적지를 결정하기 위하여, 및/또는 메시지를 프로세싱할 때 프록시 서버가 포워드(forward) 프록시 또는 리버스(reverse) 프록시로서 역할해야 하는지 여부를 결정하기 위하여 분석될 수 있다. 추가적으로, 프록시 서버는 특정 메시지들을 프로세싱하기 위한 엔드-투-엔드(end-to-end) 정책 모델과 같은 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정할 수 있다. 메시지의 분석들 및 미리 결정된 프로세싱 흐름 내의 현재 포인트에 기초하여, 프록시 서버는 메시지에 적용될 하나 이상의 정책들을 선택할 수 있다. 이러한 정책들은, 예를 들어, 메시지들을 인증하고, 보안 토큰 중재(security token mediation) 및 키 관리를 제공하며, 프로토콜 및 페이로드(payload) 중재를 수행하고, 디바이스-기반 보안을 수행하며, 비무장 지대(demilitarized zone; DMZ) 위협 보호를 지원하고, 및 유사한 것을 수행하기 위한 보안 정책들뿐만 아니라 다른 통신 관리 정책들을 포함할 수 있다. 메시지에 적용될 특정 정책들을 선택한 이후에, 프록시 서버는 정책들에 따라 메시지를 프로세싱하고 그 메시지를 그것의 의도된 목적지로 포워딩할 수 있다.
추가로, 본원에서 논의되는 예들이 예시하는 바와 같이, 다양한 실시예들은, 메시지의 엔드-투-엔드 프로세싱 흐름의 전체에 걸쳐 다양하고 상이한 프로세싱 포인트들에서 DMZ 또는 다른 논리적인 또는 물리적인 서브네트워크 내에서, 상이한 보안 정책들 및 다른 통신 관리 정책들이 적용될 수 있는 동적 정책 모델들을 지원할 수 있다. 이러한 동적 정책 모델 프레임워크(framework)들은, 통신 엔드포인트들 내에서 가능하지 않을 수 있거나 또는 바람직하지 않을 수 있는 다양한 유형들의 컴퓨터 네트워크 및 시스템 보안 및 다른 통신 정책들을 구축하고 구현하기 위하여 사용될 수 있다.
도 1은 그 내부에서 본 발명의 다양한 실시예들이 구현될 수 있는 예시적인 분산형 시스템의 컴포넌트들을 예시하는 블록도이다.
도 2는, 본 발명의 실시예들에 의해 제공되는 서비스들이 이에 의해 클라우드 서비스들로서 제공될 수 있는 시스템 환경의 컴포넌트들을 예시하는 블록도이다.
도 3은 그 내부에서 본 발명의 다양한 실시예들이 구현될 수 있는 예시적인 컴퓨터 시스템을 예시하는 블록도이다.
도 4는, 본 발명의 하나 이상의 실시예들에 따른, 컴퓨팅 디바이스들 및/또는 시스템들 사이에서 메시지들을 프로세싱하고 송신하기 위한 프록시 서버를 포함하는 컴퓨팅 환경을 고-레벨로 예시하는 블록도이다.
도 5는, 본 발명의 하나 이상의 실시예들에 따른, 선택된 메시지 프로세싱 정책들을 사용하여 메시지들을 수신하고 프로세싱하기 위한 프로세스를 예시하는 순서도이다.
도 6a 및 도 6b는, 본 발명의 하나 이상의 실시예들에 따른 미리 결정된 메시지 프로세싱 흐름들의 예들을 예시하는 마크업 언어 문서들이다.
도 7a 내지 도 7d는 본 발명의 하나 이상의 실시예들에 따른 하나 이상의 메시지 프로세싱 흐름들 내의 상이한 포인트들에 대응하는 메시지 프로세싱 정책들의 예시적인 템플릿(template)들을 예시하는 마크업 언어 문서들이다.
도 8은 본 발명의 하나 이상의 실시예들에 따른, 외부 클라이언트 디바이스로부터 내부 웹 서비스로 전송된 웹 서비스 요청의 엔드-투-엔드 프로세싱 흐름을 예시하는 순서도이다.
도 9는, 본 발명의 하나 이상의 실시예들에 따른, 내부 클라이언트 디바이스로부터 외부 웹 서비스 또는 애플리케이션으로 전송된 웹 서비스 또는 애플리케이션 요청의 엔드-투-엔드 프로세싱 흐름을 예시하는 순서도이다.
다음의 설명에 있어서, 예시의 목적들을 위하여, 다수의 특정 세부사항들이 본 발명의 다양한 실시예들의 완전한 이해를 제공하기 위하여 기술된다. 그러나, 본 발명의 실시예들이 이러한 특정 상세내용들 중 일부가 없이 실시될 수 있다는 것이 당업자에게 자명할 것이다. 다른 사례들에 있어, 잘 알려진 구조들 및 디바이스들은 블록도의 형태로 도시된다.
다음의 설명은 오로지 예시적인 실시예들만을 제공하며, 본 개시의 범위, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적인 실시예들의 다음의 설명은 당업자들에게 예시적인 실시예를 구현하기 위한 사용 가능한 설명을 제공할 것이다. 첨부된 청구항들에 기술되는 바와 같은 본 발명의 사상 및 범위로부터 벗어나지 않고 엘리먼트들의 기능 및 배열에 있어서 다양한 변화들이 이루어질 수 있다는 것이 이해되어야만 한다.
다음의 설명에 있어서, 다수의 특정 세부사항들이 실시예들의 철저한 이해를 제공하기 위하여 주어진다. 그러나, 실시예들이 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 당업자에게 이해될 것이다. 예를 들어, 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 불필요한 세부사항으로 실시예들을 모호하지 않게 하기 위하여 블록도 형태의 컴포넌트들로서 도시될 수 있다. 다른 경우들에 있어서, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기술들은 실시예들을 모호하게 하는 것을 회피하기 위하여 불필요한 세부사항 없이 도시될 수 있다.
또한, 개별적인 실시예들이 순서도, 흐름도, 데이터 흐름도, 구조도, 또는 블록도로서 도시되는 프로세스로서 설명될 수 있다는 것을 주의해야 한다. 순서도가 순차적인 프로세스로서 동작들을 설명할 수 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 이에 더하여, 동작들의 순서는 재-배열될 수 있다. 그것의 동작이 완료될 때 프로세스가 종료되지만, 이는 도면에는 포함되지 않은 추가적인 단계들을 가질 수 있다. 프로세스는, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 프로세스의 종료는 호출 함수 또는 메인 함수에 대한 함수의 반환(return)에 대응할 수 있다.
용어 "컴퓨터-판독가능 매체"는 비제한적으로, 휴대용 또는 고정형 저장 디바이스들, 광 저장 디바이스들, 및 명령어(들) 및/또는 데이터를 저장, 포함 또는 운반할 수 있는 다양한 다른 매체들과 같은 비-일시적인 매체들을 포함한다. 코드 세그먼트(code segment) 또는 컴퓨터-실행가능 명령어들은, 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령어들, 데이터 구조들, 또는 프로그램 명령문들의 임의의 조합을 나타낼 수 있다. 코드 세그먼트는, 정보, 데이터, 인수들, 파라미터들, 또는 메모리 컨텐츠를 전달하거나 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은, 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달되거나, 포워딩되거나, 또는 송신될 수 있다.
추가로, 실시예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 태스크(task)들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 기계 판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 태스크들을 수행할 수 있다.
컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하기 위한 다양한 기술들(예를 들어, 방법들, 시스템들, 하나 이상의 프로세스들에 의해 실행가능한 복수의 명령어들을 저장하는 비-일시적 컴퓨터-판독가능 저장 메모리, 등)이 본원에서 설명된다. 일부 실시예들에 있어서, 다양한 유형들의 웹 서비스들, 애플리케이션들, 및 다른 웹 컨텐트에 대한 요청들 및 응답들과 같은 메시지들이 복수의 컴퓨터 네트워크들 사이에서 송신될 수 있다. 물리적인 또는 논리적인 서브네트워크 내에 구현된 프록시 서버와 같은 하나 이상의 중간 디바이스들 또는 애플리케이션들이 통신 엔드포인트들 사이에서 메시지들을 수신하고, 프로세싱하며, 송신할 수 있다. 예를 들어, 프록시 서버는 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성될 수 있으며, 이는 내부 컴퓨터 네트워크의 다양한 웹 애플리케이션들 및/또는 서비스들을 외부 컴퓨터 네트워크들에 노출시킬 수 있다.
일부 실시예들에 있어서, 프록시 서버는 내부 네트워크 내의 엔드포인트로부터 외부 시스템 내의 엔드포인트로 또는 외부 시스템 내의 엔드포인트로부터 내부 네트워크 내의 엔드포인트로 송신되는 메시지를 수신할 수 있다. 메시지는, 메시지의 의도된 목적지를 결정하기 위하여, 및/또는 메시지를 프로세싱할 때 프록시 서버가 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하기 위하여 분석될 수 있다. 추가적으로, 프록시 서버는 특정 메시지들을 프로세싱하기 위한 엔드-투-엔드 정책 모델과 같은 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정할 수 있다. 메시지의 분석들 및 미리 결정된 프로세싱 흐름 내의 현재 포인트에 기초하여, 프록시 서버는 메시지에 적용될 하나 이상의 정책들을 선택할 수 있다. 이러한 정책들은, 예를 들어, 메시지들을 인증하고, 보안 토큰 중재 및 키 관리를 제공하며, 프로토콜 및 페이로드 중재를 수행하고, 디바이스-기반 보안을 수행하며, 비무장 지대 위협 보호를 지원하고, 및 유사한 것을 수행하기 위한 보안 정책들뿐만 아니라 다른 통신 관리 정책들을 포함할 수 있다. 메시지에 적용될 특정 정책들을 선택한 이후에, 프록시 서버는 정책들에 따라 메시지를 프로세싱하고 그 메시지를 그것의 의도된 목적지로 포워딩할 수 있다. 이제 본 발명의 실시예들의 다양한 추가적인 세부사항들이 도면들을 참조하여 이하에서 설명될 것이다.
도 1은 그 내부에서 본 발명의 다양한 실시예들이 구현될 수 있는 예시적인 분산형 시스템의 컴포넌트들을 예시하는 블록도이다. 예시된 실시예에 있어서, 분산형 시스템(100)은, 하나 이상의 네트워크(들)(110)를 통해 웹 브라우저, 사유 클라이언트(proprietary client)(예를 들어, 오라클 폼스(Oracle Forms)), 또는 유사한 것과 같은, 클라이언트 애플리케이션을 실행하고 동작시키도록 구성된 하나 이상의 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및 108)을 포함한다. 서버(112)는 네트워크(110)를 통해 원격 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및 108)과 통신가능하게 결합될 수 있다.
다양한 실시예들에 있어서, 서버(112)는 시스템의 하나 이상의 컴포넌트들에 의해 제공되는 하나 이상의 서비스들 또는 소프트웨어 애플리케이션들을 실행하도록 맞춰질 수 있다. 일부 실시예들에 있어서, 이러한 서비스들은 웹-기반으로 또는 클라우드 서비스들로서 또는 서비스형 소프트웨어(Software as a Service; SaaS) 모델 하에서 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및/또는 108)의 사용자들에게 제공될 수 있다. 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및/또는 108)을 조작하는 사용자들은 결과적으로 이러한 컴포넌트들에 의해 제공되는 서비스들을 사용하기 위하여 서버(112)와 상호작용하는 하나 이상의 클라이언트 애플리케이션들을 사용할 수 있다.
도면에 도시된 구성에 있어서, 시스템(100)의 소프트웨어 컴포넌트들(118, 120 및 122)은 서버(112) 상에서 구현되는 것으로 도시된다. 다른 실시예들에 있어서, 시스템(100)의 컴포넌트들 및/또는 이러한 컴포넌트들에 의해 제공되는 서비스들 중 하나 이상이 또한 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및/또는 108) 중 하나 이상에 의해 구현될 수 있다. 그러면, 클라이언트 컴퓨팅 디바이스들을 조작하는 사용자들은 이러한 컴포넌트들에 의해 제공되는 서비스들을 사용하기 위하여 하나 이상의 클라이언트 애플리케이션들을 사용할 수 있다. 이러한 컴포넌트들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합들로 구현될 수 있다. 분산형 시스템(100)과 상이할 수 있는 다양하고 상이한 시스템 구성들이 가능하다는 것이 이해되어야만 한다. 따라서, 도면에 도시된 실시예는 일 실시예의 시스템을 구현하기 위한 분산형 시스템의 일 예이며, 제한하는 것으로 의도되지 않는다.
클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및/또는 108)은, Microsoft Windows Mobile® 및/또는 iOS, Windows Phone, Android, BlackBerry 10, Palm OS, 및 유사한 것과 같은 다양한 모바일 운영 시스템들과 같은 소프트웨어를 실행하며, 인터넷, e-메일, 단문 메시지 서비스(short message service; SMS), Blackberry®, 또는 다른 통신 프로토콜 가능형(enabled)일 수 있는, 휴대용 핸드헬드 디바이스들(예를 들어, iPhone®, 셀룰러 전화기, iPad®, 컴퓨팅 태블릿, 개인용 정보 단말기(personal digital assistant; PDA)) 또는 웨어러블(wearable) 디바이스들(예를 들어, Google Glass® 머리 착용형 디스플레이(head mounted display))일 수 있다. 클라이언트 컴퓨팅 디바이스들은, 예로서, 다양한 버전들의 Microsoft Windows®, Apple Macintosh®, 및/또는 리눅스 운영 시스템들을 실행하는 개인용 컴퓨터들 및/또는 랩탑 컴퓨터들을 포함하는 범용 개인용 컴퓨터들일 수 있다. 클라이언트 컴퓨팅 디바이스들은, 비제한적으로, 예를 들어, 구글 크롬 OS와 같은 다양한 GNU/리눅스 운영 시스템들을 포함하는, 다양한 상용-이용가능 UNIX® 또는 UNIX-유사 운영 시스템들 중 임의의 것을 실행하는 워크스테이션 컴퓨터들일 수 있다. 대안적으로 또는 추가적으로, 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및 108)은, 네트워크(들)(110)를 통해 통신할 수 있는 임의의 다른 전자 디바이스, 예컨대 씬-클라이언트(thin-client) 컴퓨터, 인터넷-가능형 게이밍 시스템(예를 들어, Kinect® 제스처 입력 디바이스를 갖는 또는 이를 갖지 않는 마이크로소프트 Xbox 게이밍 콘솔), 및/또는 개인용 메시징 디바이스일 수 있다.
예시적인 분산형 시스템(100)이 4개의 클라이언트 컴퓨팅 디바이스들과 함께 도시되지만, 임의의 수의 클라이언트 컴퓨팅 디바이스들이 지원될 수 있다. 센서들 등을 갖는 디바이스들과 같은 다른 디바이스들이 서버(112)와 상호작용할 수 있다.
분산형 시스템(100)의 네트워크(들)(110)는, 비제한적으로, TCP/IP(transmission control protocol/Internet protocol), SNA(systems network architecture), IPX(Internet packet exchange), 애플 토크(AppleTalk), 및 유사한 것을 포함하는 다양한 상용-이용가능 프로토콜들 중 임의의 것을 사용하여 데이터 통신을 지원할 수 있는 당업자들에게 익숙한 임의의 유형의 네트워크일 수 있다. 단지 예로서, 네트워크(들)(110)는 근거리 네트워크(LAN), 예컨대 이더넷, 토큰-링 및/또는 유사한 것 기반의 근거리 네트워크일 수 있다. 네트워크(들)(110)는 광역 네트워크 및 인터넷일 수 있다. 이는, 비제한적으로 가상 사설 네트워크(virtual private network; VPN)를 포함하는 가상 네트워크, 인트라넷, 엑스트라넷, 공중 교환 전화 네트워크(public switched telephone network; PSTN), 적외선 네트워크, 무선 네트워크(예를 들어, 전기 전자 기술자 협회(Institute of Electrical and Electronics; IEEE) 802.11 프로토콜들의 묶음(suite), Bluetooth®, 및/또는 임의의 다른 무선 프로토콜 중 임의의 것 하에서 동작하는 네트워크); 및/또는 이들 및/또는 다른 네트워크들의 임의의 조합을 포함할 수 있다.
서버(112)는, 하나 이상의 범용 컴퓨터들, 전용 서버 컴퓨터들(예로서, PC(personal computer) 서버들, UNIX® 서버들, 중급 서버(mid-range server)들, 메인프레임 컴퓨터들, 랙-장착형 서버들, 등을 포함함), 서버 팜(server farm)들, 서버 클러스터(server cluster)들, 또는 임의의 다른 적절한 배열 및/또는 조합으로 구성될 수 있다. 다양한 실시예들에 있어서, 서버(112)는 이상의 개시에서 설명된 하나 이상의 서비스들 또는 소프트웨어 애플리케이션들을 실행하도록 맞춰질 수 있다. 예를 들어, 서버(112)는 본 개시의 일 실시예에 따른 이상에서 설명된 프로세싱을 수행하기 위한 서버에 대응할 수 있다.
서버(112)는, 임의의 상용 이용가능 서버 운영 시스템뿐만 아니라 이상에서 논의된 것들 중 임의의 것을 포함하는 운영 시스템을 실행할 수 있다. 서버(112)는 또한, HTTP(hypertext transport protocol) 서버들, FTP(file transfer protocol) 서버들, CGI(common gateway interface) 서버들, JAVA® 서버들, 데이터베이스 서버들, 및 유사한 것을 포함하는 다양한 추가적인 서버 애플리케이션들 및/또는 중간-계층(mid-tier) 애플리케이션들 중 임의의 것을 실행할 수 있다. 예시적인 데이터베이스 서버들은 비제한적으로, 오라클, 마이크로소프트, 사이베이스, IBM(International Business Machines), 및 유사한 것으로부터 상용적으로 이용가능한 것들을 포함한다.
일부 구현예들에 있어서, 서버(112)는, 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및 108)의 사용자들로부터 수신되는 데이터 피드(data feed)들 및/또는 이벤트 업데이트들을 분석하고 통합하기 위한 하나 이상의 애플리케이션들을 포함할 수 있다. 일 예로서, 데이터 피드들 및/또는 이벤트 업데이트들은 비제한적으로, Twitter® 피드들, Facebook® 업데이트들 또는 하나 이상의 제 3 자 정보 소스들 및 연속적인 데이터 스트림들로부터 수신되는 실-시간 업데이트들을 포함할 수 있으며, 이들은 센서 데이터 애플리케이션들, 금융 시세표시기들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림(clickstream) 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것과 연관된 실-시간 이벤트들을 포함할 수 있다. 서버(112)는 또한 클라이언트 컴퓨팅 디바이스들(102, 104, 106, 및 108)의 하나 이상의 디스플레이 디바이스들을 통해 데이터 피드들 및/또는 실-시간 이벤트들을 디스플레이하기 위한 하나 이상의 애플리케이션을 포함할 수 있다.
분산형 시스템(100)은 또한 하나 이상의 데이터베이스들(114 및 116)을 포함할 수 있다. 데이터베이스들(114 및 116)은 다양한 위치들에 존재할 수 있다. 예로서, 데이터베이스들(114 및 116) 중 하나 이상은 서버(112)에 대하여 로컬적인 (및/또는 그 내부에 존재하는) 비-일시적인 저장 매체 상에 존재할 수 있다. 대안적으로, 데이터베이스들(114 및 116)은 서버(112)로부터 원격에 존재할 수 있으며, 네트워크-기반 또는 전용 연결을 통해 서버(112)와 통신할 수 있다. 실시예들의 하나의 세트에 있어서, 데이터베이스들(114 및 116)은 저장-영역 네트워크(storage-area network; SAN) 내에 존재할 수 있다. 유사하게, 서버(112)에 기인하는 기능들을 수행하기 위하여 필요한 임의의 파일들이 적절하게 서버(112) 상에 로컬적으로 및/또는 원격적으로 저장될 수 있다. 실시예들의 하나의 세트에 있어서, 데이터베이스들(114 및 116)은, SQL-포맷형 명령들에 응답하여 데이터를 저장, 업데이트, 및 검색하도록 맞춰진 오라클에 의해 제공되는 데이터베이스들과 같은 관계형 데이터베이스를 포함할 수 있다.
도 2는, 본 발명의 실시예들에 의해 제공되는 서비스들이 이에 의해 클라우드 서비스들로서 제공될 수 있는 시스템 환경의 컴포넌트들을 예시하는 블록도이다. 예시된 실시예에 있어서, 시스템 환경(200)은, 클라우드 서비스들을 제공하는 클라우드 인프라스트럭처 시스템(202)과 상호작용하기 위해 사용자들에 의해 사용될 수 있는 하나 이상의 클라이언트 컴퓨팅 디바이스들(204, 206, 및 208)을 포함한다. 클라이언트 컴퓨팅 디바이스들은, 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들을 사용하기 위하여 클라이언트 컴퓨팅 디바이스의 사용자에 의해 클라우드 인프라스트럭처 시스템(202)과 상호작용하기 위해 사용될 수 있는 웹 브라우저, 사유 클라이언트 애플리케이션(예를 들어, 오라클 폼스), 또는 어떤 다른 애플리케이션과 같은 클라이언트 애플리케이션을 동작시키도록 구성될 수 있다.
도면에 도시된 클라우드 인프라스트럭처 시스템(202)이 도시된 것들과는 다른 컴포넌트들을 가질 수 있다는 것이 이해되어야만 한다. 추가로, 도면에 도시된 실시예는 본 발명의 일 실시예를 통합할 수 있는 클라우드 인프라스트럭처 시스템의 단지 하나의 예이다. 일부 다른 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)은 도면에 도시된 것보다 더 많거나 또는 더 적은 컴포넌트들을 가질 수 있거나, 2개 이상의 컴포넌트들을 결합할 수 있거나, 또는 컴포넌트들의 상이한 구성 또는 배열을 가질 수 있다.
클라이언트 컴퓨팅 디바이스들(204, 206, 및 208)은 102, 104, 106, 및 108에 대하여 이상에서 설명된 것들과 유사한 디바이스들일 수 있다.
예시적인 시스템 환경(200)이 3개의 클라이언트 컴퓨팅 디바이스들과 함께 도시되지만, 임의의 수의 클라이언트 컴퓨팅 디바이스들이 지원될 수 있다. 센서들 등을 갖는 디바이스들과 같은 다른 디바이스들이 클라우드 인프라스트럭처 시스템(202)과 상호작용할 수 있다.
네트워크(들)(210)는 클라이언트들(204, 206, 및 208)과 클라우드 인프라스트럭처 시스템(202) 사이의 데이터의 교환 및 통신을 가능하게 할 수 있다. 각각의 네트워크는, 네트워크(들)(110)에 대하여 이상에서 설명된 것들을 포함하여, 다양한 상용-이용가능 프로토콜들 중 임의의 프로토콜을 사용하여 데이터 통신을 지원할 수 있는 당업자들에게 익숙한 임의의 유형의 네트워크일 수 있다.
클라우드 인프라스트럭처 시스템(202)은 서버(112)에 대하여 이상에서 설명된 것들을 포함할 수 있는 하나 이상의 서버들 및/또는 컴퓨터들을 포함할 수 있다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템에 의해 제공되는 서비스들은, 온 디맨드(on demand) 식으로 클라우드 인프라스트럭처 시스템의 사용자들이 이용할 수 있게 되는 서비스들, 예컨대 온라인 데이터 저장 및 백업(backup) 솔루션들, 웹-기반-이메일 서비스들, 호스팅형(hosted) 오피스 제품군(suite)들 및 문서 협업 서비스들, 데이터베이스 프로세싱, 관리형 기술 지원 서비스들, 및 유사한 것의 호스트를 포함할 수 있다. 클라우드 인프라스트럭처 시스템에 의해 제공되는 서비스들은 그 사용자들의 요구들을 충족시키기 위하여 동적으로 스케일링(scale)할 수 있다. 클라우드 인프라스트럭처 시스템에 의해 제공되는 서비스의 특정 인스턴스 생성(instantiation)은 본원에서 "서비스 인스턴스"로서 지칭된다. 일반적으로, 클라우드 서비스 제공자의 시스템으로부터 인터넷과 같은 통신 네트워크를 통해 사용자가 이용할 수 있게 된 임의의 서비스는 "클라우드 서비스"로서 지칭된다. 전형적으로, 공중 클라우드 환경에 있어서, 클라우드 서비스 제공자의 시스템을 구성하는 서버들 및 시스템들은 고객의 자체적인 사내(on-premise) 서버들 및 시스템들과는 상이하다. 예를 들어, 클라우드 서비스 제공자의 시스템은 애플리케이션을 호스팅할 수 있으며, 사용자는, 인터넷과 같은 통신 네트워크를 통해 애플리케이션을 온 디맨드식으로, 주문 및 사용할 수 있다.
일부 예들에 있어서, 컴퓨터 네트워크 클라우드 인프라스트럭처 내의 서비스는, 클라우드 판매사에 의해 사용자에게 제공되는 저장소, 호스팅형 데이터베이스, 호스팅형 웹 서버, 소프트웨어 애플리케이션, 또는 다른 서비스, 또는 달리 당업계에 알려진 바와 같은 서비스에 대한 보호형(protected) 컴퓨터 네트워크 액세스를 포함할 수 있다. 예를 들어, 서비스는 인터넷을 통한 클라우드 상의 원격 저장소에 대한 패스워드-보호형 액세스를 포함할 수 있다. 다른 예로서, 서비스는, 네트워크화된 개발자들에 의한 사적인 사용(private use)을 위한 웹 서비스-기반 호스팅형 관계형 데이터베이스 및 스크립트-언어 미들웨어 엔진을 포함할 수 있다. 또 다른 예로서, 서비스는 클라우드 판매사의 웹 사이트 상에서 호스팅되는 이메일 소프트웨어 애플리케이션에 대한 액세스를 포함할 수 있다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)은, 셀프-서비스(self-service)의, 가입-기반(subscription-based)의, 탄력적 스케일러블(scalable)의, 신뢰할 수 있는, 고도로 이용가능하며, 안전한 방식으로 고객에게 전달되는 애플리케이션들, 미들웨어, 및 데이터베이스 서비스 제공(offering)들의 묶음을 포함할 수 있다. 이러한 클라우드 인프라스트럭처 시스템의 일 예는 본 양수인에 의해 제공되는 오라클 퍼블릭 클라우드(Oracle Public Cloud)이다.
다양한 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)은, 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들에 대한 고객의 가입(subscription)을 자동으로 프로비저닝(provision)하고, 관리하며, 추적하도록 맞춰질 수 있다. 클라우드 인프라스트럭처 시스템(202)은 상이한 배포(deployment) 모델들을 통해 클라우드 서비스들을 제공할 수 있다. 예를 들어, 서비스들은, 클라우드 인프라스트럭처 시스템(202)이 클라우드 서비스 판매 조직에 의해 소유되며(예를 들어, 오라클에 의해 소유되며) 서비스들이 일반적인 공중 또는 상이한 산업 기업들에게 이용가능하게 되는 공중 클라우드 모델 하에서 제공될 수 있다. 다른 예로서, 서비스들은, 클라우드 인프라스트럭처 시스템(202)이 오로지 단일 조직을 위해서만 운용되며, 조직 내의 하나 이상의 엔티티(entity)들에 대하여 서비스들을 제공할 수 있는 사설 클라우드 모델 하에서 제공될 수 있다. 클라우드 서비스들은 또한, 클라우드 인프라스트럭처 시스템(202) 및 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들이 연관된 커뮤니티(community) 내의 몇몇 조직들에 의해 공유되는 커뮤니티 클라우드 모델 하에서 제공될 수 있다. 클라우드 서비스들은 또한 2개 이상의 상이한 모델들의 조합인 하이브리드(hybrid) 클라우드 모델 하에서 제공될 수 있다.
일부 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들은, 서비스형 소프트웨어(SaaS) 카테고리, 서비스형 플랫폼(Platform as a Service; PaaS) 카테고리, 서비스형 인프라스트럭처(Infrastructure as a Service; IaaS) 카테고리, 또는 하이브리드 서비스들을 포함하는 서비스들의 다른 카테고리들 하에서 제공되는 하나 이상의 서비스들을 포함할 수 있다. 가입 주문을 통해, 고객은 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 하나 이상의 서비스들을 주문할 수 있다. 그러면, 클라우드 인프라스트럭처 시스템(202)은 고객의 가입 주문의 서비스들을 제공하기 위하여 프로세싱을 수행한다.
일부 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들은, 비제한적으로, 애플리케이션 서비스들, 플랫폼 서비스들 및 인프라스트럭처 서비스들을 포함할 수 있다. 일부 예들에 있어서, 애플리케이션 서비스들은 클라우드 인프라스트럭처 시스템에 의해 SaaS 플랫폼을 통해 제공될 수 있다. SaaS 플랫폼은 SaaS 카테고리에 속하는 클라우드 서비스들을 제공하도록 구성될 수 있다. 예를 들어, SaaS 플랫폼은 통합형 개발 및 배포 플랫폼 상에 온-디맨드 애플리케이션들의 묶음을 구축하고 전달하기 위한 능력들을 제공할 수 있다. SaaS 플랫폼은 SaaS 서비스들을 제공하기 위한 기초 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. SaaS 플랫폼에 의해 제공되는 서비스들을 이용함으로써, 고객들은 클라우드 인프라스트럭처 시스템 상에서 실행되는 애플리케이션들을 이용할 수 있다. 고객들이 별개의 라이센스들 및 지원을 구매할 필요 없이, 고객들이 애플리케이션 서비스들을 획득할 수 있다. 다양하고 상이한 SaaS 서비스들이 제공될 수 있다. 예들은, 비제한적으로, 판매 실적 관리, 기업 통합, 더 큰 조직들을 위한 비지니스 유연성을 위한 솔루션들을 제공하는 서비스들을 포함한다.
일부 실시예들에 있어서, 플랫폼 서비스들은 클라우드 인프라스트럭처 시스템에 의해 PaaS 플랫폼을 통해 제공될 수 있다. PaaS 플랫폼은 PaaS 카테고리에 속하는 클라우드 서비스들을 제공하도록 구성될 수 있다. 플랫폼 서비스들의 예들은, 비제한적으로, 조직들(예컨대 오라클)이 기존의 애플리케이션들을 공유되는 공통 아키텍처 상에 통합하는 것을 가능하게 하는 서비스들뿐만 아니라, 플랫폼에 의해 제공되는 공유되는 서비스들을 레버리징(leverage)하는 새로운 애플리케이션들을 구축하기 위한 능력을 포함할 수 있다. PaaS 플랫폼은 PaaS 서비스들을 제공하기 위한 기초 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. 고객들이 별개의 라이센스들 및 지원을 구매할 필요 없이, 고객들이 클라우드 인프라스트럭처 시스템에 의해 제공되는 PaaS 서비스들을 획득할 수 있다. 플랫폼 서비스들의 예들은, 비제한적으로, 오라클 자바 클라우드 서비스(Java Cloud Service; JCS), 오라클 데이터베이스 클라우드 서비스(Database Cloud Service; DBCS), 및 다른 것들을 포함한다.
PaaS 플랫폼에 의해 제공되는 서비스들을 이용함으로써, 고객들은 클라우드 인프라스트럭처 시스템에 의해 지원되는 프로그래밍 언어들 및 툴들을 이용할 수 있으며, 또한 배포된 서비스들을 제어할 수 있다. 일부 실시예들에 있어서, 클라우드 인프라스트럭처 시스템에 의해 제공되는 플랫폼 서비스들은, 데이터베이스 클라우드 서비스들, 미들웨어 클라우드 서비스들(예를 들어, 오라클 퓨전 미들웨어(Fusion Middleware) 서비스들), 및 자바 클라우드 서비스들을 포함할 수 있다. 일 실시예에 있어서, 데이터베이스 클라우드 서비스들은, 조직들이 데이터베이스 자원들을 풀링(pool)하고 고객들에게 데이터베이스 클라우드의 형태로 서비스형 데이터베이스를 제공하는 것을 가능하게 하는 공유형 서비스 배포 모델들을 지원할 수 있다. 클라우드 인프라스트럭처 시스템 내에서, 미들웨어 클라우드 서비스들은 고객들이 다양한 비지니스 애플리케이션들을 개발 및 배포하기 위한 플랫폼을 제공할 수 있으며, 자바 클라우드 서비스들은 고객들이 자바 애플리케이션들을 배포하기 위한 플랫폼을 제공할 수 있다.
다양하고 상이한 인프라스트럭처 서비스들이 클라우드 인프라스트럭처 시스템 내에서 IaaS 플랫폼에 의해 제공될 수 있다. 인프라스트럭처 서비스들은, SaaS 플랫폼 및 PaaS 플랫폼에 의해 제공되는 서비스들을 사용하는 고객들을 위한 저장소, 네트워크들, 및 다른 기본 컴퓨팅 자원들과 같은 기초 컴퓨팅 자원들의 관리 및 제어를 가능하게 한다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)은 또한, 클라우드 인프라스트럭처 시스템의 고객들에게 다양한 서비스들을 제공하기 위하여 사용되는 자원들을 제공하기 위한 인프라스트럭처 자원들(230)을 포함할 수 있다. 일 실시예에 있어서, 인프라스트럭처 자원들(230)은, 서버들, 저장소와 같은 하드웨어, 및 PaaS 플랫폼 및 SaaS 플랫폼에 의해 제공되는 서비스들을 실행하기 위한 네트워킹 자원들의 사전-통합되고 최적화된 조합들을 포함할 수 있다.
일부 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202) 내의 자원들은 다수의 사용자들에 의해 공유될 수 있으며, 요구마다 동적으로 재-할당될 수 있다. 추가적으로, 자원들은 상이한 시간 구간(time zone)들에서 사용자들에게 할당될 수 있다. 예를 들어, 클라우드 인프라스트럭처 시스템(230)은, 제 1 시간 구간에서의 제 1 세트의 사용자들이 지정된 시간 동안 클라우드 인프라스트럭처 시스템의 자원들을 사용하는 것을 가능하게 하고, 그런 다음 상이한 시간 구간에 위치된 다른 세트의 사용자들에게 동일한 자원들의 재-할당을 가능하게 할 수 있으며, 그럼으로써 자원들의 사용을 최대화한다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)의 상이한 컴포넌트들 또는 모듈들에 의해 그리고 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들에 의해 공유되는 복수의 내부 공유형 서비스들(232)이 제공될 수 있다. 이러한 내부 공유형 서비스들은, 비제한적으로, 보안 및 신원(identity) 서비스, 통합 서비스, 기업 저장소 서비스, 기업 관리자 서비스, 바이러스 스캐닝 및 화이트 리스트(white list) 서비스, 고 이용가능성, 백업 및 복원 서비스, 클라우드 지원을 가능하게 하기 위한 서비스, 이메일 서비스, 통지 서비스, 파일 전송 서비스, 및 유사한 것을 포함할 수 있다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(202)은 클라우드 인프라스트럭처 시스템 내에서 클라우드 서비스들(예를 들어, SaaS, PaaS, 및 IaaS 서비스들)의 광범위한 관리를 제공할 수 있다. 일 실시예에 있어서, 클라우드 관리 기능은, 클라우드 인프라스트럭처 시스템(202)에 의해 수신되는 고객의 가입을 프로비저닝, 관리 및 추적, 및 유사한 것을 하기 위한 성능들을 포함할 수 있다.
일 실시예에 있어서, 도면에 도시된 바와 같이, 클라우드 관리 기능은, 주문 관리 모듈(220), 주문 편성(order orchestration) 모듈(222), 주문 프로비저닝 모듈(224), 주문 관리 및 모니터링 모듈(226), 및 신원 관리 모듈(228)과 같은 하나 이상의 모듈들에 의해 제공될 수 있다. 이러한 모듈들은, 범용 컴퓨터들, 특수 서버 컴퓨터들, 서버 팜들, 서버 클러스터들, 또는 임의의 다른 적절한 배열 및/또는 조합일 수 있는 하나 이상의 컴퓨터들 및/또는 서버들을 포함하거나 또는 이들을 사용하여 제공될 수 있다.
예시적인 동작(234)에 있어서, 클라이언트 디바이스(204, 206 또는 208)와 같은 클라이언트 디바이스를 사용하는 고객은, 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 하나 이상의 서비스들을 요청하고 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 하나 이상의 서비스들에 대한 가입을 주문함으로써 클라우드 인프라스트럭처 시스템(202)과 상호작용할 수 있다. 특정 실시예들에 있어서, 고객은 클라우드 사용자 인터페이스(User Interface; UI), 클라우드 UI(212), 클라우드 UI(214) 및/또는 클라우드 UI(216)를 액세스할 수 있으며, 이러한 UI들을 통해 가입을 주문할 수 있다. 고객이 주문하는 것에 응답하여 클라우드 인프라스트럭처 시스템(202)에 의해 수신되는 주문 정보는, 고객이 가입을 의도하는 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 하나 이상의 서비스들 및 고객을 식별하는 정보를 포함할 수 있다.
고객에 의해 주문된 이후에, 주문 정보가 클라우드 UI들(212, 214 및/또는 216)을 통해 수신된다.
동작(236)에서, 주문은 주문 데이터베이스(218)에 저장된다. 주문 데이터베이스(218)는 클라우드 인프라스트럭처 시스템(218)에 의해 동작되는 그리고 다른 시스템 엘리먼트들과 관련되어 동작되는 몇몇 데이터베이스들 중 하나일 수 있다.
동작(238)에서, 주문 정보가 주문 관리 모듈(220)로 포워딩된다. 일부 경우들에 있어서, 주문 관리 모듈(220)은, 주문을 검증하는 것, 및 검증 시에 주문을 예약(book)하는 것과 같은 주문과 관련된 과금 및 회계 기능들을 수행하도록 구성될 수 있다.
동작(240)에서, 주문에 관한 정보가 주문 편성 모듈(222)로 통신된다. 주문 편성 모듈(222)은, 고객에 의해 이루어진 주문에 대한 자원들 및 서비스들의 프로비저닝을 편성하기 위하여 주문 정보를 사용할 수 있다. 일부 경우들에 있어서, 주문 편성 모듈(222)은 가입된 서비스들을 지원하기 위하여 주문 프로비저닝 모듈(224)의 서비스들을 사용하여 자원들의 프로비저닝을 편성할 수 있다.
특정 실시예들에 있어서, 주문 편성 모듈(222)은 각각의 주문과 연관된 비지니스 프로세스들의 관리를 가능하게 하며, 주문이 프로비저닝으로 진행되어야만 하는지 여부를 결정하기 위하여 비지니스 로직을 적용한다. 동작(242)에서, 새로운 가입에 대한 주문의 수신 시에, 주문 편성 모듈(222)은 자원들을 할당하고 가입 주문을 이행하기 위해 요구되는 이러한 자원들을 구성하기 위한 요청을 주문 프로비저닝 모듈(224)로 전송한다. 주문 프로비저닝 모듈(224)은 고객에 의해 주문된 서비스들에 대한 자원들의 할당을 가능하게 한다. 주문 프로비저닝 모듈(224)은, 요청된 서비스들을 제공하기 위한 자원들을 프로비저닝하기 위해 사용되는 물리적인 구현 계층과 클라우드 인프라스트럭처 시스템(200)에 의해 제공되는 클라우드 서비스들 사이에 소정의 레벨의 추상화를 제공한다. 따라서, 주문 편성 모듈(222)은, 예컨대 서비스들 및 자원들이 실제로 즉각적으로(on the fly) 프로비저닝되는지 또는 사전-프로비저닝되고 요청 시에 할당(allocate)되고/배정(assign)되는지 여부와 같은 구현 세부사항들로부터 분리될 수 있다.
동작(244)에서, 일단 서비스들 및 자원들이 프로비저닝되면, 제공되는 서비스의 통지가 클라우드 인프라스트럭처 시스템(202)의 주문 프로비저닝 모듈(224)에 의해 클라이언트 디바이스들(204, 206, 및/또는 208) 상의 고객들에게 전송될 수 있다.
동작(246)에서, 고객의 가입 주문은 주문 관리 및 모니터링 모듈(226)에 의해 관리되고 추적될 수 있다. 일부 경우들에 있어서, 주문 관리 및 모니터링 모듈(226)은, 사용되는 저장소의 양, 전송되는 데이터의 양, 사용자들의 수, 및 시스템 사용 시간(system up time)과 시스템 정지 시간(system down time)의 양과 같은 가입 주문의 서비스들에 대한 사용 통계자료를 수집하도록 구성될 수 있다.
특정 실시예들에 있어서, 클라우드 인프라스트럭처 시스템(200)은 신원 관리 모듈(228)을 포함할 수 있다. 신원 관리 모듈(228)은, 클라우드 인프라스트럭처 시스템(200) 내에서 액세스 관리 및 인가 서비스들과 같은 신원 서비스들을 제공하도록 구성될 수 있다. 일부 실시예들에 있어서, 신원 관리 모듈(228)은 클라우드 인프라스트럭처 시스템(202)에 의해 제공되는 서비스들을 사용하기를 원하는 고객들에 관한 정보를 제어할 수 있다. 이러한 정보는, 이러한 고객들의 신원들을 인증하는 정보 및 이러한 고객들이 다양한 시스템 자원들(예를 들어, 파일들, 디렉토리들, 애플리케이션들, 통신 포트들, 메모리 세그먼트들, 등)과 관련하여 수행하도록 인가되는 액션들을 설명하는 정보를 포함할 수 있다. 신원 관리 모듈(228)은 또한 각각의 고객에 대한 설명 정보(descriptive information) 및 설명 정보가 어떻게 그리고 누구에 의해 액세스되고 수정될 수 있는지에 대한 관리를 포함할 수 있다.
도 3은 그 내부에서 본 발명의 다양한 실시예들이 구현될 수 있는 예시적인 컴퓨터 시스템을 예시하는 블록도이다. 시스템(300)은 이상에서 설명된 컴퓨터 시스템들 중 임의의 것을 구현하기 위하여 사용될 수 있다. 도면에 도시된 바와 같이, 컴퓨터 시스템(300)은 버스 서브시스템(302)을 통해 복수의 주변 서브시스템들과 통신하는 프로세싱 유닛(304)을 포함한다. 이러한 주변 서브시스템들은 프로세싱 가속 유닛(306), I/O 서브시스템(308), 저장 서브시스템(318) 및 통신 서브시스템(324)을 포함할 수 있다. 저장 서브시스템(318)은 유형적인 컴퓨터-판독가능 저장 매체(322) 및 시스템 메모리(310)를 포함한다.
버스 서브시스템(302)은 컴퓨터 시스템(300)의 다양한 컴포넌트들 및 서브시스템들이 의도된 바와 같이 서로 통신하는 것을 가능하게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(302)이 단일 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예들은 복수의 버스들을 사용할 수 있다. 버스 서브시스템(302)은, 다양한 버스 아키텍처들 중 임의의 것을 사용하는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 및 로컬 버스를 포함하는 몇몇 유형들의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 이러한 아키텍처들은, 산업 표준 아키텍처(Industry Standard Architecture; ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture; MCA) 버스, 개량 ISA(Enhanced ISA; EISA) 버스, 비디오 전자공학 표준 위원회(Video Electronics Standards Association; VESA) 로컬 버스, 및 주변 컴포넌트 상호연결(Peripheral Component Interconnect; PCI) 버스를 포함할 수 있으며, 이들은 IEEE P1386.1 표준에 대하여 제조되는 메자닌 버스(Mezzanine bus)로서 구현될 수 있다.
하나 이상의 집적 회로들(예를 들어, 통상적인 마이크로프로세서 또는 마이크로제어기)로서 구현될 수 있는 프로세싱 유닛(304)은 컴퓨터 시스템(300)의 동작을 제어한다. 하나 이상의 프로세서들이 프로세싱 유닛(304) 내에 포함될 수 있다. 이러한 프로세서들은 단일 코어 또는 다중코어 프로세서들을 포함할 수 있다. 특정 실시예들에 있어서, 프로세싱 유닛(304)은 각각의 프로세싱 유닛 내에 포함된 단일 또는 다중코어 프로세서들을 갖는 하나 이상의 독립적인 프로세싱 유닛들(332 및/또는 334)로서 구현될 수 있다. 다른 실시예들에 있어서, 프로세싱 유닛(304)은 또한 2개의 듀얼-코어 프로세서들을 단일 칩 내에 통합함으로써 형성된 쿼드-코어 프로세싱 유닛으로서 구현될 수 있다.
다양한 실시예들에 있어서, 프로세싱 유닛(304)은 프로그램 코드에 응답하여 다양한 프로그램들을 실행할 수 있으며, 프로그램들 또는 프로세스들의 동시 다중 실행을 유지할 수 있다. 임의의 주어진 시점에, 실행될 프로그램 코드의 전부 또는 일부가 프로세서(들)(304) 내에 및/또는 저장 서브시스템(318) 내에 상주할 수 있다. 적절한 프로그래밍을 통하여, 프로세서(들)(304)는 이상에서 설명된 다양한 기능들을 제공할 수 있다. 컴퓨터 시스템(300)은, 디지털 신호 프로세서(digital signal processor; DSP), 특수-목적 프로세서, 및/또는 유사한 것을 포함할 수 있는 프로세싱 가속 유닛(306)을 추가적으로 포함할 수 있다.
I/O 서브시스템(308)은 사용자 인터페이스 입력 디바이스들 및 사용자 인터페이스 출력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 키보드, 포인팅 디바이스들 예컨대 마우스 또는 트랙볼, 터치패드 또는 디스플레이 내에 통합된 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 명령 인식 시스템들을 가진 오디오 입력 디바이스들, 마이크들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 예를 들어, 사용자들이 제스처들 및 구두(spoken) 명령들을 사용하는 자연스러운 사용자 인터페이스를 통해, Microsoft Xbox® 360 게임 제어기와 같은, 입력 디바이스를 제어하고 이와 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서와 같은 모션 센싱 및/또는 제스처 인식 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 사용자들로부터 눈 움직임(eye activity)(예를 들어, 사진을 찍는 동안의 및/또는 메뉴를 선택하는 동안의 '깜박임')을 검출하고 눈 제스처들을 입력 디바이스(예를 들어, Google Glass®) 내로의 입력으로서 변환하는 Google Glass® 눈 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 사용자들이 음성 명령들을 통하여 음성 인식 시스템(예를 들어, Siri® 네비게이터(navigator))과 상호작용하는 것을 가능하게 하는 음성 인식 센싱 디바이스들을 포함할 수 있다.
사용자 인터페이스 입력 디바이스들은 또한, 비제한적으로, 3차원(3D) 마우스들, 조이스틱들 또는 포인팅 스틱들, 게임패드들 및 그래픽 태블릿들, 및 음향/시각 디바이스들 예컨대 스피커들, 디지털 카메라들, 디지털 캠코더들, 휴대용 매체 플레이어들, 웹캠들, 이미지 스캐너들, 핑거프린트 스캐너들, 바코드 리더 3D 스캐너들, 3D 프린터들, 레이저 거리계들, 및 시선 추적 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 예를 들어, 의료 이미징 입력 디바이스들 예컨대 컴퓨터 단층촬영, 자기 공명 이미징, 양전자 방출 단층촬영, 의료 초음파 검사 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 예를 들어, 오디오 입력 디바이스들 예컨대 MIDI 키보드들, 디지털 악기들, 및 유사한 것을 포함할 수 있다.
사용자 인터페이스 출력 디바이스들은 디스플레이 서브시스템, 표시등들, 또는 비-시각적 디스플레이들 예컨대 오디오 출력 디바이스들, 등을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(cathode ray tube; CRT), 액정 디스플레이(liquid crystal display; LCD) 또는 플라즈마 디스플레이를 사용하는 것과 같은 평면-패널 디바이스, 프로젝션 디바이스, 터치 스크린, 및 유사한 것일 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨터 시스템(300)으로부터 사용자 또는 다른 컴퓨터로 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 예를 들어, 사용자 인터페이스 출력 디바이스들은, 비제한적으로, 시각적으로 텍스트, 그래픽들 및 오디오/비디오 정보를 전달하는 다양한 디스플레이 디바이스들, 예컨대 모니터들, 프린터들, 스피커들, 헤드폰들, 자동차 네비게이션 시스템들, 플로터(plotter)들, 음성 출력 디바이스들, 및 모뎀들을 포함할 수 있다.
컴퓨터 시스템(300)은, 시스템 메모리(310) 내에 현재 위치되어 있는 것으로 도시되는 소프트웨어 엘리먼트들을 포함하는 저장 서브시스템(318)을 포함할 수 있다. 시스템 메모리(310)는, 프로세싱 유닛(304) 상에 로딩가능하며 실행가능한 프로그램 명령어들뿐만 아니라 이러한 프로그램들의 실행 동안 생성되는 데이터를 저장할 수 있다.
컴퓨터 시스템(300)의 구성 및 유형에 따라서, 시스템 메모리(310)는 (랜덤 액세스 메모리(random access memory; RAM)와 같은) 휘발성일 수 있거나 및/또는 (판독-전용 메모리(read-only memory; ROM), 플래시 메모리, 등과 같은) 비-휘발성일 수 있다. RAM은 전형적으로 프로세싱 유닛(304)에 의해 현재 실행되고 동작되고 있거나 및/또는 이에 즉시 액세스가능한 데이터 및/또는 프로그램 모듈들을 포함한다. 일부 구현예들에 있어서, 시스템 메모리(310)는 복수의 상이한 유형들의 메모리들, 예컨대 정적 랜덤 액세스 메모리(static random access memory; SRAM) 또는 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)를 포함할 수 있다. 일부 구현예들에 있어서, 예컨대 기동 동안에 컴퓨터 시스템(300) 내의 엘리먼트들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(basic input/output system; BIOS)은 전형적으로 ROM 내에 저장될 수 있다. 예로서 그리고 비제한적으로, 시스템 메모리(310)는 또한, 클라이언트 애플리케이션들, 웹 브라우저들, 중간-계층 애플리케이션들, 관계형 데이터 베이스 관리 시스템(relational database management system; RDBMS)들, 등을 포함할 수 있는 애플리케이션 프로그램들(312), 프로그램 데이터(314), 및 운영 시스템(316)을 예시한다. 예로서, 운영 시스템(316)은, 다양한 버전들의 Microsoft Windows®, Apple Macintosh®, 및/또는 리눅스 운영 시스템들, (비제한적으로 다양한 GNU/리눅스 운영 시스템들, Google Chrome® OS, 및 유사한 것을 포함하는) 다양한 상용-이용가능 UNIX® 또는 UNIX-유사 운영 시스템들 및/또는 모바일 운영 시스템들 예컨대 iOS, Windows® Phone, Android® OS, BlackBerry® 10 OS, 및 Palm® OS 운영 시스템들을 포함할 수 있다.
저장 서브시스템(318)은 또한 일부 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성물들을 저장하기 위한 유형의 컴퓨터-판독가능 저장 매체를 제공할 수 있다. 프로세서에 의해 실행될 때 이상에서 설명된 기능을 제공하는 소프트웨어(프로그램들, 코드 모듈들, 명령어들)가 저장 서브시스템(318) 내에 저장될 수 있다. 이러한 소프트웨어 모듈들 또는 명령어들이 프로세싱 유닛(304)에 의해 실행될 수 있다. 저장 서브시스템(318)은 또한 본 발명에 따라 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다.
저장 서브시스템(300)은 또한, 추가적으로 컴퓨터-판독가능 저장 매체(322)에 연결될 수 있는 컴퓨터-판독가능 저장 매체 리더(320)를 포함할 수 있다. 시스템 메모리(310)와 함께 그리고 선택적으로 이와 조합되어, 컴퓨터-판독가능 저장 매체(322)는, 컴퓨터-판독가능 정보를 일시적으로 및/또는 더 영구적으로 포함하고, 저장하며, 송신하고, 및 검색하기 위한 저장 매체들에 더하여 원격, 로컬, 고정, 및/또는 착탈가능 저장 디바이스들을 포괄적으로 나타낼 수 있다.
코드, 또는 코드의 부분들을 포함하는 컴퓨터-판독가능 저장 매체(322)는 또한, 비제한적으로, 정보의 저장 및/또는 송신을 위하여 임의의 방법 또는 기술로 구현된 휘발성 및 비-휘발성, 착탈가능 및 비-착탈가능 매체와 같은 저장 매체 및 통신 매체를 포함하는 당업계에서 알려지거나 또는 사용되는 임의의 적절한 매체를 포함할 수 있다. 이는 비-일시적이고 유형의 컴퓨터-판독가능 저장 매체, 예컨대 RAM, ROM, 전기 소거가능 프로그램가능 ROM(electronically erasable programmable ROM; EEPROM), 플래시 메모리 또는 다른 메모리 기술품, CD-ROM, 디지털 다기능 디스크(digital versatile disk; DVD), 또는 광 저장장치, 자기 카세트들, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스들, 또는 다른 유형의 컴퓨터 판독가능 매체를 포함할 수 있다. 이는 또한 비유형적인 컴퓨터-판독가능 매체, 예컨대 데이터 신호들, 데이터 송신들, 또는 희망되는 정보를 송신하기 위해 사용될 수 있으며 컴퓨터 시스템(300)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.
예로서, 컴퓨터-판독가능 저장 매체(322)는, 비-착탈가능 비휘발성 자기 매체로부터 판독하거나 또는 이에 기입하는 하드 디스크 드라이브, 착탈가능 비휘발성 자기 디스크로부터 판독하거나 또는 이에 기입하는 자기 디스크 드라이브, 및 착탈가능 비휘발성 광 디스크 예컨대 CD ROM, DVD, 및 Blu-Ray® 디스크, 또는 다른 광 매체로부터 판독하거나 또는 이에 기입하는 광 디스크 드라이브를 포함할 수 있다. 컴퓨터-판독가능 저장 매체(322)는, 비제한적으로, Zip® 드라이브들, 플래시 메모리 카드들, 범용 직렬 버스(universal serial bus; USB) 플래시 드라이브들, 보안 디지털(secure digital; SD) 카드들, DVD 디스크들, 디지털 비디오 테이프, 및 유사한 것을 포함할 수 있다. 컴퓨터-판독가능 저장 매체(322)는 또한, 비-휘발성 메모리 기반 고체-상태 드라이브(solid-state drive; SSD)들 예컨대 플래시-메모리 기반 SSD들, 기업 플래시 드라이브들, 고체 상태 ROM, 및 유사한 것, 휘발성 메모리 기반 SSD들 예컨대 고체 상태 RAM, 동적 RAM, 정적 RAM, DRAM-기반 SSD들, 자기저항성 RAM(magnetoresistive RAM; MRAM) SSD들, 및 DRAM 및 플래시 메모리 기반 SSD들의 조합을 사용하는 하이브리드 SSD들을 포함할 수 있다. 디스크 드라이브들 및 그들의 연관된 컴퓨터-판독가능 매체는 컴퓨터-판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터 시스템(300)에 대한 다른 데이터의 비-휘발성 저장을 제공할 수 있다.
통신 서브시스템(324)은 다른 컴퓨터 시스템들 및 네트워크들에 대한 인터페이스를 제공한다. 통신 서브시스템(324)은 컴퓨터 시스템(300)으로부터 다른 시스템들로 데이터를 송신하고 이로부터 데이터를 수신하기 위한 인터페이스로서 역할한다. 예를 들어, 통신 서브시스템(324)은 컴퓨터 시스템(300)이 인터넷을 통해 하나 이상의 디바이스들에 연결하는 것을 가능하게 할 수 있다. 일부 실시예들에 있어서, 통신 서브시스템(324)은 (예를 들어, 셀룰러 전화기 기술, 진보된 데이터 네트워크 기술, 예컨대 3G, 4G 또는 EDGE(enhanced data rates for global evolution), WiFi(IEEE 802.11 패밀리 표준들, 또는 다른 모바일 통신 기술들, 또는 이들의 임의의 조합)을 사용하여) 무선 음성 및/또는 데이터 네트워크들에 액세스하기 위한 라디오 주파수(radio frequency; RF) 트랜시버 컴포넌트들, 위성 위치확인 시스템(global positioning system; GPS) 수신기 컴포넌트들, 및/또는 다른 컴포넌트들을 포함할 수 있다. 일부 실시예들에 있어서, 통신 서브시스템(324)은 무선 인터페이스에 더하여 또는 그 대신에 유선 네트워크 연결(예를 들어, 이더넷)을 제공할 수 있다.
일부 실시예들에 있어서, 통신 서브시스템(324)은 또한 컴퓨터 시스템(300)을 사용할 수 있는 하나 이상의 사용자들을 대표하여 구조화된 및/또는 구조화되지 않은 데이터 피드들(326), 이벤트 스트림들(328), 이벤트 업데이트들(330), 및 그와 유사한 것의 형태로 입력 통신을 수신할 수 있다.
예로서, 통신 서브시스템(324)은 소셜 네트워크들 및/또는 다른 통신 서비스들의 사용자들로부터의 실-시간 데이터 피드들(326) 예컨대 Twitter® 피드들, Facebook® 업데이트들, 웹 피드들 예컨대 리치 사이트 서머리(Rich Site Summary; RSS) 피드들, 및/또는 하나 이상의 제 3 자 정보 소스들로부터의 실-시간 업데이트들을 수신하도록 구성될 수 있다.
추가적으로, 통신 서브시스템(324)은 또한, 사실상 명시적인 종료를 갖지 않는 제한이 없거나 또는 연속적일 수 있는 실-시간 이벤트들 및/또는 이벤트 업데이트들(330)의 이벤트 스트림들(328)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예들은, 예를 들어, 센서 데이터 애플리케이션들, 금융 시세표시기들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것을 포함할 수 있다.
통신 서브시스템(324)은 또한, 구조화되거나 및/또는 구조화되지 않은 데이터 피드들(326), 이벤트 스트림들(328), 이벤트 업데이트들(330), 및 유사한 것을 컴퓨터 시스템(300)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신할 수 있는 하나 이상의 데이터베이스들로 출력하도록 구성될 수 있다.
컴퓨터 시스템(300)은, 핸드헬드 휴대용 디바이스(예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 웨어러블 디바이스(예를 들어, Google Glass® 머리 착용형 디스플레이), PC, 워크스테이션, 메인프레임, 키오스크, 서버 랙, 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 유형들 중 임의의 유형일 수 있다.
컴퓨터들 및 네트워크들의 계속해서 변화하는 성질에 기인하여, 도면에 도시된 컴퓨터 시스템(300)의 설명은 오로지 특정한 일 예로서만 의도된다. 도면에 도시된 시스템보다 더 많거나 또는 더 적은 컴포넌트들을 갖는 다수의 다른 구성들이 가능하다. 예를 들어, 커스텀화된 하드웨어가 또한 사용될 수 있거나 및/또는 특정 엘리먼트들이 하드웨어, 펌웨어, (애플릿(applet)들을 포함하는) 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 추가로, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다. 본원에 제공되는 개시 및 교시들에 기초하여, 당업자는 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들을 인식할 것이다.
이상에서 소개된 바와 같이, 본 발명의 실시예들은 컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하기 위한 다양한 기술들을 제공한다. 더 구체적으로, 특정 실시예들은 복수의 컴퓨터 네트워크들 사이에서 다양한 유형들의 웹 서비스들, 애플리케이션들, 및 다른 웹 컨텐트에 대한 요청들 및 응답들과 같은 메시지들을 송신하기 위한 기술들을 제공한다. 물리적인 또는 논리적인 서브네트워크 내에 구현된 프록시 서버와 같은 하나 이상의 중간 디바이스들 또는 애플리케이션들이 통신 엔드포인트들 사이에서 메시지들을 수신하고, 프로세싱하며, 송신할 수 있다. 일부 실시예들에 있어서, 프록시 서버들은 내부 네트워크 내의 엔드포인트로부터 외부 시스템 내의 엔드포인트로 또는 외부 시스템 내의 엔드포인트로부터 내부 네트워크 내의 엔드포인트로 송신된 메시지들을 수신할 수 있다. 메시지들은, 메시지의 의도된 목적지를 결정하기 위하여, 및/또는 메시지들을 프로세싱할 때 프록시 서버가 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하기 위하여 분석될 수 있다. 프록시 서버는 또한 특정 메시지들을 프로세싱하기 위해 사용되는 엔드-투-엔드 정책 모델과 같은 메시지들에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정할 수 있다. 메시지들의 분석들 및 미리 결정된 프로세싱 흐름 내의 현재 포인트에 기초하여, 프록시 서버는 메시지들에 적용될 하나 이상의 정책들을 선택할 수 있다. 이러한 정책들은, 예를 들어, 메시지들을 인증하고, 보안 토큰 중재 및 키 관리를 제공하며, 프로토콜 및 페이로드 중재를 수행하고, 디바이스-기반 보안을 수행하며, 비무장 지대 위협 보호를 지원하고, 및 유사한 것을 수행하기 위한 보안 정책들뿐만 아니라 다른 통신 관리 정책들을 포함할 수 있다. 메시지들에 적용될 특정 정책들을 선택한 이후에, 프록시 서버는 정책들에 따라 메시지들을 프로세싱하고 그 메시지들을 그들의 의도된 목적지들로 포워딩할 수 있다.
도 4는 다양한 컴퓨터 네트워크들 내의 컴퓨팅 디바이스들 및/또는 시스템들 사이에서 메시지들을 프로세싱하고 송신하기 위한 프록시 서버(420)를 포함하는 컴퓨팅 환경(400)의 컴포넌트들을 예시하는 블록도이다. 이러한 예에 예시된 컴퓨팅 환경(400)은, 다양한 클라이언트 디바이스들에게 웹 애플리케이션들 및 웹 서비스들과 같은 컴퓨팅 자원들에 대한 액세스를 제공하도록 설계된 고-레벨 컴퓨터아키텍처에 대응할 수 있다. 다양한 실시예들에 있어서, 컴퓨팅 환경(400)은, 다양한 조직들의 컴퓨팅 요구들을 지원하기 위하여 소형의 단순한 컴퓨팅 시스템으로부터 이러한 다른 시스템들과 통합되도록 설계된 하드웨어, 소프트웨어, 및 네트워크 컴포넌트들을 포함하는 대형의 고도로 복잡한 시스템에 이르는 범위일 수 있다. 컴퓨팅 환경(400)은 다-계층 컴퓨터 아키텍처로서 구현될 수 있으며, 이는 웹-기반 및/또는 클라우드-기반 구현예들을 포함할 수 있고, 그 내부에서 다양한 엔드포인트 디바이스들(예를 들어, 사용자 디바이스들(410), 웹 애플리케이션들 또는 웹 서비스 제공자들(430), 등)이 하나 이상의 중간-계층 시스템들을 통해 상호작용한다. 추가적으로, 컴퓨팅 환경(400) 내에 도시된 각각의 컴포넌트는, 하드웨어, 소프트웨어, 및/또는 네트워크 컴포넌트들의 다양한 조합들을 포함하는 개별적인 컴퓨터 시스템으로서 구현될 수 있다. 다른 경우들에 있어서, 컴퓨팅 환경(400) 내에 도시된 복수의 컴포넌트들은 결합된 컴퓨터 시스템들과 함께 동작하는 논리적인 서브컴포넌트들(예를 들어, 컴퓨터-판독가능 매체 상에 구현된 소프트웨어 애플리케이션들 등)로서 구현될 수 있다.
도 4에 도시된 바와 같이, 컴퓨팅 환경(400)은, 그 내부에서 클라이언트 디바이스들(410)이 다양한 컴퓨터 네트워크(들)(415), 방화벽(들)(435), 프록시 서버(420), 및/또는 다른 중간 디바이스들을 통해 하나 이상의 백엔드(backend) 웹 애플리케이션들 또는 웹 서비스들(430)로 요청들을 송신할 수 있는 클라이언트-서버 시스템에 대응할 수 있다. 웹 애플리케이션들 또는 서비스들(430)은, 비제한적으로, 단순 객체 접근 프로토콜(Simple Object Access protocol; SOAP) 웹 서비스들 또는 API들, 표현 상태 전환(Representational State Transfer; REST) 웹 서비스들 또는 API들, 및/또는 하이퍼 텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 또는 HTTP 보안 프로토콜들을 통해 노출되는 웹 컨텐트를 포함하는, 다양한 시스템들(430)에 의해 노출되는 임의의 애플리케이션 프로그래밍 인터페이스(application programming interface; API)들, 서비스들, 애플리케이션들, 및 임의의 다른 정보 자산들을 포함할 수 있다. 이러한 경우들에 있어서, 프록시 서버(420)는 클라이언트 디바이스들(410)과 백엔드 서비스들/애플리케이션들(430) 사이에 보안 계층을 제공하는 리버스 프록시 서버로서 역할할 수 있다. 리버스 프록시로서 역할할 때, 프록시 서버(420)는, 백엔드 서비스들/애플리케이션들(430)과 연관된 다양한 보안 및 관리 정책들의 집행 및 서비스 가상화와 함께, 백엔드 서비스들/애플리케이션들(430)에 대한 중심 액세스 포인트를 제공할 수 있다. 리버스 프록시로서 역할할 때, 프록시 서버(420)는 이러한 백엔드 서비스들/애플리케이션들(430)을 가상화하고 가리면서 백엔드 서비스들/애플리케이션들(430)을 노출시킬 수 있다. 예를 들어, 프록시 서버(420)는, 신뢰할 수 없는 네트워크들 상의 클라이언트 디바이스들(410)이 기초 백엔드 웹 서비스들/애플리케이션들(430)을 보거나 또는 이에 대한 지식을 갖지 않을 수 있도록 오로지 가상 URL(uniform resource locator)들만을 노출시킬 수 있다.
추가적으로 또는 대안적으로, 컴퓨팅 환경(400)은 반대 방향으로 송신되는 요청들-응답들을 위한 클라이언트-서버 시스템에 대응될 수 있다. 예를 들어, 웹 서비스들/애플리케이션들(430)과 동일한 내부 컴퓨터 네트워크(460) 내에서 동작하는 클라이언트 디바이스들(440)이 프록시 서버(420) 및 방화벽(들)(435) 너머의 다양한 외부 컴퓨터 시스템들 및 네트워크들 상에서 동작하는 웹 서비스들 또는 애플리케이션들(450)로 요청들을 송신할 수 있다. 이러한 경우들에 있어서, 프록시 서버(420)는 내부 네트워크(460) 내의 클라이언트 디바이스들(440)과 외부 네트워크 상의 백엔드 서비스들/애플리케이션들(450) 사이에 보안 계층을 제공하는 포워드 프록시 서버로서 역할할 수 있다. 리버스 프록시 동작과 마찬가지로, 포워드 프록시 동작에서의 통신들은 SOAP 웹 서비스들, REST 웹 서비스들, HTTP/HTTPS 웹 컨텐트, 및 유사한 것으로의 요청들 및 이들로부터의 응답들을 포함할 수 있다. 프록시 서버(420)가 포워드 프록시 서버로서 동작할 때, 내부 네트워크 내의 클라이언트 디바이스들(440)은 백엔드 서비스들/애플리케이션들(450)에 관해 알 수 있으며, 이러한 서비스들/애플리케이션들(450)은 클라이언트 측 상에서 구성된 직접 송신들을 프록시 서버(420)로부터 수신할 수 있다. 이러한 경우들에 있어서, 프록시 서버(420)는 임의의 보안 또는 통신 관리 정책들을 사용하여 포워드 프록시 URI(uniform resource identifier) 엔드포인트들에 대한 보안성을 제공할 수 있다.
포워드 프록시 모드 또는 리버스 프록시 모드 각각에 있어서, 프록시 서버(420)는 커베로스 케이이니트-기반 인증(Kerberos Kinit-based authentication), 커베로스 피케이이니트-기반 인증(Kerberos Pkinit-based authentication), 인증 프로토콜 버전 2.0에 대한 개방 표준(open standard for authorization protocol version 2.0; OAuth2) 기반 인증, TLP-기반 인증, 심플 앤 프로텍티드 GSSAPI 교섭 메커니즘(Simple and Protected GSSAPI Negotiation Mechanism; SPNEGO) 토큰들, 윈도우즈 NT 랜 관리자(WINDOWS NT LAN Manager; NTLM) 토큰들, 보안 어써션 마크업 언어(Security Assertion Markup Language; SAML) 토큰들, 및 유사한 것을 사용하는 백엔드 서비스들의 세션 토큰 생성 및/또는 도전-기반 인증과 같은 다양한 보안 및 인증 특징들을 지원할 수 있다.
클라이언트 디바이스들(410 및 440)은, 도 1 내지 도 3의 예시적인 컴퓨팅 시스템들의 이상에서 논의된 하드웨어, 소프트웨어, 및 네트워킹 컴포넌트들 중 일부 또는 전부를 포함하는, 데스크탑 또는 랩탑 컴퓨터들, 모바일 디바이스들, 및 다른 다양한 컴퓨팅 디바이스들/시스템들을 포함할 수 있다. 일부 실시예들에 있어서, 클라이언트 디바이스들(410 및 440)은 백엔드 웹 서비스들/애플리케이션들(430 및 450)로 데이터를 요청하고 이들로부터 데이터를 수신하도록 구성된 하나 이상의 클라이언트 소프트웨어 애플리케이션들(예를 들어, 웹 브라우저들)을 포함할 수 있다. 클라이언트 디바이스들(410 및 440)은 또한, 네트워크 인터페이스들, 보안 및 인증 성능들, 및 라이브(live) 컨텐트를 수신하고 이를 실시간으로(또는 거의 실시간으로) 사용자들에게 제공하기 위한 컨텐트 캐싱(caching) 성능들을 수립하기 위해 필요한 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수 있다.
통신 네트워크들(415)은 본원에서 설명된 컴퓨터 네트워크들 및 다른 통신 네트워크들의 임의의 조합을 포함할 수 있다. 예를 들어, 네트워크들(415)은 근거리 네트워크(local area network; LAN)들, 광역 네트워크(wide area network; WAN)들(예를 들어, 인터넷), 및 다양한 무선 전기통신 네트워크들과 같은 전송 제어 프로토콜/인터넷 프로토콜(transmission control protocol/Internet protocol; TCP/IP) 네트워크들을 포함할 수 있다. 추가적으로, 통신 네트워크(415)가 클라이언트 디바이스들(410)을 백엔드 애플리케이션들/서비스들(430)로부터 분리하는 다수의 상이한 물리적 및 논리적 네트워크들의 조합들을 나타낼 수 있다는 것이 이해되어야만 한다. 하나 이상의 방화벽들(435)에 더하여, 웹 서버들, 인증 서버들과 같은 다양한 서버들, 및/또는 방화벽들, 라우터들, 게이트웨이들, 로드 밸런서(load balancer)들, 및 유사한 것과 같은 특수 네트워킹 컴포넌트들이 클라이언트 디바이스들(410)과 백엔드 애플리케이션들/서비스들(430) 사이의 통신을 가능하게 할 수 있다.
이하에서 논의되는 바와 같이, 프록시 서버(420)는 분리된 컴퓨터 시스템(예를 들어, 프록시 컴퓨터 서버)로서 구현될 수 있거나 또는 특수 하드웨어, 소프트웨어, 및 네트워크 컴포넌트들을 포함하는 컴퓨터 다중 컴퓨팅 시스템들의 조합으로서 구현될 수 있다. 대안적으로 또는 추가적으로, 프록시 서버(420)는 신뢰되는 네트워크(460) 내의 컴퓨터 서버 또는 네트워크 디바이스(예를 들어, 웹 서버 또는 방화벽) 내에서 실행되는 프록시 서버 소프트웨어 애플리케이션일 수 있다. 따라서, 프록시 서버(420)는 내부 컴퓨터 네트워크(460)의 물리적인 서브네트워크 또는 논리적인 서브네트워크(465) 내에 존재할 수 있으며, 각각의 경우에 있어서, 이는 신뢰되는 내부 네트워크 상의 클라이언트들/서버들과 신뢰되지 않는 외부 네트워크들 상의 클라이언트들/서버들 사이의 매개체로서 역할할 수 있다. 추가적으로, 프록시 서버(420) 내의 컴포넌트들(421-428)의 각각은 프록시 서버(420)와 통신하도록 구성된 별개의 컴퓨팅 시스템들로서 구현될 수 있거나, 또는 프록시 서버(420)와 동일한 컴퓨터 서버 내에 통합된 논리적인 서브컴포넌트들로서 동작할 수 있다. 각각의 경우에 있어서, 각각의 컴포넌트(421-428)은 본원에서 설명되는 기술들을 수행하기 위하여 특수 하드웨어, 소프트웨어, 네트워크 및 메모리 서브시스템들을 사용하여 구현될 수 있다.
이러한 예에 있어서, 프록시 서버(420)는 통신 네트워크들(415) 및/또는 방화벽들(435)을 통해 외부 클라이언트 디바이스들(410)로부터 메시지들을 수신하도록 구성된 로드 밸런서(422)를 포함한다. 일부 실시예들에 있어서, 로드 밸런서(422)는 임의의 외부 네트워크들로부터 백엔드 서비스들/애플리케이션들(430)로의 모든 TCP, UDP, HTTP, 및 HTTPS 트래픽에 대한 진입 포인트일 수 있다. 로드 밸런서(422)는 또한 백엔드 서버들과 통신하고 응답들을 클라이언트 디바이스들(410)로 송신하도록 구성될 수 있다. 메시지들을 수신하고 파싱한 이후에, 로드 밸런서(422)는 메시지들을 (예를 들어, 자바 네이티브 인터페이스(Java Native Interface; JNI) 또는 .NET 프로그래밍 프레임워크, 등을 통해) 적절한 웹 서비스 프레임워크로 송신할 수 있다. 예를 들어, 프록시 서버(420)에서 수신된 클라이언트 디바이스들로부터의 SOAP 요청들이 SOAP 웹 서비스 프레임워크(421)로 송신될 수 있으며, REST 요청들은 REST 웹 서비스 프레임워크(423)로 송신될 수 있다. 웹 컨텐트 요청들은, 요청들을 파싱하고 URL 가상화 컴포넌트 또는 서비스와 같은 다양한 컴포넌트들로 송신함으로써 유사하게 처리될 수 있다. 이러한 웹 서비스들 및 컴포넌트들은 또한, SOAP 대 REST 및 REST 대 SOAP 메시지 변환들뿐만 아니라 자바스크립트 객체 표기법(JavaScript Object Notation; JSON) 대 XML 또는 JSON 대 SOAP, 및 이의 역들과 같은 프로토콜 변환들을 수행하도록 구성될 수 있다.
메시지 조절(throttling) 시스템(또는 메시지 조절 서브컴포넌트)(424)은 클라이언트 디바이스들(410) 및/또는 백엔드 서비스들/애플리케이션들(430)로부터 수신되는 네트워크 트래픽을 모니터링하도록 구성될 수 있다. 메시지 조절 시스템(424)은 특정 클라이언트 디바이스들(410) 및/또는 특정 웹 서비스들 또는 애플리케이션들(430)에 대한 구성가능 메시지 레이트(rate) 제한들을 가질 수 있다. 메시지 조절 시스템(424)은, 지정된 클라이언트(410)로의/로부터의, 또는 지정된 웹 서비스/애플리케이션(430)으로의/으로부터의 메시지들의 특정한 수를 허용하기 위하여 기존의 정책들을 사용할 수 있다. 메시지들의 수가 메시지 레이트 제한을 초과할 때, 메시지 조절 시스템(424)은 경고들을 전송하는 것, 로깅(log)하는 것, 또는 추가적인 메시지 송신들을 유예하는 것과 같은 액션을 수행하도록 구성될 수 있다.
프록시 서버(420)는 또한 프록시 서버(420) 내에서 다양한 보안 정책들을 구현하도록 구성된 다양한 보안 시스템들 또는 컴포넌트들을 포함할 수 있다. 이러한 예에 있어서, 프록시 서버(420)는 키 관리 시스템(425), 토큰 중재 시스템(426), 및 인증 및 인가 시스템들(427)을 포함한다. 프록시 서버(420) 내의 이러한 시스템들 및 보안 컴포넌트들은, 클라이언트 디바이스들(410)로부터의 메시지들을 인증하고, 보안 토큰 중재를 제공하며, API 키 관리를 수행하고, 미세 단위(fine grained) 인가 및/또는 데이터 치환(data redaction)을 수행하며, 기밀성 및 무결성을 지원하고, 위험-기반 인증을 수행하며, 모바일 클라이언트 디바이스들(410)에 대한 디바이스-기반 보안을 수행하고, 비무장 지대(demilitarized zone; DMZ) 위협 보호를 지원하며, 프로토콜 및 페이로드(payload) 중재를 수행하고, 및 유사한 것을 수행할 수 있다. 예를 들어, 로드 밸런서(422) 및/또는 인증/인가 시스템들(427)은 서비스 거부(Denial of Service; DoS) 공격들을 방지하고, 기형 메시지들을 검출 및 필터링하며, SQL, 자바스크립트, 및/또는 XPath/XQuery 주입 공격들을 검출 및 방지하고, 악의적인 컨텐트로부터 보호하기 위하여 메시지 검증(예를 들어, 메시지 첨부물 내의 바이러스들의 검출, XML 및 JSON 데이터 구조들의 검증, 폼 및 쿼리(query) 파라미터들의 검증, 등)을 수행하기 위한 서브시스템들을 포함할 수 있다. 토큰 중재 시스템(426)은 지정된 클라이언트 디바이스들(410)과 백엔드 웹 서비스들/애플리케이션들(430) 사이에서 인증 토큰들을 변환하도록 구성될 수 있다. 보안 시스템들(424-427)이 또한, 동작들을 제거함으로써, 예를 들어, 복수의 백엔드 API들 또는 서비스들을 집성함으로써 편성을 지원할 수 있으며, 자동 중재 또는 화해(composition)를 수행할 수 있다.
추가적으로, 이러한 예에 있어서, 프록시 서버(420)는 메시지 프로세싱 정책들(428)의 데이터 저장부를 포함한다. 메시지 프로세싱 정책들은 다양한 형태의 컴퓨터-판독가능 매체, 예컨대 XML, 자바스크립트, 또는 다른 유형들의 실행가능 소프트웨어 컴포넌트들로 저장될 수 있다. 이하에서 더 상세하게 논의되는 바와 같이, 메시지 프로세싱 정책들(428)은 프록시 서버(420) 내에서 보안 정책들 및 다른 통신 관리 정책들을 집행하기 위하여 사용될 수 있다. 데이터 저장부(428)는, 개별적인 메시지들에 대한 엔드-투-엔드 프로세싱 흐름 동안 다양한 단계들에서 검색되고 개별적인 메시지들에 적용될 수 있는 개별적인 메시지 프로세싱 정책들을 포함할 수 있다. 메시지 프로세싱 정책 데이터 저장부(428)는, 이러한 예에 도시된 바와 같이 프록시 서버(420) 내에 상주할 수 있거나, 또는 신뢰되는 내부 컴퓨터 네트워크의 백엔드 서버 또는 보안 제 3 자 서버, 또는, 유사한 것 내에 상주할 수 있다.
도 4에 도시된 바와 같이, 프록시 서버(420)는 2개 이상의 컴퓨터 네트워크들 사이의, 예를 들어, 웹 애플리케이션들/서비스들(430)을 제공하는 제 1 신뢰되는 내부 네트워크와 이를 통해 다양한 신뢰되지 않는 클라이언트 디바이스들(410)이 내부 웹 애플리케이션들/서비스들(430)을 액세스할 수 있는 제 2 신뢰되지 않는 외부 네트워크(415)(예를 들어, 인터넷) 사이의 중간 네트워크 디바이스 내에 구현될 수 있다. 일부 실시예들에 있어서, 프록시 서버(420)는 내부 컴퓨터 네트워크에 대한 통신 관리 및 보안의 초기 계층을 제공하기 위하여 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작할 수 있다. 예를 들어, 보안 내부 네트워크(460)는 다양한 다른 서버들 및 클라이언트 디바이스들(440)과 함께 복수의 웹 서비스들/애플리케이션들(430)을 포함할 수 있다. 프록시 서버(420) 및/또는 추가적인 디바이스들은 동일한 내부 네트워크(460)의 부분일 수 있지만, 이는 방화벽(435b)에 의해 내부 컴퓨터 네트워크로부터 분리된 내부 컴퓨터 네트워크의 물리적인 서브네트워크(465) 내에서 동작할 수 있다. 일부 예들에 있어서, 프록시 서버(420)는 내부 컴퓨터 네트워크(460)의 논리적인 서브네트워크(465)(그렇지만 물리적인 서브네트워크는 아닌) 내에서 실행되는 프록시 서버 애플리케이션으로서 구현될 수 있다. 따라서, 프록시 서버(420)는 방화벽(435b) 및/또는 백엔드 웹 서비스들/애플리케이션들(430) 중 하나 이상과 동일한 컴퓨팅 시스템들 상에 상주할 수 있다.
추가적으로, 일부 실시예들에 있어서, 프록시 서버(420)는 신뢰되는 내부 네트워크(460)와 신뢰되지 않는 외부 네트워크 사이의 비무장 지대(DMZ) 네트워크 내에서 동작할 수 있다. DMZ는, 클라이언트 디바이스들(410 및 440) 및 백엔드 웹 서비스들/애플리케이션들(430 및 450)에서 제공되는 엔드포인트 보안과는 별개의 통신 관리 및 보안의 제 1 계층을 제공하는 물리적인 서브네트워크(465)로서 구현될 수 있다. 도 4에 도시된 바와 같이, DMZ는 2개의 방화벽들(435a 및 435b) 사이에 구현될 수 있다. 다른 실시예들에 있어서, DMZ는 단일 방화벽을 사용하여 또는 서브네트워크(465)를 신뢰되는 내부 네트워크(460) 및 신뢰되지 않는 외부 네트워크 둘 모두로부터 물리적으로 또는 논리적으로 분리하는 네트워크 디바이스들의 다른 다양한 구성들을 사용하여 구현될 수 있다. 프록시 서버(420)와 같은 DMZ 내의 모든 컴퓨터 서버들 및 다른 디바이스들은 내부 네트워크(460) 내의 디바이스들의 특정한 서브세트(예를 들어, 웹 애플리케이션들/서버들(430))에 대한 제한된 연결을 가질 수 있다. 이러한 연결은 특정 호스트들, 포트들, 프로토콜들, 및 유사한 것에 기초하여 제한될 수 있다. 유사하게, 외부의 신뢰되지 않는 네트워크(예를 들어, 네트워크(415) 및 디바이스들(410))와 통신할 때 제한된 연결의 정책들이 DMZ 내의 디바이스들에 대하여 집행될 수 있다. 프록시 서버(420)를 DMZ 내에서 동작시키는 것에 더하여, 특정 실시예들에 있어서, 백엔드 웹 서버들/애플리케이션들(430) 중 하나 이상이 DMZ 내에서 동작할 수 있다. 예를 들어, 외부 시스템들(예를 들어, 웹 서버들, 이메일 서버들, 도메인 네임 시스템(Domain Name System; DNS) 서버들, 등)로부터의 공격들에 더 취약하거나 공격들을 당하기 쉬운 특정 서버들이 프록시 서버(420)를 갖는 DMZ 내로 이동될 수 있다.
이제 도 5를 참조하면, 선택된 메시지 프로세싱 정책들을 사용하여 메시지들을 수신하고 프로세싱하기 위한 프로세스를 예시하는 순서도가 도시된다. 이상에서 설명된 바와 같이, 이러한 프로세스 내의 단계들은 프록시 서버(420) 및 그 내부에 구현된 다양한 서브시스템들/서브컴포넌트들과 같은 컴퓨팅 환경(400) 내의 하나 이상의 컴포넌트들에 의해 수행될 수 있다. 추가적으로, 일부 실시예들에 있어서, 이러한 프로세스 내의 특정 단계들은 클라이언트 디바이스들(410), 백엔드 웹 서비스들/애플리케이션들(430) 내에서, 및/또는 다른 다양한 중간 디바이스들에 의해서 수행될 수 있다. 메시지들을 수신하고 분석하는 것, 메시지 프로세싱 정책들을 선택하는 것 및 메시지들을 프로세싱하는 것을 포함하는 본원에서 설명되는 기술들이 이상에서 설명된 특정 시스템 및 하드웨어 구현예들에 반드시 한정되는 것이 아니라, 하드웨어, 소프트웨어, 및 네트워크 컴포넌트들의 다른 조합들을 포함하는 다른 하드웨어 및 시스템 환경들 내에서 수행될 수 있다는 것이 추가로 이해되어야만 한다.
단계(501)에서, 네트워크 메시지가 프록시 서버(420)와 같은 중간 컴퓨팅 시스템 또는 애플리케이션에 의해 수신될 수 있다. 이상에서 언급된 바와 같이, 프록시 서버(420)는 신뢰되는 내부 네트워크(460)와 하나 이상의 신뢰되지 않는 외부 네트워크들 사이의 중간 서버 디바이스 및/또는 애플리케이션으로서 구현될 수 있다. 따라서, 단계(501)에서 수신되는 네트워크 메시지는 프록시 서버(420)로 의도되지 않을 수 있다. 그 대신, 프록시 서버(420)가 제 1 엔드포인트 디바이스(예를 들어, 클라이언트 디바이스(410))에 의해 송신되고 제 2 엔드포인트 디바이스(예를 들어, 백엔드 웹 서비스들 및/또는 애플리케이션들(430)을 호스팅하는 컴퓨터 서버)에 대해 의도된 메시지 또는 이의 역인 메시지를 인터셉트할 수 있다.
일부 실시예들에 있어서, 내부 네트워크(460)에 진입하거나 또는 이를 떠나는 모든 네트워크 트래픽이 프록시 서버(420)를 통해 라우팅될 수 있다. 다른 경우들에 있어서, 프록시 서버(420)는 특정 유형들 또는 프로토콜들의 네트워크 메시지들, 예를 들어, SOAP, REST, 또는 URL 자원들에 대한 클라이언트 디바이스들(410 및 440)로부터의 HTTP 요청들, 및 다시 클라이언트 디바이스들로 향하는 SOAP, REST, 또는 URL 웹 서비스들/애플리케이션들(430 및 450)로부터의 HTTP 응답들을 인터셉트하도록 구성될 수 있다. 따라서, 단계(501)에서 수신되는 네트워크 메시지는, 예를 들어 그리고 비제한적으로, TCP 메시지, HTTP 또는 HTTPS 메시지, 단순 메일 전송 프로토콜(Simple Mail Transport Protocol; SMTP), 사용자 데이터그램 프로토콜(User Datagram Protocol; UDP) 메시지, 및/또는 자바 메시지 서비스(Java Message Service; JMS) 메시지일 수 있다. 일부 경우들에 있어서, 네트워크 메시지는 클라이언트 디바이스(410)로부터 웹 서비스들/애플리케이션들(430)을 호스팅하는 백엔드 컴퓨터 서버로의 SOAP, REST, 또는 웹 컨텐트 요청에 대응할 수 있거나, 또는, 클라이언트 디바이스(410)로부터의 SOAP, REST, 또는 웹 컨텐트 요청에 대한 백엔드 웹 서비스 또는 애플리케이션(430)에 의한 응답에 대응할 수 있다. 추가적으로, 네트워크 메시지는 내부 컴퓨터 네트워크(460) 내에서 동작하는 클라이언트 디바이스(440)로부터 외부 컴퓨터 네트워크 상에서 동작하고 있는 웹 서비스들/애플리케이션들을 제공하는 컴퓨터 서버(450)로의 SOAP, REST, 또는 웹 컨텐트 요청에 대응할 수 있거나, 또는, 내부 클라이언트 디바이스(440)로부터의 SOAP, REST, 또는 웹 컨텐트 요청에 대한 외부 웹 서비스 또는 애플리케이션(450)으로부터의 응답에 대응할 수 있다.
단계(502)에서, 프록시 서버(420)는, 메시지의 의도된 목적지를 결정하기 위하여, 그리고 또한 프록시 서버(420)가 네트워크 메시지를 프로세싱할 때 포워드 프록시(즉, 포워드 프록시 모드)로서 또는 리버스 프록시(즉, 리버스 프록시 모드)로서 역할해야 하는지 여부를 결정하기 위하여 단계(501)에서 수신된 네트워크 메시지를 분석할 수 있다. 본원에서 사용되는 바와 같은 네트워크 메시지의 "의도된 목적지"는 송신 디바이스 또는 송신 디바이스의 사용자에 의해 지정된 메시지의 목적지를 지칭할 수 있다. 메시지의 의도된 목적지는 메시지 헤더 및/또는 메시지 바디(body)의 부분들을 파싱하고 분석함으로써 결정될 수 있다. 예를 들어, 메시지의 URI(uniform resource identifier), 또는 메시지 바디 내의 동작 식별자들 및/또는 웹 서비스 또는 애플리케이션의 식별자가 내부 네트워크(460)에 의해 제공되는 웹 서비스/애플리케이션 또는 웹 컨텐트에 대응할 수 있다. 이러한 예에 있어서, 프록시 서버(420)는 메시지 헤더 및 컨텐트에 기초하여 메시지가 내부 네트워크(460) 내의 특정 서버에 대하여 의도된다는 것을 결정할 수 있다. 다른 예에 있어서, 메시지 URI가 신뢰되지 않는 네트워크 상의 원격 서버에 대응하는 경우, 프록시 서버(420)는 메시지의 의도된 목적지가 내부 네트워크(460) 내의 디바이스가 아니라 원격 서버라는 것을 결정할 수 있다. 메시지의 송신기를 식별하는 메시지 내의 정보, 예컨대 소스 IP 어드레스 또는 호스트 명칭 식별자가 또한 메시지의 의도된 목적지를 결정하기 위하여 사용될 수 있다.
메시지의 의도된 목적지를 결정하는 것에 더하여, 프록시 서버(420)는, 메시지를 프로세싱할 때 프록시 서버(420)가 포워드 프록시 모드 또는 리버스 프록시 모드로 동작해야 하는지 여부를 결정하기 위하여 메시지가 클라이언트 디바이스(410 또는 440)로부터의 요청의 부분인지 또는 웹 서비스/애플리케이션 서버 디바이스(430 또는 450)로부터의 응답의 부분인지 여부를 결정할 수 있다. 예를 들어, 수신된 메시지가 클라이언트 디바이스(410)로부터 웹 서비스 또는 애플리케이션(430)으로의 요청인 경우, 의도된 목적지는 신뢰되는 내부 네트워크(460) 내에 존재하며, 프록시 서버(420)는 리버스 프록시 모드로 동작해야만 한다. 그에 반해서, 수신된 메시지가 내부 클라이언트 디바이스(440)로부터 외부 웹 서비스(450), 웹 애플리케이션(450), 또는 URL(450)로의 요청인 경우, 의도된 목적지는 신뢰되는 내부 네트워크 외부에 존재하며, 프록시 서버(420)는 포워드 프록시 모드로 동작해야만 한다.
다른 경우들에 있어서, 단계(501)에서 수신된 메시지는 클라이언트 디바이스(410 또는 440)로부터의 요청이 아니라, 그 대신에 이전의 요청에 대한 웹 서버(430 또는 450)로부터의 응답일 수 있다. 예를 들어, 수신된 메시지가 클라이언트 디바이스(410)로부터의 요청에 대한 신뢰되는 내부 네트워크(460) 내의 웹 서비스/애플리케이션(430) 또는 다른 서버로부터의 응답인 경우, 원본 요청의 의도된 목적지는 신뢰되는 내부 네트워크(460) 내에 존재하며, 프록시 서버(420)는 리버스 프록시 모드로 동작해야만 한다. 그에 반해서, 수신된 메시지가 클라이언트 디바이스(440)로부터의 요청에 대한 내부 네트워크(460) 외부의 웹 서비스/애플리케이션(450) 또는 다른 서버로부터의 응답인 경우, 원본 요청의 의도된 목적지는 내부 네트워크(460) 외부에 존재하며, 프록시 서버(420)는 포워드 프록시 모드로 동작해야만 한다.
단계(503)에서, 프록시 서버(420)는 단계(501)에서 수신된 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정할 수 있다. 메시지 프로세싱 흐름은, 프록시 서버(420)에 의한 클라이언트 디바이스(410 또는 440)로부터의 메시지의 수신으로 시작하여, 프록시 서버(420)에 의한 클라이언트 디바이스(410 또는 440)로의 응답의 송신으로 종료하는 프록시 서버(420)에 의해 실행될 엔드-투-엔드 메시지 프로세싱을 지칭할 수 있다. 이하에서 논의되는 바와 같이, 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 단계는, 메시지와 연관된 정책 모델을 식별하는 단계, 및 프로세싱 모델 내의 현재 프로세싱 위치를 결정하는 단계를 포함할 수 있다.
일부 실시예들에 있어서, 메시지들에 대한 미리 결정된 메시지 프로세싱 흐름들은 정책 모델들에 의해 정의될 수 있다. 정책 모델은, 메시지의 엔드-투-엔드 메시지 프로세싱 흐름 동안 다양한 포인트들에서 메시지를 프로세싱하기 위하여 프록시 서버(420)에 의해 적용될 수 있는 정책들(예를 들어, 보안 정책들, 통신 관리 정책들, 등)의 세트를 정의하는 데이터를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름을 정의하는 정책 모델들 및 개별적인 메시지 프로세싱 정책들 둘 모두는, 다양한 형태의 컴퓨터-판독가능 매체, 예컨대 XML, 자바스크립트, 또는 다른 유형들의 실행가능 소프트웨어 컴포넌트들일 수 있다. 정책 모델들 및/또는 메시지 프로세싱 정책들은 프록시 서버(420) 내에, 예를 들어, 데이터 저장부(428)에, 또는 내부 네트워크(460) 내의 어딘가에 저장될 수 있다.
이상에서 언급된 바와 같이, 정책 모델들은, 프록시 서버(420)가 메시지의 엔드-투-엔드 프로세싱 흐름의 다양한 포인트들에서 메시지에 적용할 수 있는 메시지 프로세싱 정책들의 세트를 정의할 수 있다. 일부 실시예들에 있어서, 프록시 서버(420)는 단계(501)에서 수신된 메시지의 특성들에 의존하여 단계(503)에서 상이한 정책 모델들을 적용할 수 있다. 예를 들어, 프록시 서버(420)에 의해 검색되고 적용되는 특정 정책 모델은 단계(502)에서 수행된 메시지의 의도된 목적지 및 포워드 또는 리버스 프록시 모드의 결정에 의존할 수 있다. 추가적으로, 프록시 서버(420)에 의해 검색되고 적용되는 정책 모델은, 메시지를 송신하기 위해 사용된 네트워크 프로토콜들 및/또는 메시지의 요청 유형 또는 클라이언트 유형에 의존할 수 있다. 예를 들어, REST 요청들, SOAP 요청들, 웹 컨텐트(URL) 요청들, 및 유사한 것에 대하여 상이한 정책 모델들이 사용될 수 있다.
도 6a 및 도 6b를 간략하게 참조하면, 정책 모델들의 2개의 예들이 도시되며, 이들 둘 모두가 XML로 구현된다. 도 6a는 가상 애플리케이션에 대한 예시적인 정책 모델을 도시한다. 따라서, 예시적인 정책 모델(600a)은 리버스 프록시 사용-경우들에 대한 메시지 프로세싱을 위하여 검색되고 사용될 수 있다. 그에 반해서, 도 6b는 프록시 애플리케이션에 대한 예시적인 정책 모델을 도시하며, 따라서, 예시적인 정책 모델(600b)은 포워드 프록시 사용-경우들에 대한 메시지 프로세싱을 위하여 검색되고 사용될 수 있다. 이러한 예들의 각각에 도시된 바와 같이, 정책 모델들은 ("어써션(assertion)들"로서 지칭될 수 있는) 프로세싱 흐름 내의 다양한 포인트들의 태그들 또는 식별자들, 및 프로세싱 포인트들/어써션들의 각각에 대한 하나 이상의 정책 식별자들을 포함할 수 있다. 예를 들어, 예시적인 정책 모델(600a)은 요청이 수신될 때 ("on-request" 태그 내의) 수행될 2개의 정책들, ("message-transformation" 태그들 내의) 메시지 변환을 수행하는 정책들, 및 백엔드 웹 서비스가 호출될 때 ("invoke" 태그 내의) 수행될 정책을 식별한다. 예시적인 정책 모델(600b)은 요청이 수신될 때 ("on-request" 태그 내의) 수행될 정책, 및 백엔드 웹 서비스가 호출될 때 ("invoke-proxy" 태그 내의) 수행될 정책을 식별한다.
일부 실시예들에 있어서, 프록시 서버(420)는 프록시 애플리케이션들에 대하여 (즉, 포워드 프록시 모드에서) 서비스 레벨(또는 URL 레벨)에서 정책들을 적용할 수 있으며, 반면 가상 애플리케이션들에 대하여 (즉, 리버스 프록시 모드에서) 프록시 서버(420)는 서비스 레벨에서 및/또는 동작 레벨(또는 메소드(method) 레벨)에서 정책들을 적용할 수 있다. 따라서, 신뢰되는 내부 네트워크(460) 내의 백엔드 웹 서비스들/애플리케이션들(430)을 호출할 때, 프록시 서버가 정책 모델 내에서 식별된 정책들을 집행하기 이전에 프록시 서버(420)는 (SOAP에 대한) 동작 또는 (REST 및 URL에 대한) 메소드를 먼저 결정할 수 있다.
단계(501)에서 수신된 메시지와 연관된 정책 모델(또는 프로세싱 흐름을 정의하는 다른 데이터)를 식별한 이후에, 프록시 서버(420)는 정책 또는 프로세싱 흐름에 따른 메시지의 프로세싱에 있어서의 현재 포인트를 결정할 수 있다. 메시지 프로세싱 흐름 내의 현재 포인트는 메시지 자체의 특성들에 의해서뿐만 아니라 메시지의 이전의 프로세싱에 관하여 이전에 저장된 데이터에 기초하여 결정될 수 있다. 이상에서 언급된 바와 같이, 미리 결정된 프로세싱 흐름은, 클라이언트 디바이스(410 또는 440)에 의한 초기 요청으로부터, 클라이언트 디바이스(410 또는 440)로 다시 송신되는 응답에 이르는, 메시지에 대한 엔드-투-엔드 프로세싱을 적용할 수 있다. 따라서, 단계(501)에서 수신된 메시지가 클라이언트 디바이스로부터의 초기 요청인지, 클라이언트 디바이스로부터의 추가적인 데이터(예를 들어, 인증 증명서들 또는 요청과 관련된 추가적인 데이터)의 송신인지, 백엔드 웹 서비스/애플리케이션으로부터의 응답인지, 또는 백엔드 서버 또는 디바이스로부터의 추가적인 데이터(예를 들어, 싱글 사인-온 또는 토큰 번역(translation) 서비스로부터의 데이터)의 송신인지 여부를 결정하는 것은, 프록시 서버(420)가 엔드-투-엔드 메시지 프로세싱 흐름 내의 메시지 프로세싱의 현재 포인트를 결정하는 것을 가능하게 할 수 있다. 추가적으로, 프록시 서버(420)는, 프록시 서버(420)가 메시지에 적용해야만 하는 다음의 메시지 프로세싱 정책을 결정하기 위하여, 메시지 또는 다른 관련된 메시지들에 대해 수행된 이전의 프로세싱과 관련된 데이터, 예컨대 이전의 메시지 변환들의 결과들, 서비스들의 호출들, 경험된 프로세싱 오류들을 저장할 수 있다.
다음의 단락들은, 여기에서 메시지 프로세싱 정책들이 적용될 수 있는, 정책 모델 또는 다른 메시지 프로세싱 흐름 내의 가능한 ("어써션들"로서도 지칭될 수 있는) 포인트들의 몇몇 예들을 포함한다. 이러한 예들이 오로지 예시적일 뿐이며, 완전한 리스트일 필요가 없다는 것이 이해되어야만 한다. 또한, 본원에서 설명되는 어써션 명칭들(예를 들어, OnRequest, OnInvoke, OnResponse, OnError, MessageTransformation, 등)뿐만 아니라 어써션들 및 정책들에 대해 사용되는 XML 구조들 및 태그 명칭들이 다양한 다른 실시예들에서 변화될 수 있다.
단계(503)에서 정책 모델 또는 다른 미리 결정된 메시지 프로세싱 흐름 내의 현재 포인트를 결정하는 단계의 제 1 예는, 단계(501)에서 수신된 메시지가 외부 컴퓨터 네트워크 내의 클라이언트 디바이스(410)로부터의 요청에 대응한다는 것을 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름의 개시에서의 이러한 포인트는 "OnRequest" 어써션 또는 유사한 것으로서 지칭될 수 있다. 이하에서 더 상세하게 논의되는 바와 같이, OnRequest 어써션은 가상 서비스들, 프록시 서비스들, 및/또는 웹 애플리케이션들을 안전하게 하기 위하여 적용될 수 있는 정책들에 대한 참조(reference)들을 포함할 수 있다. 예를 들어, OnRequest 어써션은, 프록시 서버(420)가 외부 클라이언트 디바이스들(410)로부터 수신된 새로운 웹 서비스/애플리케이션/컨텐트 요청들에 대하여 집행해야만 하는 보안 정책들을 나타내는 URI들 또는 다른 식별자들을 포함할 수 있다. OnRequest 어써션들은 또한 다른 정책들을 참조하게 할 수 있거나 및/또는 다른 어써션들을 포함할 수 있다. 일부 경우들에 있어서, OnRequest 어써션들은 오로지 리버스 프록시 모드에서만 동작할 수 있으며, 즉, 이들은 오로지 내부 웹 자원들(430)에 대한 외부 클라이언트 디바이스들(410)로부터의 요청들만을 처리할 수 있다. 이러한 경우들에 있어서, 외부 웹 자원들(450)에 대한 내부 클라이언트 디바이스들(440)로부터의 요청들은 상이한 메시지 프로세싱 정책들을 적용할 수 있는 상이한 어써션들에 의해 처리될 수 있다.
단계(503)에서 일어날 수 있는 현재 메시지 프로세싱 포인트의 다른 결정은, 외부 클라이언트 디바이스(410)로부터 요청을 수신하는 단계 이후에, 프록시 서버(420)가 내부 컴퓨터 네트워크(460) 내의 백엔드 웹 애플리케이션 또는 웹 서비스(430)로 요청을 송신해야만 한다는 것을 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트는 "OnInvoke" 어써션 또는 유사한 것으로서 지칭될 수 있다. OnRequest 어써션과 유사하게, 일부 실시예들에 있어서, OnInvoke 어써션은 오로지, 초기 요청이 내부 네트워크(460) 내의 백엔드 웹 서비스들/애플리케이션들(430)을 호출하기 위하여 외부 클라이언트 디바이스(410)로부터 수신되었던 리버스 프록시 사용 경우들에서만 적용될 수 있다. OnInvoke 어써션들은, 프록시 서버(420)가 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트 동안 집행해야만 하는 정책들을 나타내는 URI들 또는 다른 식별자들을 포함할 수 있다. 복수의 정책 식별자들(또는 참조들)은, 예를 들어, 복수의 XML "Policy URI" XML 엘리먼트들을 사용함으로써 OnInvoke 내에 포함될 수 있다. 추가적으로, OnInvoke 어써션들은 클라이언트의 자원 패턴을 사용하는 것으로부터 클라이언트 세부사항들을 고유하게 식별할 수 있다. OnInvoke 어써션들에 대해 사용되는 클라이언트 유형(예를 들어, REST 클라이언트, SOAP 클라이언트, URL/웹 클라이언트, 등)은, OnInvoke 어써션 내에 구성된 값들에 기초하여 런타임(runtime)에서 프록시 서버(420)에 의해 결정될 수 있다. OnInvoke 어써션들은 또한 다른 정책들을 참조하게 할 수 있거나 및/또는 다른 어써션들을 포함할 수 있다.
외부 클라이언트 디바이스(410)로부터 요청을 수신하는 단계 이후에 그리고 백엔드 웹 서비스/애플리케이션(430)을 호출하는 단계 이후에, 현재 메시지 프로세싱 포인트를 결정하는 단계의 다른 예는, 프록시 서버(420)가 외부 클라이언트 디바이스(410)로 응답을 송신해야만 한다는 것을 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트는 "OnResponse" 어써션 또는 유사한 것으로서 지칭될 수 있다. OnRequest 및 OnInvoke 어써션들과 유사하게, 일부 실시예들에 있어서, OnResponse 어써션은 오로지, 초기 요청이 내부 네트워크(460) 내의 백엔드 웹 서비스들/애플리케이션들(430)을 호출하기 위하여 외부 클라이언트 디바이스(410)로부터 수신되었던 리버스 프록시 사용 경우들에서만 적용될 수 있다. OnResponse 어써션들은, 프록시 서버(420)가 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트 동안 집행해야만 하는 정책들을 나타내는 URI들 또는 다른 식별자들을 포함할 수 있다. 복수의 정책 식별자들(또는 참조들)이 OnResponse 내에 포함될 수 있으며, OnResponse 어써션들이 또한 다른 정책들을 참조하게 할 수 있거나 및/또는 다른 어써션들을 포함할 수 있다.
단계(503)에서 일어날 수 있는 현재 메시지 프로세싱 포인트의 다른 결정은, 프록시 서버(420)가 내부 클라이언트 디바이스(440)로부터의 요청을 외부 웹 서비스 또는 애플리케이션(450)으로 송신해야만 한다고 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트는 "OnProxyInvoke" 어써션 또는 유사한 것으로서 지칭될 수 있다. 이상에서 논의된 예시적인 OnInvoke 어써션과 다르게, OnProxyInvoke 어써션은 오로지, 초기 요청이 신뢰되지 않는 외부 네트워크 내의 백엔드 웹 서비스들/애플리케이션들(450)을 호출하기 위하여 내부 클라이언트 디바이스(440)로부터 수신되었던 포워드 프록시 사용 경우들에서만 적용될 수 있다. OnProxyInvoke 어써션들은, 프록시 서버(420)가 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트 동안 집행해야만 하는 정책들을 나타내는 URI들 또는 다른 식별자들을 포함할 수 있다. 복수의 정책 식별자들(또는 참조들)은, 예를 들어, 복수의 XML "Policy URI" XML 엘리먼트들을 사용함으로써 OnProxyInvoke 내에 포함될 수 있다. OnProxyInvoke 어써션들에 대해 사용되는 클라이언트 유형(예를 들어, REST 클라이언트, SOAP 클라이언트, URL/웹 클라이언트, 등)은, 예를 들어, 런타임 인수들에 기초하여 런타임 시에 프록시 서버(420)에 의해 결정될 수 있다. OnProxyInvoke 어써션들은 또한 다른 정책들을 참조하게 할 수 있거나 및/또는 다른 어써션들을 포함할 수 있다.
현재 메시지 프로세싱 포인트를 결정하는 단계의 다른 예는, 엔드-투-엔드 프로세싱 흐름 동안 어떤 포인트에서, 프록시 서버(420)가 메시지를 하나의 메시지 유형으로부터 다른 메시지 유형으로 변환해야만 한다는 것을 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트는 "MessageTransformation" 어써션 또는 유사한 것으로서 지칭될 수 있다. 예를 들어, 프록시 서버(420)는 제 1 메시지 유형(예를 들어, REST 요청)을 갖는 메시지를 수신할 수 있으며, 메시지를 분석하여 메시지가 오로지 제 2 메시지 유형(예를 들어, 백(back) SOAP 서비스)만을 수락하는 백엔드 서비스 또는 애플리케이션에 대해 의도된다는 것을 결정할 수 있다. 이러한 결정 이후에, 프록시 서버(420)는, 변환된 메시지를 의도된 목적지로 전송하기 이전에 메시지에 대하여 적절한 MessageTransformation 어써션을 실행할 수 있다. 프록시 서버(420)에 의해 지원될 수 있는 변환 정책들의 예들은, 비제한적으로, XML 대 자바스크립트 객체 표기법(JSON) 및 JSON 대 XML 정책들, XML 대 SOAP 및 SOAP 대 XML 정책들, 및 JSON 대 SOAP 및 SOAP 대 JSON 정책들을 포함할 수 있다. 다른 잘-알려진 매체 유형들 사이의 변환이 다양한 실시예들에서 지원될 수 있다. 프록시 서버(420)는 자동적으로 백엔드 서비스 가상화의 시점에 적절한 변환 정책들을 첨부(attach)할 수 있으며, 변환들은 프록시 서버(420)에 또는 컴퓨팅 환경(400) 내의 어딘가에 설치된 하나 이상의 번역 프레임워크들을 사용하여 수행될 수 있다. 일부 실시예들에 있어서, MessageTransformation 어써션들은 오로지 리버스 프록시 모드에서만 동작할 수 있으며, 즉, 이들은 오로지 내부 웹 자원들(430)에 대한 외부 클라이언트 디바이스들(410)로부터의 요청들의 변환들에 대해서만 그리고 다시 클라이언트 디바이스들(410)로의 응답들에 대해서만 지원될 수 있다. 다른 실시예들에 있어서, MessageTransformation 어써션들은 포워드 프록시 및 리버스 프록시 사용-경우들 둘 모두에 대하여 지원될 수 있다.
현재 메시지 프로세싱 포인트를 결정하는 단계의 다른 예는, 메시지에 대한 엔드-투-엔드 프로세싱 흐름 동안 어떤 포인트에서 오류가 발생하였다는 것을 결정하는 단계를 포함할 수 있다. 메시지의 엔드-투-엔드 프로세싱 흐름 내의 이러한 포인트는 "OnError" 어써션 또는 유사한 것으로서 지칭될 수 있다. 메시지에 대한 OnError 어써션을 트리거(trigger)하는(예를 들어, 메시지와 연관된 OnError 어써션 내의 식별된 하나 이상의 정책들의 실행을 트리거하는) 오류들은 프록시 서버(420)에 의해 이루어진 프로세싱 내에서 발생하는 오류들 및/또는 백엔드 컴퓨터 서버 또는 디바이스로부터 프록시 서버(420)에 의해 수신된 오류일 수 있다. 예를 들어, 프록시 서버(420)는, 인증 서비스, 토큰 번역 서비스, 또는 백엔드 웹 서비스/애플리케이션(430 또는 450)과 같은 메시지의 프로세싱 흐름 동안 호출된 백엔드 컴퓨터 서버로부터 오류 표시를 수신할 수 있다. 추가적으로, 프록시 서버(420)는 메시지 프로세싱 태스크(task)들을 수행하는 동안 오류들을 식별하거나 또는 생성할 수 있으며, OnError 어써션 내의 정책들을 트리거하는 메시지는 프록시 서버(420)에 의해 이루어진 메시지 프로세싱 내에서 발생하는 오류들, 예컨대 메시지를 파싱하거나 또는 검증함에 있어서의 오류들이거나, 또는 메시지 변환 정책을 수행할 때의 오류들일 수 있다. 따라서, 특정 메시지 프로세싱 정책들이 적용될 수 있는 프로세싱 흐름들 내의 포인트들("어써션들"로도 지칭됨)의 이전의 예들의 일부와 다르게, OnError 어써션들은 조건적일 수 있다. 즉, 메시지의 엔드-투-엔드 흐름 동안, 프록시 서버(420)는, 프로세싱 동안 발생할 수 있는 오류들의 수 및 유형에 의존하여 OnError 어써션으로부터의 정책을 한번 적용하거나, 복수 회 적용하거나, 또는 전혀 적용하지 않을 수 있다. 다양하고 상이한 실시예들에 있어서, OnError 어써션들은 포워드 프록시 사용-경우들에, 또는 리버스 프록시 사용-경우들에, 또는 이들 둘 모두에 적용될 수 있다.
단계(504)에서, 단계(501)에서 수신된 메시지를 프로세싱하기 위한 하나 이상의 특정 정책들이 프록시 서버(420)에 의해 선택되고 검색될 수 있다. 이상에서 논의된 바와 같이, 프록시 서버(420)에 의해 선택되고 메시지들에 적용되는 특정 정책들은 보안 정책들뿐만 아니라 임의의 다른 유형들의 통신 관리 정책들을 포함할 수 있다. 예를 들어 그리고 비제한적으로, 이러한 정책들은, 다른 것들 중에서도 특히 인증, 인가, 감사, 싱글 사인 온, 보안 정책 집행, 키 관리 및 분배, 보안 통신, 보안 데이터 저장, 및 보안 데이터 공유와 관련된 기능들을 수행할 수 있다.
정책들은, 먼저 메시지와 연관된 엔드-투-엔드 프로세싱 흐름(들)(예를 들어, 정책 모델들)을 검색하고 그런 다음 엔드-투-엔드 흐름 내의 현재 포인트에서 메시지에 적용될 특정 정책들을 식별하기 위하여 단계(503)에서 결정된 엔드-투-엔드 프로세싱 흐름들 내의 현재 포인트(예를 들어, 어써션)를 사용함으로써 프록시 서버(420)에 의해 단계(504)에서 선택될 수 있다. 예를 들어, 단계(501)에서 수신된 메시지가 웹 서비스/애플리케이션(430)에 대한 외부 클라이언트 디바이스(410)로부터의 요청인 경우, 그리고, 예시적인 정책 모델(600a)이 이러한 메시지들의 엔드-투-엔드 프로세싱을 제어하기 위해 사용되는 경우, 프록시 서버(420)는 정책 모델(600a)의 "on-request" 태그 내에서 식별되는 임의의 정책들을 검색할 수 있다. 이러한 경우에 있어서, 정책 모델(600a)의 "on-request" 태그 내에서 2개의 정책 식별자들이 발견되며, 이들의 각각은 "PolicyReference URI" 태그 내에 포함된다. 따라서, 이러한 예에 있어서, 프록시 서버(420)는 단계(505)에서 메시지를 프로세싱하기 위하여 사용될 이러한 2개의 정책들을 단계(504)에서 선택할 수 있다.
다른 예로서, 단계(501)에서 수신된 메시지가 외부 웹 서비스/애플리케이션(450)을 액세스하기 위한 내부 클라이언트 디바이스(440)로부터의 요청인 경우, 그리고 이러한 메시지들의 엔드-투-엔드 프로세싱을 제어하기 위하여 예시적인 정책 모델(600b)이 사용되는 경우, 프록시 서버(420)는 정책 모델(600b)의 "on-request" 태그 내에서 식별되는 정책을 검색할 수 있다. 대안적으로, "on-request" 정책이 이미 적용되었고 프록시 서버(420)가 외부 웹 서비스/애플리케이션(450)으로 요청을 송신할 준비가 된 경우, 프록시 서버(420)는 정책 모델(600b)의 "invoke-proxy" 태그 내에서 식별되는 정책을 검색할 수 있다.
단계(505)에서, 프록시 서버(420)는 단계(504)에서 선택된 정책들을 사용하여 메시지를 프로세싱할 수 있다. 이상에서 논의된 바와 같이, 프록시 서버(420)는, 메시지에 대한 미리 결정된 엔드-투-엔드 프로세싱 흐름으로부터 URI들 또는 다른 정책 식별자들을 식별함으로써 메시지에 적용될 적절한 정책들을 결정할 수 있다. 예시적인 정책 모델들(600a 및 600b)에 있어서, 적용될 정책들의 URI들은 엔드-투-엔드 프로세싱 흐름 내의 현재 포인트에 대응하는 어써션들의 "PolicyReference URI" 태그들 내에서 발견될 수 있다. 이러한 정책 URI들은 정책들의 저장 위치들을 참조할 수 있다. 다른 예들에 있어서, 정책 식별자들이 URI들로서 표현될 필요가 없으며, 이들은 API 또는 서비스 식별자들, 함수 명칭들, 메소드 명칭들, 및/또는 동작 명칭들, 및 유사한 것과 같은 데이터를 식별하는 다른 것을 포함할 수 있다. 어떤 경우에든지, 정책 식별자들은 메시지 프로세싱 정책들에 대한 저장 위치 또는 다른 액세스 정보를 식별할 수 있다. 정책들 자체가 다양한 형태의 컴퓨터-판독가능 매체, 예컨대 XML, 자바스크립트, 또는 다른 유형들의 실행가능 소프트웨어 컴포넌트들로 저장될 수 있다.
메시지 프로세싱 정책들은 데이터 저장부들, 예컨대 컴퓨팅 환경(400)의 내의 다양하고 상이한 서버들 또는 디바이스들 내에 위치된 데이터베이스들 및/또는 파일-기반 저장 시스템들에 저장될 수 있다. 예를 들어, 메시지 변환 정책들, 메시지 조절 정책들, 로드 밸런싱 정책들, 및 상대적으로 변화하지 않을 수 있으며 보안 데이터가 없는 다른 정책들과 같은 특정 정책들은 프록시 서버(420) 내에(예를 들어, 메시지 프로세싱 정책 데이터 저장부(428) 내에) 로컬적으로 저장될 수 있다. 사용자 인증/인가 정책들 및 빈번하게 변화될 수 있거나 또는 보안 데이터를 포함할 수 있는 다른 정책들과 같은 다른 정책들은 신뢰되는 내부 컴퓨터 네트워크(460)의 보안 서버 또는 저장 시스템 내에 저장될 수 있다. 다른 경우들에 있어서, 특정 정책들은 외부 네트워크들 내의 보안 제 3 자 서버들 또는 클라이언트 디바이스들(410) 상에 저장될 수 있다. 프록시 서버(420)는 단계(505)에서 이러한 다양한 위치들 중 임의의 위치로부터 정책들을 검색하고 적용하도록 구성될 수 있다.
단계(505)에서의 다양한 보안 정책들 및/또는 다른 통신 관리 정책들을 사용하여 메시지를 프로세싱하는 단계 이후에, 단계(506)에서, 프록시 서버(420)는 프로세싱된 메시지를 그것의 의도된 목적지로 송신할 수 있다. 이상에서 논의된 바와 같이, 의도된 목적지는 메시지 헤더 및/또는 메시지 바디의 부분들을 파싱하고 분석함으로써 단계(502)에서 결정될 수 있다. 메시지의 의도된 목적지는, 웹 서비스/애플리케이션(430)에 대한 요청, 또는 내부 클라이언트 디바이스(440)로의 응답 또는 다른 송신과 같이 내부 네트워크(460) 내에 존재할 수 있다. 대안적으로, 메시지의 의도된 목적지는, 외부 웹 서비스/애플리케이션(450)에 대한 요청, 또는 외부 클라이언트 디바이스(410)로의 응답 또는 다른 송신과 같이 외부 네트워크 내에 존재할 수 있다.
이상에서 논의된 바와 같이, 프록시 서버(420) 내에서 메시지를 프로세싱하기 위한 특정 정책들의 선택 및 적용은, 메시지에 대한 미리 결정된 엔드-투-엔드 프로세싱 흐름과 함께 엔드-투-엔드 흐름 내의 메시지에 대한 현재 프로세싱 포인트의 결정에 의해 결정될 수 있다. 이상에서 소개된 정책 모델들은, 프록시 서버(420)가 메시지의 엔드-투-엔드 프로세싱 흐름의 다양한 포인트들에서 메시지에 적용할 메시지 프로세싱 정책들의 세트를 정의할 수 있다. 예를 들어, 예시적인 정책 모델들(600a 및 600b)은 각기 가상 애플리케이션(즉, 리버스 프록시 사용-경우) 및 프록시 애플리케이션(즉, 포워드 프록시 사용-경우)에 대한 엔드-투-엔드 프로세싱 흐름을 정의한다. 이러한 정책 모델들은 메시지의 엔드-투-엔드 프로세싱 흐름 내의 다양한 포인트들(또는 어써션들)을 식별하며, 각각의 식별된 프로세싱 포인트 또는 어써션에서 메시지에 적용될 특정 정책들을 포함한다.
일부 실시예들에 있어서, 엔드-투-엔드 프로세싱 흐름들을 정의하기 위한 정책 모델들 및 다른 기술들은 정책 템플릿(template)들의 세트를 사용하여 생성될 수 있다. 예를 들어, 도 7a 내지 도 7d를 간략하게 참조하면, 4개의 상이한 어써션들에 대응하는 4개의 예시적인 정책 템플릿들이 도시된다. 도 7a는 예시적인 "On Request" 정책 템플릿을 도시하며; 도 7b는 예시적인 "Invoke" 정책 템플릿을 도시하고; 도 7c는 예시적인 "Invoke Proxy" 정책 템플릿을 도시하며; 도 7d는 예시적인 "On Response" 정책 템플릿을 도시한다. 도 7a 내지 도 7d의 정책 템플릿들의 각각이 "PolicyReference URI" 태그를 포함하지만, 이러한 템플릿들에서 URI는 빈 채로 남겨져 있다. 따라서, 이러한 템플릿들은 정책 모델들(600a 및 600b)과 같은 정책 모델 엔드-투-엔드 프로세싱 흐름들을 생성하기 위하여 사용될 수 있다. 예를 들어, 도 7a 내지 도 7d의 템플릿들 중 하나 이상이 복사될 수 있으며, 적절한 정책 URI들이 각각의 템플릿 복사본 내에 삽입될 수 있다. 그런 다음, 맞춤화된 템플릿들이 엔드-투-엔드 프로세싱 흐름 동안 실행될 수 있는 정책들을 정의하기 위하여 적절한 정책 모델들에 부가될 수 있다.
엔드-투-엔드 프로세싱 흐름 동안 실행될 정책들 및 어써션들을 정의하는 것에 더하여, 정책 모델들(및 다른 형태들의 미리 결정된 엔드-투-엔드 프로세싱 흐름들)이 또한 특정 정책들이 수행되거나 또는 수행되지 않을 수 있는 조건들을 정의할 수 있다. 일부 실시예들에 있어서, 정책 모델은 정책 모델 내에서 참조되는 정책들의 각각을 수행하기 위한 조건들을 구현하기 위한 논리적 명령어들의 세트를 포함할 수 있다. 예를 들어, 정책 모델은, 프록시 서버(420)에게 일부 메시지 유형들(예를 들어, SOAP, REST, 또는 URL 메시지들)에 대하여 특정 정책이 반드시 수행되어야만 하지만 다른 메시지 유형들에 대해서는 그렇지 않다는 것을 지시하는 조건들을 포함할 수 있다. 추가적으로, 이상에서 논의된 바와 같이, 정책 모델들은 서비스/애플리케이션 레벨에서 및/또는 일부 경우들에 있어서는 동작/메소드 레벨에서 선택적으로 정책들을 적용할 수 있으며, 따라서, 특정 정책들의 적용은 호출되는 백엔드 웹 애플리케이션/서비스(430)뿐만 아니라 애플리케이션/서비스(430) 내에서 호출되는 특정 동작들 또는 메소드들에 의존할 수 있다. 다양한 추가적인 실시예들에 있어서, 일부 정책 모델들은, 프록시 서버(420)에게 특정 정책이 일부 사용자들에 대해서 반드시 실행되어야 하지만 다른 사용자들에 대해서는 그렇지 않거나, 일부 클라이언트 디바이스 유형들에 대해서 반드시 실행되어야 하지만 다른 클라이언트 디바이스 유형들에 대해서는 그렇지 않거나, 일부 백엔드 웹 서비스들/애플리케이션들에 대해서 반드시 실행되어야 하지만 다른 백엔드 웹 서비스들/애플리케이션들에 대해서는 그렇지 않거나, 및/또는 메시지와 관련된 임의의 다른 특성들을 지시하는 조건들을 포함할 수 있다.
이제 도 8을 참조하면, 외부 클라이언트 디바이스(410)로부터 내부 SOAP 웹 서비스(430)로 전송된 REST 요청의 엔드-투-엔드 프로세싱 흐름의 예시적인 다이어그램이 도시된다. 이러한 예에 있어서, 프로세싱 흐름의 실행은 이상에서 설명된 바와 같은 컴퓨팅 환경(400) 내의 다양한 다른 컴포넌트들과 함께 프록시 서버(420)에 의해 수행될 수 있다. 이러한 예에 있어서, 초기 메시지는 내부 컴퓨터 네트워크(460) 내의 백엔드 웹 서비스(430)에 대해 의도된 클라이언트 디바이스(410)로부터의 REST 요청이며, 따라서, 프록시 서버(420)는 리버스 프록시 모드로 동작할 수 있다.
이상에서 논의된 바와 같이, 이러한 예에 있어서, 엔드-투-엔드 프로세싱 흐름 다이어그램(800)은, 특정 프로세싱 포인트들(또는 어써션들) 및 엔드-투-엔드 프로세싱 흐름 동안 각각의 프로세싱 포인트에서 프록시 서버(420)에 의해 반드시 수행되어야만 하는 특정 정책들을 정의하는 미리 결정된 정책 모델에 의해 제어될 수 있다. 이러한 예에 있어서, REST 요청이 단계(801)에서 클라이언트 디바이스(410)로부터 수신된다. 단계(802)에서, 프록시 서버(420)는 이러한 요청의 프로세싱을 제어하는 정책 모델 내에서 식별된 하나 이상의 "On Request" 정책들을 실행할 수 있다. 이러한 예에 있어서, "On Request" 정책은, 단계(803)에서, 클라이언트 디바이스(410)로부터 수신된 사용자 증명서들을 인증하기 위하여 및/또는 요청된 백엔드 웹 서비스(430)에 액세스하기 위한 사용자의 인가 허가들을 확인(confirm)하기 위하여 인증/인가 서비스에 액세스하는 단계를 포함한다. 단계(804)에서, 프록시 서버(420)는 요청된 서비스가 SOAP 입력을 필요로 한다는 것을 결정하며, 따라서, REST 요청을 SOAP 요청으로 변환하기 위하여 단계(805)에서 "Message Transformation" 정책을 실행한다. 단계(806)에서, 프록시 서버(420)는, 단계(807)에서 백엔드 SOAP 웹 서비스(430)로 SOAP 요청을 송신하는 단계 이전에, 다양한 보안 및 통신 관리 기능들을 구현할 수 있는 "Invoke Service" 정책을 실행한다. 백엔드 SOAP 웹 서비스(430)로부터의 SOAP 응답을 수신하는 단계 이후에, 단계(808)에서, 프록시 서버(420)는 클라이언트(410)로의 출력이 REST 출력이 되어야만 하는지 여부를 다시 결정할 수 있으며, 따라서, SOAP 응답을 REST 응답으로 변환하기 위하여 단계(809)에서 다른 "Message Transformation" 정책을 실행할 수 있다. 단계(810)에서, 프록시 서버(420)는, 단계(811)에서 SOAP 응답을 클라이언트 디바이스로 송신하는 단계 이전에, 다양한 추가적인 보안 및 통신 관리 기능들을 구현할 수 있는 "On Response" 정책을 실행한다.
이제 도 9를 참조하면, 내부 클라이언트 디바이스(440)로부터 외부 웹 서비스 또는 애플리케이션(450)으로 전송된 웹 자원들에 대한 요청의 엔드-투-엔드 프로세싱 흐름의 다른 예시적인 다이어그램이 도시된다. 이전의 예에서와 같이, 이러한 예에 있어서 프로세싱 흐름의 실행은 이상에서 설명된 바와 같은 컴퓨팅 환경(400) 내의 다양한 다른 컴포넌트들과 함께 프록시 서버(420)에 의해 수행될 수 있다. 이러한 예에 있어서, 초기 메시지는 외부 웹 서비스 또는 애플리케이션(450)에 대해 의도된 내부 컴퓨터 네트워크(460) 내의 클라이언트 디바이스(440)로부터의 요청이며, 따라서, 프록시 서버(420)는 포워드 프록시 모드로 동작할 수 있다.
이상에서 논의된 바와 같이, 이러한 예에 있어서, 엔드-투-엔드 프로세싱 흐름 다이어그램(900)은, 특정 프로세싱 포인트들(또는 어써션들) 및 엔드-투-엔드 프로세싱 흐름 동안 각각의 프로세싱 포인트에서 프록시 서버(420)에 의해 반드시 수행되어야만 하는 특정 정책들을 정의하는 미리 결정된 정책 모델에 의해 제어될 수 있다. 이러한 예에 있어서, 웹 요청이 단계(901)에서 클라이언트 디바이스(440)로부터 수신된다. 단계(902)에서, 프록시 서버(420)는 이러한 요청의 프로세싱을 제어하는 정책 모델 내에서 식별된 하나 이상의 "On Request" 정책들을 실행할 수 있다. 임의의 "On Request" 정책들을 실행하는 단계 이후에, 프록시 서버(420)는, 단계(904)에서 외부 웹 서비스 또는 애플리케이션(450)으로 요청을 송신하는 단계 이전에, 다양한 보안 및 통신 관리 기능들을 구현하기 위하여 단계(903)에서 하나 이상의 "On Invoke" 정책들을 실행할 수 있다. 이러한 예에 있어서, 프록시 서버(420)는, 엔드-투-엔드 프로세싱 흐름 동안 발생한 오류, 예컨대 외부 웹 서비스 또는 애플리케이션(450)으로부터 수신된 오류 또는 프록시 서버(420)에 의해 수행된 프로세싱 내에서 발생하는 오류를 식별한다. 따라서, 단계(905)에서, 프록시 서버(420)는 다양한 보안 기능들, 분석들, 및 오류 처리를 구현하기 위하여 하나 이상의 "On Error" 정책들을 실행할 수 있다. 이러한 경우에 있어서, "On Error" 정책들은 프록시 서버(420)에게 외부 웹 서비스 또는 애플리케이션(450)으로 다시 요청을 재송신하기 이전에 추가적인 메시지 프로세싱을 수행할 것을 지시할 수 있다. 따라서, 프록시 서버(420)는 "On Error" 정책들이 적용된 이후에 단계(906)에서 "On Invoke" 정책들을 재-실행할 수 있으며, 그런 다음 단계(907)에서 외부 웹 서비스 또는 애플리케이션(450)으로 요청을 재송신할 수 있다. 백엔드 웹 서비스 또는 애플리케이션(450)으로부터 응답을 수신하는 단계 이후에, 단계(908)에서, 프록시 서버(420)는, 단계(909)에서 내부 클라이언트 디바이스(440)로 응답을 송신하는 단계 이전에, 다양한 추가적인 보안 및 통신 관리 기능들을 구현할 수 있는 "On Response" 정책을 실행할 수 있다.
이상의 예들이 예시하는 바와 같이, 본원에서 설명되는 다양한 실시예들은, 메시지의 엔드-투-엔드 프로세싱 흐름의 전체에 걸친 다양하고 상이한 프로세싱 포인트들에서 DMZ 또는 다른 논리적인 또는 물리적인 서브네트워크 내에서, 상이한 보안 정책들 및 다른 통신 관리 정책들이 적용될 수 있는 동적 정책 모델들을 지원할 수 있다. 이러한 동적 정책 모델 프레임워크는 악의적인 외부 컴퓨팅 시스템들로부터의 공격들을 방지하기 위한 추가적인 보안성을 구축 및 구현하기 위하여 사용될 수 있으며, 라스트 마일(last mile) 보안 인프라스트럭처 내에서(예를 들어, 백엔드 웹 서비스들/애플리케이션들(430) 내에서) 가능하지 않거나 또는 바람직하지 않을 수 있었던 추가적인 유형들의 보안 정책들을 구현할 수 있다. 추가적으로, 강건한 인증 및 인가 시스템들이, 토큰 번역 및/또는 싱글-사인-온 액세스 제어 시스템들과 같은 본원에서 설명된 동적 정책 모델을 사용하여 구현될 수 있다. 예를 들어, 클라이언트 디바이스(410)는 사용자명칭/패스워드 또는 다른 사용자 증명서들을 통해 인증할 수 있으며, 미리 결정된 엔드-투-엔드 프로세싱 흐름은, 상이한 유형들의 다양하고 상이한 액세스 토큰들(예를 들어, 커베로스 토큰들, SPNEGO 토큰들, 사용자명칭 토큰들, NTLM 토큰들, SAML 토큰들, 등)을 검색하거나 또는 이를 생성하기 위하여, 내부 네트워크(460) 내의 신뢰되는 인증/인가 서비스들로부터 토큰 검색 및 검증을 수행하는 프록시 서버(420) 내에서 실행될 수 있다. 따라서, 사용자가 유효한 증명서들의 하나의 세트를 제공하고 성공적으로 인증 및 인가된 이후에, 프록시 서버(420) 내의 다양한 정책 모델들이, 사용자에 의해 그 이후에 액세스되는 다양하고 상이한 백엔드 웹 서비스들/애플리케이션들(430)에 대한 대응하는 토큰 유형을 검색하거나 또는 이를 생성함으로써 싱글-사인-온 액세스 제어 시스템을 구현하기 위하여 사용될 수 있다.
본 출원의 일 실시예에 따르면, 프로세싱 유닛 및 통신 유닛을 포함하는 시스템이 제공된다. 이러한 시스템은, 본 발명의 원리들을 수행하기 위한 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 프로세싱 유닛 및 통신 유닛은 도 3에 예시된 컴포넌트들과 같은 이상에서 설명된 컴포넌트들에 의해 구현될 수 있다는 것이 당업자들에게 이해될 것이다. 한편, 프로세싱 유닛 및 통신 유닛이 이상에서 설명된 바와 같은 본 발명의 원리들을 구현하기 위하여 결합되거나 또는 서브-유닛들로 분리될 수 있다는 것이 당업자들에게 이해될 것이다. 따라서, 본원의 설명은 본원에서 설명된 기능적 유닛들의 임의의 가능한 조합 또는 분리 또는 추가적인 정의를 지원할 수 있다.
이상의 실시예의 일 예에 있어서, 프로세싱 유닛 및 통신 유닛은 다음의 동작들을 수행하기 위하여 협력할 수 있다: 제 1 메시지를 수신하는 동작으로서, 여기에서 시스템은 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성되며, 시스템은 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 하나의 세트를 외부 컴퓨터 네트워크에 노출시키는, 동작; 제 1 메시지에 대해 의도된 목적지를 결정하는 동작; 제 1 메시지에 대해 의도된 목적지에 기초하여 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하는 동작; 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내에서 현재 포인트를 결정하는 동작; 메시지들을 프로세싱하기 위한 복수의 정책들로부터 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작으로서,선택은 미리 결정된 프로세싱 흐름 내의 현재 포인트 또는 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정 중 적어도 하나에 기초하는, 동작; 선택된 정책에 따라 제 1 메시지를 프로세싱하는 동작; 및 제 1 메시지를 프로세싱하는 동작 이후에, 제 1 메시지를 의도된 목적지로 송신하는 동작.
다른 예에 있어서, 프로세싱 유닛 및 통신 유닛은 다음의 동작들을 더 수행하기 위하여 협력할 수 있다: 제 1 메시지가 내부 컴퓨터 네트워크의 SOAP 가상 서비스 내의 하나 이상의 단순 객체 접근 프로토콜(Simple Object Access protocol; SOAP) 동작들을 호출하거나 또는 이의 부분이라는 것을 결정하는 동작; 결정된 SOAP 동작들 및 SOAP 가상 서비스에 기초하여 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작; 및 선택된 정책에 따라 제 1 메시지를 프로세싱하는 동작 이후에, 제 1 메시지 내의 데이터를 사용하여 결정된 하나 이상의 SOAP 동작들을 호출하는 동작.
또 다른 예에 있어서, 프로세싱 유닛 및 통신 유닛은 다음의 동작들을 더 수행하기 위하여 협력할 수 있다: 제 1 메시지가 내부 컴퓨터 네트워크의 가상 웹 애플리케이션 또는 표현 상태 전환(Representational State Transfer; REST) 가상 서비스와 연관된 하나 이상의 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 메소드들에 대응한다는 것을 결정하는 동작; 결정된 HTTP 메소스들 및 REST 가상 서비스 또는 가상 웹 애플리케이션에 기초하여 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작; 및 선택된 정책에 따라 제 1 메시지를 프로세싱하는 동작 이후에, 제 1 메시지 내의 데이터를 사용하여 결정된 하나 이상의 HTTP 메소드들을 호출하는 동작.
이상의 설명에 있어서, 예시의 목적들을 위하여, 방법들이 특정한 순서로 설명되었다. 대안적인 실시예들에 있어서, 방법들은 설명된 것과는 상이한 순서로 수행될 수 있다는 것이 이해되어야만 한다. 이상에서 설명된 방법들은 하드웨어 컴포넌트들에 위해 수행될 수 있거나 또는, 범용 또는 전용 프로세서 또는 로직 회로들과 같은 기계가 방법들을 수행하기 위한 명령어들로 프로그래밍되게끔 하기 위하여 사용될 수 있는 기계-실행가능 명령어들의 시퀀스들로 구현될 수 있다. 이러한 기계-실행가능 명령어들은 하나 이상의 기계 판독가능 매체들 또는 메모리 디바이스들, 예컨대 CD-ROM들, 또는 다른 유형의 광 디스크들, 플로피 디스켓들, ROM들, RAM들, EPROM들, EEPROM들, 자기 또는 광 카드들, 플래시 메모리, 또는 전자적 명령어들을 저장하기에 적절한 다른 유형들의 기계-판독가능 매체들 또는 메모리 디바이스들 상에 저장될 수 있다. 대안적으로, 방법들은 하드웨어 및 소프트웨어의 조합에 의해 수행될 수 있다.
본 발명의 예시적이고 지금 선호되는 실시예들이 본원에서 상세하게 설명되었지만, 발명적인 개념들이 달리 다양하게 구현되고 이용될 수 있으며, 첨부된 청구항들이 종래 기술에 의해 제한되는 것을 제외하고는 이러한 변형예들을 포함하는 것으로 해석되도록 의도된다는 것이 이해될 것이다.

Claims (20)

  1. 컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하는 방법으로서,
    내부 컴퓨터 네트워크의 서브네트워크 내의 프록시(proxy) 서버에서 제 1 메시지를 수신하는 단계로서, 상기 프록시 서버는 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 단계;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 단계;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 프록시 서버가 포워드(forward) 프록시 또는 리버스(reverse) 프록시로서 역할해야 하는지 여부를 결정하는 단계;
    상기 프록시 서버 내에서 상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 단계;
    상기 프록시 서버 내에서 메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 단계로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 프록시 서버가 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 단계;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 단계;
    상기 제 1 메시지를 프로세싱하는 단계 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 단계;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 단순 객체 접근 프로토콜(Simple Object Access protocol; SOAP) 가상 서비스 내의 하나 이상의 SOAP 동작들을 호출하거나 또는 이의 부분이라는 것을 결정하는 단계;
    상기 결정된 SOAP 동작들 및 상기 SOAP 가상 서비스에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 결정하는 단계; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 단계 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 SOAP 동작들을 호출하는 단계를 포함하는, 방법.
  2. 컴퓨터 네트워크들 사이에서 송신되는 메시지들을 프로세싱하는 방법으로서,
    내부 컴퓨터 네트워크의 서브네트워크 내의 프록시(proxy) 서버에서 제 1 메시지를 수신하는 단계로서, 상기 프록시 서버는 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 단계;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 단계;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 프록시 서버가 포워드(forward) 프록시 또는 리버스(reverse) 프록시로서 역할해야 하는지 여부를 결정하는 단계;
    상기 프록시 서버 내에서 상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 단계;
    상기 프록시 서버 내에서 메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 단계로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 프록시 서버가 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 단계;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 단계;
    상기 제 1 메시지를 프로세싱하는 단계 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 단계;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 표현 상태 전환(Representational State Transfer; REST) 가상 서비스 또는 가상 웹 애플리케이션과 연관된 하나 이상의 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 메소드(method)들에 대응한다는 것을 결정하는 단계;
    상기 결정된 HTTP 메소드들 및 상기 REST 가상 서비스 또는 가상 웹 애플리케이션에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 선택하는 단계; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 단계 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 HTTP 메소드들을 호출하는 단계를 포함하는, 방법.
  3. 청구항 1 또는 청구항 2에 있어서,
    상기 프록시 서버는 보안 프록시를 포함하며, 상기 선택된 정책은 하나 이상의 웹 서비스 보안 정책들을 호출하는 기계-실행가능 코드를 포함하는, 방법.
  4. 청구항 1 또는 청구항 2에 있어서,
    상기 프록시 서버는 상기 내부 컴퓨터 네트워크의 물리적인 서브네트워크 내에서 동작하는 컴퓨터 시스템을 포함하는, 방법.
  5. 청구항 1 또는 청구항 2에 있어서,
    상기 프록시 서버는 상기 내부 컴퓨터 네트워크의 논리적인 서브네트워크 내에서 실행되는 프록시 서버 애플리케이션을 포함하는, 방법.
  6. 청구항 1 또는 청구항 2에 있어서,
    상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 선택하는 단계는,
    상기 제 1 메시지에 대한 상기 프로세싱 흐름 동안 오류가 발생하였다는 것을 결정하는 단계; 및
    상기 오류가 발생하였다는 상기 결정에 기초하여 상기 정책을 선택하는 단계를 포함하는, 방법.
  7. 청구항 1 또는 청구항 2에 있어서,
    상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 선택하는 단계는,
    상기 제 1 메시지에 대해 인커밍(incoming) 메시지 포맷을 결정하는 단계;
    상기 제 1 메시지가 상기 인커밍 메시지 포맷과는 상이한 요구되는 아웃고잉(outgoing) 메시지 포맷으로 변환되어야만 한다는 것을 결정하는 단계; 및
    상기 제 1 메시지가 변환되어야만 한다는 상기 결정에 기초하여 상기 정책을 선택하는 단계를 포함하는, 방법.
  8. 청구항 1 또는 청구항 2에 있어서,
    상기 제 1 메시지에 대한 상기 프로세싱 흐름 내의 상기 현재 포인트를 결정하는 단계는,
    상기 제 1 메시지가 상기 외부 컴퓨터 네트워크 내의 클라이언트 디바이스로부터의 요청에 대응한다는 것을 결정하는 단계; 또는
    상기 프록시 서버가 상기 내부 컴퓨터 네트워크 내의 웹 애플리케이션 또는 웹 서비스로 상기 요청을 송신해야만 한다는 것을 결정하는 단계, 중 적어도 하나를 포함하는, 방법.
  9. 청구항 1 또는 청구항 2에 있어서,
    상기 제 1 메시지에 대한 상기 프로세싱 흐름 내의 상기 현재 포인트를 결정하는 단계는,
    상기 제 1 메시지가 상기 프록시 서버에 의해 송신된 이전의 메시지에 대한 상기 내부 컴퓨터 네트워크 내의 웹 애플리케이션 또는 웹 서비스로부터의 응답에 대응한다는 것을 결정하는 단계; 또는
    상기 프록시 서버가 상기 응답을 상기 외부 컴퓨터 네트워크 내의 클라이언트 디바이스로 송신해야만 한다는 것을 결정하는 단계, 중 적어도 하나를 포함하는, 방법.
  10. 삭제
  11. 청구항 1 또는 청구항 2에 있어서,
    상기 방법은,
    상기 제 1 메시지와 연관된 하나 이상의 사용자 증명서들을 수신하는 단계로서, 상기 제 1 메시지는 상기 내부 컴퓨터 네트워크의 제 1 웹 서비스를 액세스하기 위한 상기 외부 컴퓨터 네트워크 내의 클라이언트 디바이스로부터의 요청에 대응하는, 단계; 및
    상기 사용자 증명서들을 사용하여 상기 요청과 연관된 제 1 사용자를 인증하는 단계를 더 포함하는, 방법.
  12. 청구항 11에 있어서,
    상기 방법은,
    상기 제 1 웹 서비스를 액세스하기 위하여 제 1 토큰 유형의 인증 토큰이 요구된다는 것을 결정하는 단계;
    상기 내부 컴퓨터 네트워크의 웹 서비스로부터 제 1 인증 토큰을 검색하는 단계로서, 상기 제 1 인증 토큰은 상기 제 1 토큰 유형이며 상기 제 1 사용자와 연관되는, 단계; 및
    상기 요청에 따라 상기 제 1 웹 서비스를 액세스하기 위하여 상기 제 1 인증 토큰을 사용하는 단계를 더 포함하는, 방법.
  13. 청구항 1 또는 청구항 2에 있어서,
    상기 방법은,
    상기 미리 결정된 프로세싱 흐름 내의 상기 결정된 현재 포인트에 기초하여 OnRequest(), OnInvoke(), OnResponse(), 또는 onError() 메소드를 실행하는 단계를 더 포함하는, 방법.
  14. 시스템으로서,
    하나 이상의 프로세서들을 포함하는 프로세싱 유닛; 및
    상기 프로세싱 유닛과 결합되며 이에 의해 판독이 가능하고, 상기 프로세싱 유닛에 의해 실행될 때, 상기 프로세싱 유닛이 하기의 동작들을 수행하게끔 하는 명령어들의 세트를 저장하는 메모리로서, 상기 동작들은,
    제 1 메시지를 수신하는 동작으로서, 상기 시스템은 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성되며, 상기 시스템은 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 동작;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 동작;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하는 동작;
    상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 동작;
    메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작으로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 동작;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작;
    상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 동작;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 단순 객체 접근 프로토콜(Simple Object Access protocol; SOAP) 가상 서비스 내의 하나 이상의 SOAP 동작들을 호출하거나 또는 이의 부분이라는 것을 결정하는 동작;
    상기 결정된 SOAP 동작들 및 상기 SOAP 가상 서비스에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 결정하는 동작; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 SOAP 동작들을 호출하는 동작을 포함하는, 시스템.
  15. 청구항 14에 있어서,
    상기 시스템은 상기 내부 컴퓨터 네트워크의 물리적인 서브네트워크 내에서 동작하도록 구성되는, 시스템.
  16. 삭제
  17. 시스템으로서,
    하나 이상의 프로세서들을 포함하는 프로세싱 유닛; 및
    상기 프로세싱 유닛과 결합되며 이에 의해 판독이 가능하고, 상기 프로세싱 유닛에 의해 실행될 때, 상기 프로세싱 유닛이 하기의 동작들을 수행하게끔 하는 명령어들의 세트를 저장하는 메모리로서, 상기 동작들은,
    제 1 메시지를 수신하는 동작으로서, 상기 시스템은 내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성되며, 상기 시스템은 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 동작;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 동작;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하는 동작;
    상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 동작;
    메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작으로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 동작;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작;
    상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 동작;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 표현 상태 전환(Representational State Transfer; REST) 가상 서비스 또는 가상 웹 애플리케이션과 연관된 하나 이상의 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 메소드들에 대응한다는 것을 결정하는 동작;
    상기 결정된 HTTP 메소드들 및 상기 REST 가상 서비스 또는 가상 웹 애플리케이션에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 선택하는 동작; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 HTTP 메소드들을 호출하는 동작을 포함하는, 시스템.
  18. 프로세서에 의해 실행될 때, 상기 프로세서가 하기의 동작들을 수행하게끔 하는 저장된 명령어들의 세트를 포함하는 비-일시적인 컴퓨터-판독가능 메모리로서, 상기 동작들은,
    내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성된 시스템에서 제 1 메시지를 수신하는 동작으로서, 상기 시스템은 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 동작;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 동작;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하는 동작;
    상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 동작;
    메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작으로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 동작;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작;
    상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 동작;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 단순 객체 접근 프로토콜(Simple Object Access protocol; SOAP) 가상 서비스 내의 하나 이상의 SOAP 동작들을 호출하거나 또는 이의 부분이라는 것을 결정하는 동작;
    상기 결정된 SOAP 동작들 및 상기 SOAP 가상 서비스에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 결정하는 동작; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 SOAP 동작들을 호출하는 동작을 포함하는, 컴퓨터-판독가능 메모리.
  19. 삭제
  20. 프로세서에 의해 실행될 때, 상기 프로세서가 하기의 동작들을 수행하게끔 하는 저장된 명령어들의 세트를 포함하는 비-일시적인 컴퓨터-판독가능 메모리로서, 상기 동작들은,
    내부 컴퓨터 네트워크의 서브네트워크 내에서 동작하도록 구성된 시스템에서 제 1 메시지를 수신하는 동작으로서, 상기 시스템은 상기 내부 컴퓨터 네트워크의 웹 애플리케이션들 또는 서비스들의 세트를 외부 컴퓨터 네트워크들에 노출시키는, 동작;
    상기 제 1 메시지에 대해 의도된 목적지를 결정하는 동작;
    상기 제 1 메시지에 대해 상기 의도된 목적지에 기초하여 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부를 결정하는 동작;
    상기 제 1 메시지에 대한 미리 결정된 프로세싱 흐름 내의 현재 포인트를 결정하는 동작;
    메시지들을 프로세싱하기 위한 복수의 정책들로부터 상기 제 1 메시지를 프로세싱하기 위한 정책을 선택하는 동작으로서, 상기 선택은 상기 미리 결정된 프로세싱 흐름 내의 상기 현재 포인트 및 상기 시스템이 포워드 프록시 또는 리버스 프록시로서 역할해야 하는지 여부의 결정에 기초하는, 동작;
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작;
    상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지를 상기 의도된 목적지로 송신하는 동작;
    상기 제 1 메시지가 상기 내부 컴퓨터 네트워크의 표현 상태 전환(Representational State Transfer; REST) 가상 서비스 또는 가상 웹 애플리케이션과 연관된 하나 이상의 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol; HTTP) 메소드들에 대응한다는 것을 결정하는 동작;
    상기 결정된 HTTP 메소드들 및 상기 REST 가상 서비스 또는 가상 웹 애플리케이션에 기초하여 상기 제 1 메시지를 프로세싱하기 위한 상기 정책을 선택하는 동작; 및
    상기 선택된 정책에 따라 상기 제 1 메시지를 프로세싱하는 동작 이후에, 상기 제 1 메시지 내의 데이터를 사용하여 상기 결정된 하나 이상의 HTTP 메소드들을 호출하는 동작을 포함하는, 컴퓨터-판독가능 메모리.
KR1020177010222A 2014-09-23 2015-04-27 컴퓨터 서브네트워크들 내의 프록시 서버들 KR102282656B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217022779A KR102357697B1 (ko) 2014-09-23 2015-04-27 컴퓨터 서브네트워크들 내의 프록시 서버들

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462054613P 2014-09-24 2014-09-24
US62/054,613 2014-09-24
US14/696,186 2015-04-24
US14/696,186 US10362059B2 (en) 2014-09-24 2015-04-24 Proxy servers within computer subnetworks
PCT/US2015/027757 WO2016048418A1 (en) 2014-09-24 2015-04-27 Proxy servers within computer subnetworks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217022779A Division KR102357697B1 (ko) 2014-09-23 2015-04-27 컴퓨터 서브네트워크들 내의 프록시 서버들

Publications (2)

Publication Number Publication Date
KR20170063724A KR20170063724A (ko) 2017-06-08
KR102282656B1 true KR102282656B1 (ko) 2021-07-29

Family

ID=55526890

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177010513A KR102251803B1 (ko) 2014-09-24 2015-04-27 리버스 프록시 서버들 내의 서비스들
KR1020177010222A KR102282656B1 (ko) 2014-09-23 2015-04-27 컴퓨터 서브네트워크들 내의 프록시 서버들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177010513A KR102251803B1 (ko) 2014-09-24 2015-04-27 리버스 프록시 서버들 내의 서비스들

Country Status (6)

Country Link
US (2) US10362059B2 (ko)
EP (2) EP3198825B1 (ko)
JP (2) JP6496404B2 (ko)
KR (2) KR102251803B1 (ko)
CN (2) CN106716404B (ko)
WO (2) WO2016048418A1 (ko)

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533675B2 (en) * 2009-02-02 2013-09-10 Enterpriseweb Llc Resource processing using an intermediary for context-based customization of interaction deliverables
KR102122913B1 (ko) * 2014-05-30 2020-06-26 삼성에스디에스 주식회사 분산형 api 프록시 시스템 및 그러한 시스템에서 트래픽을 관리하는 장치 및 방법
US10362059B2 (en) * 2014-09-24 2019-07-23 Oracle International Corporation Proxy servers within computer subnetworks
US9946520B1 (en) * 2015-02-26 2018-04-17 MathNimbus Inc. Conversion of interpretive language functions into web applications or services
US10110496B2 (en) * 2015-03-31 2018-10-23 Juniper Networks, Inc. Providing policy information on an existing communication channel
US9977700B2 (en) 2015-04-03 2018-05-22 Oracle International Corporation System and method for providing an application programming interface for deploying a service bus artifact from a local development environment to a cloud environment
US10313451B2 (en) 2015-04-03 2019-06-04 Oracle International Corporation System and method for providing a configuration wizard for use in creating representational state transfer services for execution in a service bus runtime
US10091086B2 (en) 2015-04-03 2018-10-02 Oracle International Corporation System and method for providing an application programming interface manager for use with a service bus runtime
US9652269B2 (en) 2015-04-03 2017-05-16 Oracle International Corporation System and method for supporting representational state transfer services natively in a service bus runtime
US10860622B1 (en) * 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10015106B1 (en) 2015-04-06 2018-07-03 EMC IP Holding Company LLC Multi-cluster distributed data processing platform
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10791063B1 (en) 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10834054B2 (en) * 2015-05-27 2020-11-10 Ping Identity Corporation Systems and methods for API routing and security
US10863422B2 (en) * 2015-08-03 2020-12-08 Convida Wireless, Llc Mechanisms for ad hoc service discovery
US9712513B2 (en) * 2015-10-05 2017-07-18 Kony, Inc. Identity management over multiple identity providers
US10476886B2 (en) 2015-11-05 2019-11-12 Microsoft Technology Licensing, Llc Just-in-time access based on geolocation to maintain control of restricted data in cloud computing environments
US10484430B2 (en) 2015-11-05 2019-11-19 Microsoft Technology Licensing, Llc Just-in-time access based on screening criteria to maintain control of restricted data in cloud computing environments
US10560463B2 (en) * 2015-11-05 2020-02-11 Microsoft Technology Licensing, Llc Incident management to maintain control of restricted data in cloud computing environments
US10055269B2 (en) * 2015-11-20 2018-08-21 Sap Se Additional message information handling for applications
US10452442B2 (en) * 2015-11-27 2019-10-22 Huawei Technologies Co., Ltd. System and method for resource management
CN106856434B (zh) * 2015-12-08 2020-06-30 阿里巴巴集团控股有限公司 访问请求转换的方法和装置
US20170187752A1 (en) * 2015-12-24 2017-06-29 Steffen SCHULZ Remote attestation and enforcement of hardware security policy
US10656861B1 (en) 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
US10156842B2 (en) * 2015-12-31 2018-12-18 General Electric Company Device enrollment in a cloud service using an authenticated application
US9923905B2 (en) * 2016-02-01 2018-03-20 General Electric Company System and method for zone access control
US10306016B2 (en) 2016-02-01 2019-05-28 General Electric Company System and method for scoped attributes
JP2018014662A (ja) * 2016-07-22 2018-01-25 大日本印刷株式会社 プロトコル変換装置
US11177958B2 (en) 2016-09-13 2021-11-16 Silverfort Ltd. Protection of authentication tokens
US10587580B2 (en) 2016-10-26 2020-03-10 Ping Identity Corporation Methods and systems for API deception environment and API traffic control and security
WO2018096471A1 (en) * 2016-11-22 2018-05-31 Silverfort Ltd. Automatic forwarding of access requests and responses thereto
US10824655B2 (en) * 2016-12-29 2020-11-03 Sap Se Data models for geo-enriched data
US10462265B2 (en) * 2017-02-17 2019-10-29 Plex, Inc. On-demand startup of offline servers and connection routing
US11500824B1 (en) 2017-04-03 2022-11-15 Amazon Technologies, Inc. Database proxy
US11182496B1 (en) 2017-04-03 2021-11-23 Amazon Technologies, Inc. Database proxy connection management
US11392603B1 (en) * 2017-04-03 2022-07-19 Amazon Technologies, Inc. Database rest API
US11106540B1 (en) 2017-04-03 2021-08-31 Amazon Technologies, Inc. Database command replay
US11095631B1 (en) * 2017-04-17 2021-08-17 T Stamp Inc. Systems and methods for identity verification via third party accounts
US10554743B2 (en) * 2017-04-26 2020-02-04 Red Hat, Inc. Managing content downloads
US10567356B2 (en) 2017-06-20 2020-02-18 Microsoft Technology Licensing, Llc Monitoring cloud computing environments with data control policies
US10762218B2 (en) 2017-06-20 2020-09-01 Microsoft Technology Licensing, Llc Network buildout for cloud computing environments with data control policies
US20180364996A1 (en) * 2017-06-20 2018-12-20 Microsoft Technology Licensing, Llc Software deployment to network devices in cloud computing environments with data control policies
US10645183B2 (en) 2017-06-26 2020-05-05 Microsoft Technology Licensing, Llc Redirection of client requests to multiple endpoints
US10547645B1 (en) * 2017-07-07 2020-01-28 EMC IP Holding Company, LLC Public-private computing system
US11360976B2 (en) * 2017-08-31 2022-06-14 Oracle International Corporation Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
US10762079B2 (en) * 2017-09-29 2020-09-01 Oracle International Corporation System and method for managing a blockchain cloud service
CN111279319A (zh) * 2017-09-30 2020-06-12 甲骨文国际公司 容器组的动态迁移
US10574676B2 (en) 2017-10-06 2020-02-25 Fyde, Inc. Network traffic inspection
US11134058B1 (en) 2017-10-06 2021-09-28 Barracuda Networks, Inc. Network traffic inspection
EP3471007B1 (en) 2017-10-13 2022-02-23 Ping Identity Corporation Methods and apparatus for analyzing sequences of application programming interface traffic to identify potential malicious actions
CN107566533B (zh) * 2017-10-26 2020-08-04 南威软件股份有限公司 一种基于nas实现的内外网文件共享系统
US10659326B2 (en) * 2017-10-27 2020-05-19 Microsoft Technology Licensing, Llc Cloud computing network inspection techniques
US10708379B1 (en) * 2017-11-22 2020-07-07 Amazon Technologies, Inc. Dynamic proxy for databases
US10728245B2 (en) * 2017-12-07 2020-07-28 Ca, Inc. HTTP proxy authentication using custom headers
CN108199865A (zh) * 2017-12-07 2018-06-22 中国航空工业集团公司西安航空计算技术研究所 一种基于发布订阅的路由服务实现方法
CN108234451A (zh) * 2017-12-11 2018-06-29 厦门亿力吉奥信息科技有限公司 电力内外网请求转发代理方法及计算机可读存储介质
CN108093086B (zh) * 2018-01-22 2021-03-23 微梦创科网络科技(中国)有限公司 一种服务网关的数据传输方法及系统
US11038835B2 (en) * 2018-01-31 2021-06-15 Comcast Cable Communications, Llc Systems and methods for managing domain name information
US11196733B2 (en) * 2018-02-08 2021-12-07 Dell Products L.P. System and method for group of groups single sign-on demarcation based on first user login
US10445221B2 (en) * 2018-03-08 2019-10-15 Sauce Labs Inc. Automated application testing system
US10728219B2 (en) * 2018-04-13 2020-07-28 R3 Ltd. Enhancing security of communications during execution of protocol flows
US11093771B1 (en) 2018-05-04 2021-08-17 T Stamp Inc. Systems and methods for liveness-verified, biometric-based encryption
EP3607700B1 (en) * 2018-05-07 2023-04-05 Google LLC Verifying operational statuses of agents interfacing with digital assistant applications
US11496315B1 (en) 2018-05-08 2022-11-08 T Stamp Inc. Systems and methods for enhanced hash transforms
US10841336B2 (en) * 2018-05-21 2020-11-17 International Business Machines Corporation Selectively providing mutual transport layer security using alternative server names
KR20200135529A (ko) 2018-06-07 2020-12-02 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 인터미턴트 네트워크에서 클라이언트 장치들에 걸쳐 저장을 관리하기 위한 로컬 서버
KR102093145B1 (ko) * 2018-06-07 2020-03-25 한밭대학교 산학협력단 생체정보 인식 기반의 데이터 최적화를 위한 오브젝트 스토리지 클라우드 시스템
WO2019236091A1 (en) * 2018-06-07 2019-12-12 Hewlett-Packard Development Company, L.P. Local servers for managing proxy settings in intermittent networks
US10594602B2 (en) * 2018-06-30 2020-03-17 Hewlett Packard Enterprise Development Lp Web services across virtual routing and forwarding
US11012500B2 (en) 2018-07-27 2021-05-18 Vmware, Inc. Secure multi-directional data pipeline for data distribution systems
US11190614B2 (en) 2018-07-27 2021-11-30 Vmware, Inc. Bidirectional command protocol via a unidirectional communication connection for reliable distribution of tasks
GB2588573B (en) * 2019-07-09 2021-11-17 Rimo Capital Ltd A remediation system to prevent incompatible program module installation in an information processing system
US10742636B2 (en) * 2018-08-22 2020-08-11 Sap Se OAuth2 SAML token service
WO2020055919A1 (en) * 2018-09-11 2020-03-19 Aveva Software, Llc Server and system for secure configuration push for dmz proxy clients
JP7119816B2 (ja) * 2018-09-18 2022-08-17 日本電気株式会社 通信制御装置、通信制御システム、搭載装置、通信制御方法、プログラム
US11080077B2 (en) * 2018-10-25 2021-08-03 EMC IP Holding Company LLC Life cycle management for cloud-based application executors with key-based access to other devices
US11310204B2 (en) * 2018-11-13 2022-04-19 Sap Se Centralized access to data repository from a multi-cloud computing environment
US10681048B1 (en) * 2018-11-26 2020-06-09 Jpmorgan Chase Bank, N.A. Systems and methods for intercepting WebView traffic
US11765174B2 (en) * 2018-12-07 2023-09-19 Vmware, Inc. Identity-based access control for cloud applications
US11496475B2 (en) 2019-01-04 2022-11-08 Ping Identity Corporation Methods and systems for data traffic based adaptive security
US10958662B1 (en) * 2019-01-24 2021-03-23 Fyde, Inc. Access proxy platform
US11457040B1 (en) 2019-02-12 2022-09-27 Barracuda Networks, Inc. Reverse TCP/IP stack
CN109962913A (zh) * 2019-03-11 2019-07-02 北京信安世纪科技股份有限公司 基于安全套接层协议的代理服务器及代理方法
US11301586B1 (en) 2019-04-05 2022-04-12 T Stamp Inc. Systems and processes for lossy biometric representations
CN110086731B (zh) * 2019-04-25 2021-09-17 北京计算机技术及应用研究所 一种云架构下网络数据稳定采集方法
CN111953640A (zh) * 2019-05-17 2020-11-17 阿里巴巴集团控股有限公司 通信方法、通信系统、云节点和可读存储介质
US10664615B1 (en) 2019-05-22 2020-05-26 Capital One Services, Llc Methods and systems for adapting an application programming interface
CN110333916B (zh) * 2019-06-18 2024-03-19 平安银行股份有限公司 请求消息处理方法、装置、计算机系统及可读存储介质
US11025593B2 (en) * 2019-06-28 2021-06-01 Microsoft Technology Licensing, Llc Template-based session control in proxy solutions
US10574794B1 (en) * 2019-07-12 2020-02-25 Coupang Corp. Systems and methods for interfacing networks regardless of communication scheme
US10582019B1 (en) 2019-07-12 2020-03-03 Coupang Corp. Systems and methods for interfacing networks using a unified communication scheme
US11388197B2 (en) * 2019-07-24 2022-07-12 Research & Business Foundation Sungkyunkwan University I2NSF NSF monitoring YANG data model
US11329954B1 (en) * 2019-07-30 2022-05-10 Berryville Holdings, LLC Traceless access to remote deployed devices in undisclosed locations
US11294894B2 (en) 2019-08-30 2022-04-05 Oracle International Corporation Dynamic resolution of dependencies for database guest languages
DE102019213707A1 (de) * 2019-09-10 2021-03-11 Carl Zeiss Meditec Ag Computer-Hardware für ein computergesteuertes Medizingerät und Verfahren zur Steuerung eines computergesteuerten Medizingeräts
US11347572B2 (en) 2019-09-26 2022-05-31 Vmware, Inc. Methods and apparatus for data pipelines between cloud computing platforms
AU2020104458A4 (en) * 2019-10-25 2021-09-30 Coupang Corp. Systems and methods for interfacing networks using a unified communication scheme
US11297085B2 (en) * 2020-01-08 2022-04-05 Bank Of America Corporation Real-time validation of data transmissions based on security profiles
US11627152B2 (en) 2020-01-08 2023-04-11 Bank Of America Corporation Real-time classification of content in a data transmission
US11184381B2 (en) 2020-01-08 2021-11-23 Bank Of America Corporation Real-time validation of application data
KR102110099B1 (ko) * 2020-03-09 2020-05-13 주식회사 케이비시스 퍼블릭 클라우드 및 프라이빗 클라우드를 포함하는 컨테이너 기반의 클라우드 서비스 제공 시스템
CN111641607A (zh) * 2020-05-16 2020-09-08 中信银行股份有限公司 代理系统及访问请求转发方法
US11895193B2 (en) * 2020-07-20 2024-02-06 Juniper Networks, Inc. Data center resource monitoring with managed message load balancing with reordering consideration
JP2022074496A (ja) * 2020-11-04 2022-05-18 イグドラシルリーヴズ合同会社 ネットワーク処理制御システム
CN112417379B (zh) * 2020-11-10 2022-02-22 迈普通信技术股份有限公司 一种集群许可证管理方法、装置、授权服务器及存储介质
US20220188271A1 (en) * 2020-12-10 2022-06-16 Microsoft Technology Licensing, Llc Framework for allowing complementary workloads/processes to bring in heavy load on a file collaboration platform
EP4272096A1 (en) * 2020-12-31 2023-11-08 Services Pétroliers Schlumberger Multiworkflow authorization system and method
US11489909B1 (en) * 2021-04-15 2022-11-01 Cloudflare, Inc. Non-HTTP layer 7 protocol applications running in the browser
CN113315706B (zh) * 2021-04-30 2023-04-18 上海云轴信息科技有限公司 私有云流量控制方法、设备及系统
US11418329B1 (en) * 2021-05-28 2022-08-16 Garantir LLC Shared secret implementation of proxied cryptographic keys
US11218317B1 (en) 2021-05-28 2022-01-04 Garantir LLC Secure enclave implementation of proxied cryptographic keys
CN113542415B (zh) * 2021-07-16 2022-05-24 哈尔滨工业大学 基于可配置订阅链的异构数据资源调度系统及方法
CN113673662B (zh) * 2021-08-02 2024-01-09 南京邮电大学 一种基于反向学习的混沌蜂群Web服务组合优化方法
US11652825B2 (en) * 2021-08-09 2023-05-16 International Business Machines Corporation Packet authentication in a VXLAN system
US11502827B1 (en) * 2021-09-03 2022-11-15 Garantir LLC Exporting remote cryptographic keys
US11546358B1 (en) * 2021-10-01 2023-01-03 Netskope, Inc. Authorization token confidence system
CN113992642B (zh) * 2021-10-25 2023-10-24 深信服科技股份有限公司 网关代理服务器的流量审计方法、装置及相关设备
US11562043B1 (en) * 2021-10-29 2023-01-24 Shopify Inc. System and method for rendering webpage code to dynamically disable an element of template code
CN113852645B (zh) * 2021-12-02 2022-03-29 北京邮电大学 抗客户端dns缓存中毒攻击的方法、装置及电子设备
US20230188504A1 (en) * 2021-12-15 2023-06-15 Microsoft Technology Licensing, Llc Curating services through proxies with extensible policy
US20230247081A1 (en) * 2022-01-31 2023-08-03 Salesforce.Com, Inc. Declarative rendering of hypertext transfer protocol headers
WO2023175951A1 (ja) * 2022-03-18 2023-09-21 日本電気株式会社 通信システム、通信装置、通信方法、及び可読媒体
KR20230139250A (ko) * 2022-03-25 2023-10-05 주식회사 지메이트시스템즈 하이브리드 모니터링 솔루션 시스템 및 이에 의한 서버의 모니터링 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205781A1 (en) * 2003-03-27 2004-10-14 Hill Richard D. Message delivery with configurable assurances and features between two endpoints
US20080140857A1 (en) * 2006-03-21 2008-06-12 Conner Peter A Service-oriented architecture and methods for direct invocation of services utilizing a service requestor invocation framework
US20100146600A1 (en) * 2007-02-26 2010-06-10 Secure Islands Technologies Ltd System and method for automatic data protection in a computer network
US20120210335A1 (en) * 2011-02-14 2012-08-16 General Electric Company Method, system and computer program product for a client application programming interface (api) in a service oriented architecture

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370351B1 (en) * 2001-03-22 2008-05-06 Novell, Inc. Cross domain authentication and security services using proxies for HTTP access
US6996841B2 (en) * 2001-04-19 2006-02-07 Microsoft Corporation Negotiating secure connections through a proxy server
JP2005502106A (ja) * 2001-07-20 2005-01-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 情報コンテンツへのアクセス
US7209977B2 (en) * 2001-10-01 2007-04-24 International Business Machines Corporation Method and apparatus for content-aware web switching
US20030115421A1 (en) * 2001-12-13 2003-06-19 Mchenry Stephen T. Centralized bounded domain caching control system for network edge servers
JP3940356B2 (ja) * 2002-12-27 2007-07-04 日本アイ・ビー・エム株式会社 プロキシ・サーバ、アクセス制御方法、アクセス制御プログラム
US7299409B2 (en) * 2003-03-07 2007-11-20 International Business Machines Corporation Dynamically updating rendered content
JP2005217828A (ja) 2004-01-30 2005-08-11 Toshiba Corp 通信装置、通信制御装置、通信システム及びプログラム
JP4357401B2 (ja) 2004-10-13 2009-11-04 日本電信電話株式会社 フィルタリング方法
US7620991B2 (en) * 2005-08-12 2009-11-17 Netapp, Inc. Optimized network cache for virus scanning by examining the magic bytes of a file
US7861290B2 (en) 2006-09-22 2010-12-28 Oracle International Corporation Non-invasive insertion of pagelets
JP4216876B2 (ja) * 2006-12-21 2009-01-28 株式会社東芝 通信端末を認証する装置、方法およびプログラム
US8095670B2 (en) 2007-09-11 2012-01-10 International Business Machines Protocol for enabling dynamic and scalable federation of enterprise service buses
CN101615179B (zh) * 2008-06-25 2011-08-17 国际商业机器公司 用于Web应用的跨域交互的方法和系统
CA2729867A1 (en) 2008-07-01 2010-01-07 Talisma Corporation Private Ltd. A method to provide an option to the customer relationship management (crm) user to select from a list of short message service (sms) gateways from the graphical user interface (gui) before sending out an sms message
US20120209942A1 (en) * 2008-10-28 2012-08-16 Cotendo, Inc. System combining a cdn reverse proxy and an edge forward proxy with secure connections
US8392496B2 (en) * 2008-12-19 2013-03-05 Watchguard Technologies, Inc. Cluster architecture for network security processing
US8910270B2 (en) 2009-01-20 2014-12-09 Microsoft Corporation Remote access to private network resources from outside the network
US9049182B2 (en) * 2009-08-11 2015-06-02 Novell, Inc. Techniques for virtual representational state transfer (REST) interfaces
US9189244B2 (en) 2009-08-18 2015-11-17 Adobe Systems Incorporated Methods and systems for managing data service specifications
US8473595B2 (en) 2009-12-30 2013-06-25 Bmc Software, Inc. Method and system to automatically adapt web services from one protocol/idiom to another protocol/idiom
US20110231479A1 (en) * 2010-03-22 2011-09-22 Siemens Product Lifecycle Management Software Inc. System and Method for Secure Multi-Client Communication Service
JP2012044283A (ja) 2010-08-13 2012-03-01 Oki Networks Co Ltd 通信制御システム、並びに、アクセス受付装置及びプログラム、並びに、通信制御装置及びプログラム
US8990557B2 (en) * 2011-02-17 2015-03-24 Ebay Inc. Identity assertion framework
US20140341109A1 (en) * 2011-06-02 2014-11-20 Interdigital Patent Holdings, Inc. Methods, Apparatus and Systems for Managing Converged Gateway Communications
US9386125B2 (en) * 2011-06-13 2016-07-05 Electronic And Telecommunications Research Institute Method for transmitting packet-based media data having header in which overhead is minimized
CN102968437B (zh) * 2011-09-27 2016-12-07 微软技术许可有限责任公司 外部服务应用的发现方法
CN102447708B (zh) * 2012-01-14 2016-03-23 杭州安恒信息技术有限公司 一种应用层透明代理技术的通信实现方法
US9722972B2 (en) * 2012-02-26 2017-08-01 Oracle International Corporation Methods and apparatuses for secure communication
US9313252B2 (en) 2012-04-20 2016-04-12 Microsoft Technology Licensing, Llc Binding crud-type protocols in distributed agreement protocols
US8856735B2 (en) 2012-07-25 2014-10-07 Oracle International Corporation System and method of generating REST2REST services from WADL
CN102866911B (zh) * 2012-09-12 2015-03-25 北京航空航天大学 Mashup应用建立方法及装置
US8990357B2 (en) * 2013-07-29 2015-03-24 Cloudflare, Inc. Method and apparatus for reducing loading time of web pages
US10362059B2 (en) 2014-09-24 2019-07-23 Oracle International Corporation Proxy servers within computer subnetworks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205781A1 (en) * 2003-03-27 2004-10-14 Hill Richard D. Message delivery with configurable assurances and features between two endpoints
US20080140857A1 (en) * 2006-03-21 2008-06-12 Conner Peter A Service-oriented architecture and methods for direct invocation of services utilizing a service requestor invocation framework
US20100146600A1 (en) * 2007-02-26 2010-06-10 Secure Islands Technologies Ltd System and method for automatic data protection in a computer network
US20120210335A1 (en) * 2011-02-14 2012-08-16 General Electric Company Method, system and computer program product for a client application programming interface (api) in a service oriented architecture

Also Published As

Publication number Publication date
US9648043B2 (en) 2017-05-09
WO2016048418A1 (en) 2016-03-31
EP3198825A1 (en) 2017-08-02
US20160088023A1 (en) 2016-03-24
JP2017529793A (ja) 2017-10-05
EP3198472B1 (en) 2018-06-20
CN106575305A (zh) 2017-04-19
EP3198472A1 (en) 2017-08-02
CN106575305B (zh) 2020-09-25
CN106716404B (zh) 2020-12-11
KR102251803B1 (ko) 2021-05-14
JP6496404B2 (ja) 2019-04-03
JP6574479B2 (ja) 2019-09-11
KR20170063724A (ko) 2017-06-08
WO2016048419A1 (en) 2016-03-31
CN106716404A (zh) 2017-05-24
US10362059B2 (en) 2019-07-23
KR20170060070A (ko) 2017-05-31
US20160088022A1 (en) 2016-03-24
JP2017538179A (ja) 2017-12-21
EP3198825B1 (en) 2018-06-27

Similar Documents

Publication Publication Date Title
KR102282656B1 (ko) 컴퓨터 서브네트워크들 내의 프록시 서버들
US11019103B2 (en) Managing security agents in a distributed environment
US11316689B2 (en) Trusted token relay infrastructure
US10009335B2 (en) Global unified session identifier across multiple data centers
US9712511B2 (en) Mobile cloud service architecture
US9866640B2 (en) Cookie based session management
US11526620B2 (en) Impersonation for a federated user
US20210281560A1 (en) Maintaining session stickiness across authentication and authorization channels for access management
EP3103239A1 (en) Cloud service custom execution environment
US20160277443A1 (en) Method and system for using smart images
KR102357697B1 (ko) 컴퓨터 서브네트워크들 내의 프록시 서버들

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
A107 Divisional application of patent
GRNT Written decision to grant