KR20110122731A - 발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술 - Google Patents

발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술 Download PDF

Info

Publication number
KR20110122731A
KR20110122731A KR1020117020667A KR20117020667A KR20110122731A KR 20110122731 A KR20110122731 A KR 20110122731A KR 1020117020667 A KR1020117020667 A KR 1020117020667A KR 20117020667 A KR20117020667 A KR 20117020667A KR 20110122731 A KR20110122731 A KR 20110122731A
Authority
KR
South Korea
Prior art keywords
clients
protocol
predetermined client
client
program code
Prior art date
Application number
KR1020117020667A
Other languages
English (en)
Inventor
션 지. 루니
다니엘 엔. 바우어
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20110122731A publication Critical patent/KR20110122731A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • 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/0884Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
    • 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/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

복수의 프로토콜 스택들이 배치된다.상기 프로토콜 스택들 각각은 복수의 구성가능한 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현한다. 상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 발행-구독 엔진(publication-subscription)에 접속되기를 원한다는 것이 탐지되고, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지가 결정된다. 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 상기 보안 접속을 발효(effectuate)시키기 위해, 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택의 암호화된 인스턴스가 인스턴스화(instantiate)된다. 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 인증 및 허가된다.

Description

발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술{INTRODUCING ENCRYPTION, AUTHENTICATION, AND AUTHORIZATION INTO A PUBLICATION AND SUBSCRIPTION ENGINE}
본 발명은 전기, 전자 및 컴퓨터 기술과 관련되고, 더 구체적으로는 보안 피쳐들(security features) 등과 관련된다.
발행/구독(publish/subscribe)은 토픽들(topics)에 관해 데이터가 구성되는 방법으로서, 발행자들(publishers)은 토픽들에 관해 발행(publish)하고 구독자들(subscribers)은 그것들에 관해 구독(subscribe)하는 방법이다. 일반적으로, 발행자에 의해 발행된 어떤 토픽에 관한 모든 메시지들은 그 토픽에 대한 모든 구독자들에 의해 수신된다. 적어도 몇몇 경우들에 있어서는, 발행자들 및 구독자들은 서로의 아이덴티티들(identities)을 알지 못하며, 매우 융통성있는(flexible) 형태의 통신을 허용한다. 서로 다른 마켓 에어리어들(market areas)에서 전용되는 현재의 제품들의 범위는 발행/구독("pub/sub") 개념을 지원한다. 특히, WebSphere® MQ(WSMQ) 네트워크 통신 소프트웨어 제품은 페일 오버(fail over), 거래 의미(transactional semantic), 및 부인-방지(non-repudiation)를 지원하는 대규모 시스템인데, 이는 예를 들어 은행 거래를 다루기 위한 데이터 서버 센터들에서 사용하기에 적합하다. 상기 WebSphere® MQ(WSMQ) 네트워크 통신 소프트웨어 제품은 미국 뉴욕 아몽크의 IBM사(International Business Machines Corporation)로부터 입수가능하다.
한편, MQ 텔리미트리 트랜스포트(MQ Telemetry Transport, MQTT)는 낮은 레벨의 디바이스들 상에서 사용하기에 적합한 경량(light weight) pub/sub 메커니즘이다. MQTT에서, 클라이언트들(발행자들 또는 구독자들)은 브로커(broker)(예, IBM MicroBroker 소프트웨어)에 접속된다. 그런 다음, 상기 브로커는 상기 pub/sub 개념을 지원한다. MQTT는 pub/sub의 "푸쉬(push)" 및 "풀(pull)" 모델을 지원한다. 상기 푸쉬 모델은 앞에서 기술된 바와 같다. 상기 풀 모델에서, 발행자들은 지명된 큐들(named queues)로 발행하고 구독자들은 그것들의 큐들로부터 메시지들을 명백하게 제거한다. 상기 푸쉬 모델에서는 0 내지 N 구독자들이 정해진 메시지(given message)를 수신할 수 있는 반면, 상기 풀 모델에서는 정확히 하나의 구독자가 정해진 메시지를 수신한다.
본 발명의 원리들은 발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입시키는 기술들을 제공한다. 발명의 일 측면에서, 발행-구독 엔진과 복수의 클라이언트들 사이의 인터랙션들을 제어하기 위한 예시적인 방법들은 복수의 프로토콜 스택들을 배치(deploy)하는 단계를 포함하는데, 상기 프로토콜 스택들 각각은 복수의 구성가능한(composable) 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들(common interfaces)을 구현(implement)한다. 추가 단계들은 상기 복수의 클라이언트들 중 제1의 정해진 클라이언트(first given one)가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지(detect)하는 단계; 및 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하는 단계를 포함한다. 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 추가 단계는 상기 보안 접속(secure connection)을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택(first appropriate one)의 암호화된 인스턴스(encrypted instance)를 인스턴스화(instantiate)하는 단계를 포함한다. 추가 단계들은 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계; 및 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계를 포함한다.
본 발명의 하나 또는 그 이상의 실시예들 및 그것의 구성요소들은 제시되는 방법 단계들을 수행하기 위한 컴퓨터 사용가능 프로그램 코드를 갖는 실체적인 컴퓨터 판독가능 스토리지 매체를 포함하는 컴퓨터 제품의 형태로 구현될 수 있다. 나아가, 본 발명의 하나 또는 그 이상의 실시예들 또는 그것의 구성요소들은 메모리 및 적어도 하나의 프로세서 - 상기 적어도 하나의 프로세서는 상기 메모리에 결합되고 예시적인 방법 단계들을 수행하도록 동작함 - 를 포함하는 장치의 형태로 구현될 수 있다. 더 나아가, 또 다른 측면에서, 본 발명의 하나 또는 그 이상의 실시예들 또는 그것의 구성요소들은 여기에 기술되는 방법 단계들 중 하나 또는 그 이상을 수행하는 수단의 형태로 구현될 수 있는데, 상기 수단은, (i) 하드웨어 모듈(들), (ii) 소프트웨어 모듈(들), 또는 (iii) 하드웨어와 소프트웨어 모듈들의 조합을 포함할 수 있고, (i)-(iii) 중 어떤 것은 여기에 제시되는 특정 기술들(techniques)을 구현하고, 상기 소프트웨어 모듈들은 실체적인 컴퓨터-판독가능 스토리지 매체(tangible computer-readable storage medium)(또는 다수의 그러한 매체)에 저장된다.
본 발명의 하나 또는 그 이상의 실시예들은 이하의 기술적인 이점들 중 하나 또는 그 이상을 제공할 수 있다.
- MQTT 프로토콜의 의미(semantic)를 유지하면서 정해진 토픽(given topic)에 관한 클라이언트의 접근 권한들을 동적으로 부인(repudiate)할 수 있는 기능.
- 다수의 클라이언트들로부터 다수의 서로 다른 인증 메커니즘을 동시에 지원할 수 있는 기능.
본 발명의 여러 가지 특성들, 측면들 및 이점들은 본 발명의 실시예들에 관한 이하의 상세한 설명으로부터 명확해질 것이다. 이러한 상세한 설명은 첨부되는 도면들과 함께 읽혀질 수 있다.
도 1은 본 발명의 일 측면에 따른 구성가능한 프로토콜 스택들을 도시한다.
도 2는 본 발명의 다른 측면에 따른 동적 프로토콜 구성(dynamic protocol composition)의 흐름도이다.
도 3은 본 발명의 또 다른 측면에 따라, 계층-특정 정보(layer-specific information)를 사용하는 인증을 도시한다.
도 4는 본 발명의 또 다른 측면에 따른 계층-기반 인증(layer-based authentication)의 흐름도이다.
도 5는 본 발명의 추가 측면에 따른 허가 메커니즘의 흐름도이다.
도 6은 본 발명의 또 다른 추가 측면에 따라, 메시지 바디를 제거함에 의해 메시지 흐름을 유지하는 것을 도시한다.
도 7은 본 발명의 추가 측면에 따른 일 실시예(그러나, 이러한 실시예로 한정되는 것은 아님)의 블록도를 보여준다.
도 8은 본 발명의 하나 또는 그 이상의 측면들 및/또는 구성요소들을 구현함에 있어서 유용할 수 있는 컴퓨터 시스템을 도시한다.
본 발명의 측면들은 발행/구독 메커니즘의 유저들이 간단하고 효율적으로 인증 및 허가받는 것을 가능하게 한다. 여기서는, 푸쉬 모델을 기술하기 위해 토픽들로부터의 리딩(reading) 및 라이팅(writing)에 관해 논해질 것이고, 또한 풀 모델을 기술하기 위해 큐들로부터의 리딩 및 라이팅에 관해 논해질 것이다. 토픽들 및 큐들은 발행/구독 엔진 - 이는 여기서는 브로커(broker)로도 일컬어짐 - 내에서 계층적으로 명명(name)된다.
MQTT와 같은 경량(light weight) pub/sub 메커니즘들은 일반적으로 저급(low-end) 디바이스들 상에서 실행되도록 정해져 있다. 그래서 그것들은 WSMQ와 같은 네트워크 통신 소프트웨어 제품들의 광범위한 동작들을 지원하지는 않는다. MQTTv3에서는, 누구나 브로커에 접속될 수 있고 어떤 토픽에 대해서든지 발행 및/또는 구독할 수 있다. MQTTv4에서는, 프로토콜에 패스워드가 도입되었지만, 마이크로브로커 소프트웨어(MicroBroker software)는 그것을 무시했다. 이러한 사실들은 본 발명의 측면들로써 유리하게 처리될 수 있는 상황들을 예로 든 것이다.
예를 들어(그러나, 이러한 예들로 한정되는 것은 아님), 저급 디바이스들에 관한 경량 메커니즘들에 대한 응용면에서, 수백 또는 수천 개의 디바이스들이 있을 수 있는 네트워크에서(예를 들어, 센서 네트워크(sensor network)), 각각의 디바이스 상에 패스워드 또는 인증서(certificate)를 저장하는 것은 타당하지 않을 수 있다. 왜냐하면 이것은 상당히 큰 관리 부담이 있기 때문이다. 그 대신에, 인증은, 카드의 MAC 어드레스 상에서 다른 정보를 사용하여 수행될 수 있고, 또는 그 센서들과의 통신에 소요되는 시간에서의 지연, 또는 기타 측면을 사용하여 수행될 수 있다.
본 발명의 측면들은 경량 pub/sub 메커니즘들을 위한 전 범위(full range) 보안 피쳐들(security features)을 구현하는데, 바람직하게는 이러한 피쳐들은 효율을 저하시키지 않고서도 간단한 pub/sub 브로커 내에 도입될 수 있다.
보안은 많은 다양한 활동들을 커버하는 큰 필드이다. 암호화(encryption)는 무방비 상태의 채널(unprotected channel)을 통해 전달되고 있는 정보의 내용을 제3자가 알 수 없도록 보장한다. 인증(authentication)은 통신하고 있는 일 측이 타 측에 대해 자신을 안전하게 식별할 수 있도록 보장한다. 허가(authorization)는 식별된 일 측이 특정 동작을 수행하도록 허가받는 것을 보장한다. 어떤 어플리케이션들은, 상기 브로커로의 모든 통신 및 상기 브로커로부터의 모든 통신이 암호화될 것을 요구하고, 모든 통신 당사자들이 인증받도록 요구하며, 토픽들 및 큐들에 대한 리드 및 라이트들이 허가받을 것을 요구한다.
이러한 피쳐들이 상기 경량 발행 및 구독 엔진(브로커) 내에 도입될 수 있는 방법에 관한 예들이 이하에 제시된다. 그러나, 본 발명은 이러한 예들로 한정되는 것은 아니다.
암호화( Encryption )
암호화를 보장하는 기술들은 당해 기술 분야에서 숙련된 자들에게 그 자체로 잘 알려져 있다. 특히, TLS/SSL(Transport Layer Security/Secure Sockets Layer) 프로토콜들은 널리 사용되는 Diffie-Hellman 키 교환의 구현이다. 본 발명의 측면들은, 암호화에 있어서, 암호화가 작동(activate) 및 작동정지(deactivate)될 수 있는 기술들을 다룬다. 도 1을 참조하면, 브로커(102)는 보안 모드(secure mode) 와 비보안 모드(non-secure mode) 둘 다에서 사용될 수 있다. 암호화는 컴퓨터를 사용하는 것이 요구되므로, 후자가 더 효율적이다. 본 발명의 하나 또는 그 이상의 실시예들은 구성가능한 프로토콜 모듈들을 채용하여, 언제 암호화가 사용되어야 하는지 그리고 어느 클라이언트들을 위해 암호화가 사용되어야 하는지를 시스템 관리자(system administrator)가 결정할 수 있도록 한다. 이 모델에서, 프로토콜 스택에서의 서로 다른 계층들은, 그 프로토콜 스택에서의 그것들의 위치와는 상관없이 모든 프로토콜 모듈들이 동일한 인터페이스들을 구현하도록 보장함에 의해, 어린이들의 서로 맞물리는 장난감 블록들처럼 함께 연결된다. 이는 SSL 모듈(106)을 MQTT 모듈(108)과 결합시킴에 의해 하나 또는 그 이상의 암호화된 스택들(104)의 간단한 구성을 가능하게 하고, 또한 TCP 모듈(112)을 MQTT(108)과 결합시킴에 의해 클리어-텍스트(clear-text)(암호화되지 않은) 스택(110)의 간단한 구성을 가능하게 한다. 상기 MQTT 모듈들은 구성가능한 프로토콜 모듈들의 예들이다. 그러나 이러한 예들로 한정되는 것은 아니다.
도 2는 스택들이 동적으로 구성되는 방법에 관한 흐름도(200)를 도시한다. 프로토콜 스택은 그 스택이 완료될 때까지 계속해서 모듈들을 분석함에 의해(by resolving module after module) 생성된다. 그런 다음, 상기 스택은 배치되고 사용될 준비가 된다. 새로운 클라이언트가 접속되는 경우, 대응하는 스택은 글로벌 보안 세팅(global security setting)에 기초하여 인스턴스화(instantiate)된다. 특히, 결정 블록(202) 및 블록들(204 및 206)에 따라, 스택이 완료될 때까지 모듈들을 추가하는 것이 계속되고, 그런 다음 그 스택을 배치한다. 결정 블록(208)에 따라, 완료될 스택들이 더 있다면("Y" 분기), 그 프로세스를 반복한다. 블록 210에서, 유저가 접속되고 결정 블록(212)으로 흐름들을 제어하는데, 여기서 상기 글로벌 보안 세팅에 따라, 상기 스택이 보안상태(secure)로 될 것인지가 결정된다. 만약 보안상태라면("Y" 분기), 블록 214에서 그 보안 스택이 인스턴스화되는 반면, 만약 비보안상태(un-secure)라면("N" 분기), 블록 216에서 그 비보안 스택이 인스턴스화된다.
인증( Authentication )
도 3을 참조하면, 가능한 가장 간단한 인증 메커니즘에서, 패스워드는 상기 클라이언트로부터 상기 브로커로 보내지고, 상기 브로커는 만약 그것이 그 클라이언트에 대한 기록된 패스워드와 부합한다면 그 클라이언트를 인증한다. 클라이언트들을 인증하는 것에 관한 또 다른 일반적인 기술은 단지 그 클라이언트만이 소유하는 신뢰할만한 엔티티에 의해 서명된 인증서들(certificates)의 사용을 통해서이다. 클라이언트가 인증될 수 있는 다른 방법들에는 여러 가지가 있으며 이것들은 서로 다른 컨텍스트들(contexts)에서 적합하다. 이는 표준 JAAS(Java Authentication and Authorization System)에서 고려된다. 왜냐하면 인증을 달성하는 다수의 서로 다른 기술들은 관리자-정의 규칙들(administrator-defined rules)을 사용하여 조합될 수 있기 때문이다. 그러나, 그 인증 정보가 수집되고 이용가능할 수 있는 기술은 JASS에 의해서는 정의되지 않는다. 상기 브로커의 컨텍스트에서, 상기 구성가능한 프로토콜 스택에서의 모든 레벨이 기여하는 범용 아이덴티티 객체(general purpose identity object)(330)를 정의한다. 이 객체(330)는 JAAS 인증 컨텍스트(332)에 제공된다. 그래서, 예를 들어, 그 네트워크 계층(network layer)은 상기 클라이언트의 인터넷 프로토콜(IP) 어드레스를 식별할 수 있고, 컨택 계층(contact layer)은 엄지손가락 지문(thumb print)을 줄 수 있고, 상기 보안 소켓 계층(secure socket layer, SSL)은 그 공급된 인증서를 줄 수 있으며, 상기 MQTT 계층은 패스워드를 줄 수 있다. 이는 상기 스택의 융통성(flexibility)을 유지하는 한편, "IP 어드레스가 신뢰할만한 어드레스 이외인 그러한 클라이언트들이 인증될 인증서를 제공해야 한다" 와 같은 규칙들을 허용한다.
도 4는 흐름도(400)에서 아이덴티티 정보가 어떻게 수집되는지, 그런 다음 그 정보에 기초하여 인증이 어떻게 실행되는지 관한 프로세스를 보여준다. 블록 402에서, 유저가 접속되고 N이 0으로 초기화된다. 블록 404에서, 모듈 N에서 접속을 수립한다. 블록 406에서, 그 모듈의 아이덴티티 정보를 추출한다. 결정 블록 408에서, 그 모듈 스택의 탑(top)에 도달했는지를 결정하고, 만약 아니라면("N" 분기), 블록 410에서 N을 증가시키고 블록 404로 리턴한다. 이와는 반대로, 만약 그 모듈 스택의 탑에 도달했다면("Y" 분기), 블록 412에서 저장소로부터 인증 규칙들을 검색해 오고, 블록 414에서, 규칙들의 세트 및 아이덴티티 항목들의 세트에 기초하여 인증한다. 결정 블록 416에서, 상기 유저가 인증되었는지를 결정하고, 만약 그렇다면("Y" 분기), 블록 420에 따라, 브로커(102)로의 접근을 허용하고, 만약 그렇지 않다면("N" 분기), 블록 418에 따라, 그 유저의 접속을 끊는다.
허가( Authorization )
JAAS는 또한 허가 메커니즘을 제공하지만, 이는 브로커(102)에게는 적절하지 않다. 왜냐하면 그것은 클라이언트가 코드의 일 부분(a piece of code)을 실행시키도록 허가하기 때문이다. 이는 효율에도 좋지 않고 또한 코드 간략화(code simplicity)에도 좋지 않다. 본 발명의 하나 또는 그 이상의 실시예들은 새로운 스키마를 채용하는데, 이는 클라이언트를 위해 세트된 기능(capability)을 정의하기 위해 토픽 및 큐 명명 스키마(topic and queue naming schema)를 재사용한다.
리소스(큐 또는 토픽) 네임(name)은 계층적으로 조직된다. 이는 와일드 카드 동작들(wild card operations)의 사용을 허용한다. 와일드 카드들은 단지 구독 요청들(subscriptions requests)에 관해서 사용될 수 있다. 왜냐하면, 와일드 카드로 발행하는 것은 맞지 않기 때문이다.
예를 들어, 하나의 토픽은 유럽/스위스/취리히일 수 있고, 또 다른 토픽은 유럽/스위스/제네바일 수 있다. 그러면, 유럽/스위스/#로 구독한 구독자들은 스위스에서의 어느 도시에서든지 모든 발행들을 받을 것이다.
클라이언트가 수행할 수 있는 네 개의 기본 동작들을 정의하는 것이 가능하다.
- 토픽에 대한 라이트
- 토픽으로부터의 리드
- 큐에 대한 라이트
- 큐로부터의 리드
이들 각각을 위해, 그 클라이언트의 기능들을 잠재적으로 와일드 카드로 된 네임들(potentially wild-carded names)의 세트로서 정의한다. 그래서, 예를 들어, 클라이언트는 유럽/#으로의 리드 접근이 제공될 수 있지만 유럽/스위스/# 및 유럽/프랑스/파리로의 라이트 접근이 제공될 수 있다.
도 5는 흐름도(500)로서 기본 허가 절차를 보여준다. 클라이언트가 리소스 상에서 수행하기를 원하는 동작은 그 클라이언트가 갖는 기능들과 비교하여 체크된다. 만약 그 클라이언트가 그 동작을 수행할 기능이 없다면, 허가는 실패이고 그 동작은 실행되지 않는다. 만약 그렇지 않다면, 그 클라이언트는 계속 진행할 것이다. 특히, 블록 502에서, 그 클라이언트가 블록 504에서 획득된 리소스 r: 상에서 수행하기를 원하는 동작이 무엇인지를 결정하기 위해, 동작 식별자(operation identifier) p:를 획득한다. 유저 식별자 u: 및 환경 e:는 각각 블록 506 및 508에서 획득된다. 상기 클라이언트에 대응하는 기능들의 세트 C는 블록 510에서 검색되고, 결정 블록 512에서, 요구되는 동작 식별자 p:, 리소스 r:, 유저 u:, 및 환경 e:가 그 클라이언트의 검색된 기능들 C에 포함되는지에 관한 결정이 이루어진다. 만약 포함된다면("Y" 분기), 블록 516에 도시된 바와 같이 허가는 성공적인 반면, 만약 그렇지 않다면("N" 분기), 블록 514에서와 같이 허가는 실패이다.
클라이언트가 그 브로커 내에 발행 또는 구독을 생성할 때마다, 공급된 네임은 적절한 동작을 위해 그 클라이언트의 기능 세트와 비교하여 매치된다. 그 공급된 네임은 그 기능 세트에서 정의된 트리들의 세트 내의 가지(branch)라야만 한다. 그 공급된 네임과 그 기능 세트 둘 다 와일드 카드로 되어 있을 수 있으므로, 의사 코드(pseudo-code)로 표현된 다음의 기술을 사용한다.
Figure pct00001

상기 기술(technique)은 재귀적으로(recursively) 기술(describe)되지만, 부득이하게 스택들의 사용을 통해 그것과 동등하거나 더 효율적인 버전이 구현될 수 있다. 상기 스택-기반 접근법은, 명명 계층(naming hierarchy)에서의 20 레벨들을 갖는 1,000,000개의 별개의 기능들이 타겟 아키텍쳐(예를 들어, 저급(low-end) 서버 또는 개인용 컴퓨터(PC)) 상에서 1ms보다 낮은 20 레벨 네임과 비교하여 매치될 수 있도록 한다. 상기 스택 기반 접근법에서, "기능(capability)" 및 "네임(name)"은 둘 다 스택을 발생시키기 위해 사용되어, 와일드 카드들 뿐만 아니라 상기 명명 트리(naming tree)에서 별개의 계층들을 포함한다. 양 스택들이 팝(pop)되고, 헤드 구성요소들이 매치되는 한, 그 프로세스는 계속된다. 그 의미(semantic)는 재귀적 콜(recursive call)에서와 동일하지만, 어떠한 재귀도 사용되지 않는다. 재귀는 그 프로세스를 기술하기에 적합한 것이지만, 일반적으로 매우 효과적이지는 않다.
어떤 경우들에 있어서, 때때로 리소스들 상에 기능들을 호출하는 것이 필요할 수 있다. 그것은 클라이언트가 인증받은 경우 그리고 그 권한이 호출되기 전에 그 리소스에 대한 접근 권한을 갖는 경우일 수 있다. 이러한 경우를 다루기 위해, 그 브로커와의 인터랙션의 시작 이후로 그 기능들이 변경된 클라이언트들과 변경되지 않은 클라이언트들 간을 구별하고, 변경되지 않은 것들은 정상적인(normal) 프로토콜 스택을 사용하지만, 변경된 것들에 관해서는, 새로운 모듈이 동적으로 추가된다. 이 모듈은 의사-코드로 위에서 기술된 기술을 사용하여, 메시지 단위로(per-massage basis), 그 클라이언트의 기능 세트를 체크한다.
이제 도 6을 참조하여 설명한다. MQTT는 서로 다른 인터랙션의 모드들을 갖는데, 이들 중 몇몇은 메시지들이 확인(acknowledge)될 것을 요구한다. MQTT 프로토콜은 기능 세트를 위해서는 어떠한 준비(provision)도 하지 않는다. 클라이언트가 더 이상 적절한 권한들을 갖지 않는 메시지를 간단히 드랍(drop)하는 것은, 만약 그 클라이언트가 그 메시지를 확인할 것으로 예상되지 않았다면, MQTT 모듈들과의 인터랙션에 있어서 문제들을 초래할 것이다. 이는 그 메시지를 드랍하는 것에 의해서가 아니라, 그것의 페이로드(payload)를 간단히 제거하고 헤더 내에 에러 플래그(error flag)를 추가함에 의해, 처리될 수 있다. 그런 다음, 이러한 메시지의 올바른 수신자(well-behaved receiver)는 그 리소스로부터 접속이 끊어질 것으로 예상된다. 올바르지 않은 수신자(badly behaved receiver)는 접속이 끊어질 수 있지만, 그렇게 하는 것으로부터 어떠한 이득도 얻지 못할 것이다. 따라서, 도 6에 도시된 바와 같이, 허가된 발행자(650)는 브로커(102)에게 바디(654)를 갖는 발행 메시지(PUB-MSG, 652)를 보내는데, 이는 발행 확인(publication acknowledgement)(PUB-ACK, 656)과 동일하게 확인한다. 바디(654)를 갖는 메시지들(652)은 허가된 구독자(658)에게 보내지는데, 이 허가된 구독자(658)는 확인 정보(PUB-ACK), 656)를 리턴한다. 바디(654)가 없는 메시지(PUB-MSG, 652)는 비허가된 구독자(660)에게 보내지는데, 이 비허가된 구독자(660)는 확인 정보(PUB-ACK, 656)를 리턴한다.
따라서, 본 발명의 하나 또는 그 이상의 실시예들은 메시징 시스템 내에서 보안을 가능하게 하기 위해 동적으로 구성가능한 프로토콜 모듈 스택을 채용하는데, 그리하여,
1. 그 프로토콜 모듈들은, 그것들의 성질과 관계없이, 공통의 인터페이스(common interface)를 가지며, 그것들이 임의의 방법들로 완전한 스택을 형성하기 위해 함께 구성되도록 할 수 있다.
2. 가능한 스택들의 세트가 환경설정 시간(configuration time)에 결정되도록 한다.
3. 그 시스템이 보안 요건들에 기초하여 정해진 클라이언트(given client)를 위해 사용하기 위해 가장 적절한 스택을 결정하도록 한다.
4. 하나의 스택은 암호화된 트랜스포트 계층(transport layer)을 가지며, 다른 스택은 그렇지 않도록 한다.
적어도 일부 경우들에 있어서, 각각의 프로토콜 모듈은 접속 수립(connection establishment)시 생성된 엔티티에게 원격 클라이언트에 관한 정보를 공급하며, 그 정보는,
1. 발송자(sender)의 MAC 어드레스
2. 발송자의 IP 서브네트 및 포트
3. 발송자에 의해 추가된 인증서
4. 발송자의 유저 네임 및 패스워드
를 포함한다.
나아가, 하나 또는 그 이상의 실시예들에 있어서, 그 프로토콜 모듈들에 의해 공급되는 정보는 그 인증 프로세스의 일부로서 사용된다. 더 나아가, 적어도 어떤 경우들에 있어서는, 기능 세트를 수립하기 위해 그 토픽들 및/또는 큐들의 네임을 사용하는데, 여기서 리드/라이트 접근은, 지명된(named) 토픽/큐로의 접속을 생성할 제어 경로에서의 시도가 기능들의 대응 세트와 '매치'하도록, 네임들의 세트를 사용하여 토픽들 및/또는 큐들에 부여된다. 바람직하게는, (i) 기능 세트 및 (ii) 지명된 토픽 및/또는 큐 둘 다 와일드 카드들을 사용할 수 있다.
하나 또는 그 이상의 경우들에 있어서, 그 기능들이 호출된 클라이언트의 데이터 경로에 새로운 필터 모듈이 동적으로 추가되어, 각각의 메시지가 그것이 아직도 허가된 상태인지를 확인하기 위해 체크되도록 한다. 유익하게도 이는 세션이 여전히 액티브 상태이면서도 그 클라이언트의 기능이 감소되는 경우에 메시지 단위로 그 체킹이 수행될 수 있도록 한다. 적어도 일부 경우들에 있어서는, 정상적인 프로토콜 인터랙션이 계속될 수 있도록 하기 위해, 필터는 그 메시지의 내용을 제거하지만 에러 플래그를 추가한다.
도 7은 블록도의 형태로 본 발명의 일 측면에 따른 시스템의 바람직한 실시예를 도시한다. 그러나, 본 발명은 이러한 실시예로 한정되는 것은 아니다. 보안 pub/sub 클라이언트(754) 및 표준 pub/sub 클라이언트(756)는 pub/sub 엔진(102)과 인터랙션하기를 원한다. 클라이언트들(754, 756)은 네트워크(752)를 통해 통신 매니저(communication manager)(701)와 인터랙션한다. 이러한 인터랙션은 네트워크 계층(701)에 의해 용이하게 된다. 통신 매니저(701)는 보안 프로토콜 앵커(secure protocol anchor)(703), 표준 프로토콜 앵커(standard protocol anchor)(705), 및 프로토콜 스택 정의들(protocol stack definitions)의 저장소(750)를 포함한다. 보안 클라이언트 스택(104)의 인스턴스를 인스턴스화(instantiate)하기 위해, 네트워크 계층(702)은 보안 클라이언트(754)로부터 보안 프로토콜 앵커(703) - 이는 저장소(750)로부터 적절한 프로토콜 스택 정의들을 검색(retrieve)함 - 로 인터랙션들을 라우트한다. 표준 클라이언트 스택(110)의 인스턴스를 인스턴스화하기 위해, 네트워크 계층(702)은 또한 표준 클라이언트(756)로부터 표준 프로토콜 앵커(705) - 이는 저장소(750)로부터 적절한 프로토콜 스택 정의들을 검색함 - 로 인터랙션들을 라우트한다. 스택들(104, 110)은 도 1과 관련하여 기술된 구성요소들(106, 108, 112)을 포함한다. 엔진(102)에 대한 상기 표준 클라이언트 및 보안 클라이언트 둘 모두의 접근은 보안 브로커 로그인 컨텍스트(secure broker login context)(704)에 의해 제어되는데, 이러한 보안 브로크 로그인 컨텍스트(704)는 인증 매니저(authentication manager)(706) 및 허가 매니저(authorization manager)(707)를 포함한다.
지금까지의 논의에 비추어 볼 때, 일반적인 용어로는, 본 발명의 일 측면은 클라이언트들(650, 658, 660, 754, 756)과 같은 복수의 클라이언트들과 발행-구독 엔진(102) 사이의 인터랙션들을 제어하는 방법이라는 것을 알 수 있을 것이다. 상기 방법은 도 2의 블록들(202-208)에 따라, 복수의 프로토콜 스택들을 배치하는 단계를 포함한다. 상기 프로토콜 스택들 각각은 복수의 구성가능한 프로토콜 모듈들(108)을 포함한다. 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현한다. 이 단계는, 예를 들어, 도 7의 통신 매니저(701)를 사용하여 수행될 수 있다. 추가 단계들은 블록 210에서와 같이 상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 단계, 블록 212에서와 같이 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하는 단계를 포함한다. 이들 단계들은, 예를 들어, 도 7에서의 네트워크 계층(702)을 사용하여 수행될 수 있다.
결정 블록(212)의 "Y" 분기에 따라, 추가 단계는 상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 상기 보안 접속(secure connection)을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택(이는 스택들(104) 중 하나로 표현됨)의 암호화된 인스턴스를 인스턴스화하는 것이다. 이 단계는, 예를 들어, 도 7에서의 보안 프로토콜 앵커(703)를 사용하여 수행될 수 있다. 추가 단계들은 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계(예를 들어, 도 3 및 4와 관련하여 기술됨); 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계(예를 들어, 도 5와 관련하여 기술됨)를 포함한다. 이들 단계들은, 예를 들어, 도 7에서의 보안 브로커 로그인 컨텍스트(704)를 사용하여 수행될 수 있다.
하나 또는 그 이상의 경우들에 있어서, 추가 단계는 상기 복수의 클라이언트들 중 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 단계를 포함한다(블록 210 반복). 나아가 추가 단계들은 블록 212를 반복함에 의해 상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 단계, 및 상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속되지 않을 것이라는 결정에 응답하여(블록 212의 "N" 분기), 블록 216에 따라 상기 비-보안 접속(non-secure connection)을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제2의 적절한 프로토콜 스택의 클리어-텍스트 인스턴스(이는 스택들(110) 중 하나로 표현됨)를 인스턴스화하는 단계를 포함한다. 단계 216은, 예를 들어, 도 7에서 표준 프로토콜 앵커(705)를 사용하여 수행될 수 있고, 상기 반복되는 단계들은 앞서 기술된 것과 동일한 모듈들 또는 블록들을 사용하여 수행될 수 있다. 상기 복수의 클라이언트들 중 상기 제2의 정해진 프로토콜은 인증되고 허가될 수 있다.
바람직하게는, 상기 보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화는 단계는, 상기 공통의 인터페이스들을 사용하여, 보안 소켓 계층(또는 유사) 모듈들(106)을 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택에서의 구성가능한 프로토콜 모듈들(108)과 결합(join)시키는 단계; 및 비-보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 단계는, 상기 공통의 인터페이스들을 사용하여, 트랜스퍼 제어 프로토콜(또는 유사) 모듈들(112)을 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택에서의 구성가능한 프로토콜 모듈들(108)과 결합시키는 단계를 포함한다.
상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계는, 예를 들어, 블록들(402-410)에 도시된 바와 같은 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 인스턴스화되고 암호화된 인스턴스(instantiated encrypted instance)에서의 상기 구성가능한 프로토콜 모듈들 각각을 위한 아이덴티티 정보(identity information)를 추출하는 단계, 뿐만 아니라 상기 추출된 아이덴티티 정보에 기초하여 범용 아이덴티티 객체(330)를 구성하는 단계를 포함할 수 있다. 예를 들어, 이들 단계들은 도 7에서의 보안 브로커 로그인 컨텍스트(704)를 사용하여 수행될 수 있다. 추가의 가능한 단계들은 상기 발행-구독 엔진(102)(예를 들어, 그것의 JAAS 인증 컨텍스트(332))에 범용 아이덴티티 객체(332)를 공급하는 단계; 및 블록들(412-420)에 따라, 범용 아이덴티티 객체(332)가 적절한 인증 규칙들과 매치되는 경우 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계를 포함한다. 예를 들어, 이들 단계들은 도 7에서의 인증 매니저(706)를 사용하여 수행될 수 있다.
도 5를 재차 참조하면, 블록 502-508에 따라, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트는 유저 u:와 연관될 수 있다. 여기서, u:는 유저 식별자이다. 나아가, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계는 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 p:에 의해 정해진 동작을 수행하도록 요구된다는 것을 결정하는 것 - 여기서, p:는 동작 식별자임 - ; 및 상기 동작이 리소스 r:과 관련되어 - 여기서 r은 리소스 식별자임 - 환경 e:에서 수행되도록 요구된다는 것을 결정하는 것을 포함한다. 블록 510에서와 같이, 가능한 추가 단계는 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들의 세트 C를 검색하는 것을 포함한다. 블록들(512-516)은 파라미터들 u:, r:, p:e:C에 포함되는 경우 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 것을 나타낸다. 리소스 식별자 r:은, 예를 들어, 토픽 및 큐 중 하나를 식별할 수 있다. 동작 식별자 p:는, 예를 들어, 리드 동작 및 라이트 동작 중 하나를 식별할 수 있다. 이들 단계들은, 예를 들어, 도 7에서의 허가 매니저(707)를 사용하여 수행될 수 있다.
도 6에 관한 설명을 재차 참조하면, 몇몇 경우들에 있어서, 추가 단계는, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 것에 후속해서, 복수의 클라이언트들(660) 중 상기 제1의 정해진 클라이언트가 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들의 세트 C에서의 변화를 가져왔다는 것을, 검출하는 단계를 포함한다. 이는, 예를 들어, 허가 매니저(707)로 수행될 수 있다. 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 또 다른 동작을 수행하기를 원한다는 것이 탐지되는 경우(예를 들어, 허가 관리자(707)에 의해) - 이는 기능들의 변화된 세트에 의해 허용되지 않음 -; 그 허용되지 않은 동작과 연관된 메시지(652)의 페이로드(654)를 드랍(drop)하고, 그 허용되지 않은 동작과 연관된 메시지의 헤더 내에 에러 플래그(error flag)를 배치한다. 예를 들어, 상기 페이로드는 MQTT 프로토콜 모듈(108)에 의해 드랍될 수 있다.
예시적인 시스템 및 제조 세부사항
본 발명 및 본 발명의 컴포넌트들을 구현하기 위해 전용 하드웨어, 범용 프로세서들, 펌웨어, 소프트웨어, 또는 이것들의 조합을 이용하는 여러 가지 기술들이 채용될 수 있다. 본 발명의 하나 또는 그 이상의 실시예들, 또는 이것의 구성요소들은 제시된 방법 단계들을 수행하기 위한 컴퓨터 사용가능 프로그램 코드를 갖는 컴퓨터 사용가능 매체를 포함하는 컴퓨터 제품의 형태로 구현될 수 있다. 나아가, 본 발명의 하나 또는 그 이상의 실시예들, 또는 이것의 구성요소들은 메모리 및 적어도 하나의 프로세서 - 이 프로세서는 예시적인 방법 단계들을 수행하도록 동작하고 이 메모리에 결합됨 - 를 포함하는 장치의 형태로 구현될 수 있다.
하나 또는 그 이상의 실시예들은 범용 컴퓨터 또는 워크스테이션 상에서 실행되는 소프트웨어를 사용할 수 있다. 도 8을 참조하면, 이러한 구현은, 예를 들어, 프로세서(802), 메모리(804), 및 예를 들어, 디스플레이(806) 및 키보드(808)에 의해 형성된 입력/출력 인터페이스를 채용할 수 있다. 여기에 사용되는 "프로세서"라는 용어는, 예를 들어, CPU(중앙 처리 장치) 및/또는 처리 회로의 기타 형태들을 포함하는 처리 디바이스를 포함하는 것을 의미한다. 나아가, "프로세서"라는 용어는 하나의 개별 프로세서보다 많은 것을 언급할 수도 있다. "메모리"라는 용어는, 예를 들어, 임의 접근 메모리(random access memory, RAM), 읽기 전용 메모리(read only memory, ROM), 고정(fixed) 메모리 디바이스(예, 하드 드라이브), 착탈식(removable) 메모리 디바이스(예, 디스켓), 플래시 메모리 등과 같이, 프로세서 또는 CPU와 연관된 메모리를 포함하는 것을 의미한다. 또한, 여기에서 사용되는 "입력/출력 인터페이스"라는 문구는, 예를 들어, 처리 유닛에 데이터를 입력하기 위한 하나 또는 그 이상의 메커니즘들(예, 마우스), 및 처리 유닛과 연관된 결과들을 제공하기 위한 하나 또는 그 이상의 메커니즘들(예, 프린터)을 포함하는 것을 의미한다. 프로세서(802), 메모리(804), 및 입력/출력 인터페이스(예, 디스플레이(806) 및 키보드(808))는, 예를 들어, 데이터 처리 유닛(801)의 일부로서 버스(810)를 통해 연결될 수 있다. 예를 들어, 버스(810)를 통한 적절한 인터랙션들은 또한, 네트워크 카드와 같은 네트워크 인터페이스(814) - - 이는 컴퓨터 네트워크와 인터페이스하기 위해 제공될 수 있음 - 로 제공될 수 있고, 디스켓 또는 CD-ROM 드라이브와 같은 매체 인터페이스(816) - 이는 매체(818)와 인터페이스하기 위해 제공될 수 있음 - 로 제공될 수 있다.
따라서, 여기에서 기술된 바와 같이, 본 발명의 방법들을 수행하기 위한 코드 또는 명령들을 포함하는 컴퓨터 소프트웨어는 일부 또는 전체에 이용, 로드(예를 들어, RAM 내에)되고 CPU에 의해 실행 준비시, 상기 연관된 메모리 디바이스들(예를 들어, ROM, 고정식 또는 착탈식 메모리) 중 하나 또는 그 이상에 저장될 수 있다.
나아가, 본 발명은 컴퓨터 또는 명령 실행 시스템에 의해 또는 컴퓨터 또는 명령 실행 시스템과 함께 사용하기 위한 프로그램 코드를 제공하는 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체(예, 매체(818))로부터 접근가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 설명을 위해, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 명령 실행 시스템, 장치, 또는 디바이스와 함께 사용하기 위한 어떠한 장치라도 무방할 수 있다. 상기 매체는 여기에 제시된 하나 또는 그 이상의 방법 단계들을 실행하기 위한 프로그램 코드를 저장할 수 있다.
상기 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 실체적인 컴퓨터-판독가능 스토리지 매체의 예들은, 반도체 또는 솔리드-스테이트 메모리(예, 메모리(804)), 자기 테이프, 착탈식 컴퓨터 디스켓(예, 매체(818)), RAM, ROM, 리지드 자기 디스크(rigid magnetic disk) 및 광 디스크(그러나 전파 매체는 배제함)를 포함한다. 현재로서의 광 디스크들의 예들은 컴팩트 디스크-ROM(CD-ROM), 컴팩트 디스크-리드/라이트(CD-R/W) 및 DVD를 포함한다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은 시스템 버스(810)를 통해 메모리 구성요소들(804)에 간접적으로 또는 직접적으로 결합된 적어도 하나의 프로세서(802)를 포함할 것이다. 상기 메모리 구성요소들은 상기 프로그램 코드의 실제 실행 동안 채용되는 로컬 메모리, 벌크 스토리지, 및 캐시 메모리들 - 이는 실행 동안 벌크 스토리지로부터 코드가 검색되어야 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 스토리지를 제공함 - 을 포함할 수 있다.
입력/출력(I/O) 디바이스들(키보드들(808), 디스플레이들(806), 포인팅 디바이스들 등을 포함하나, 이러한 것들로 한정되는 것은 아님)은 직접적으로(예, 버스(810)를 통해) 또는 중간의 I/O 컨트롤러들(미도시)을 통해 그 시스템에 결합될 수 있다.
네트워크 인터페이스(814)와 같은 네트워크 어댑터들은 또한 중간의 사설 네트워크 또는 공중 네트워크를 통해 기타 데이터 처리 시스템들 또는 상기 데이터 처리 시스템이 원격 프린터들 또는 스토리지 디바이스들에 결합될 수 있도록 하기 위해 상기 시스템에 결합될 수 있다. 모뎀들, 케이블 모뎀 및 이더넷 카드들은 단지 네트워크 어댑터들의 현재로서의 이용가능한 유형들 중 몇 가지에 지나지 않는다.
청구항들을 포함하여, 상세한 설명에서 사용되는 바와 같이, "서버"는 서버 프로그램을 실행하는 물리적 데이터 처리 시스템(예, 도 8에 도시된 시스템(812))을 포함한다. 이러한 물리적 서버는 디스플레이 또는 키보드를 포함할 수도 있고 그렇지 않을 수도 있다는 것을 이해하여야 할 것이다.
본 발명의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 어떤 조합으로 작성될 수 있는데, 그러한 프로그래밍 언어들의 예들에는, 자바, 스몰토크, C++ 등과 같은 객체 지향 프로그래밍 언어, "C" 프로그래밍 언어 또는 유사 프로그래밍 언어들과 같은 전통적인 절차형 프로그래밍 언어들이 포함된다. 상기 프로그램 코드는 독립형 소프트웨어 패키지로서, 유저의 컴퓨터 상에서 전적으로, 유저의 컴퓨터 상에서 부분적으로 실행될 수도 있고, 유저의 컴퓨터 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 전적으로 실행될 수도 있다. 후자의 시나리오에서, 상기 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)를 포함하는 네트워크의 유형을 통해 유저의 컴퓨터에 연결될 수 있고, 그 연결은 외부 컴퓨터에 대해 이뤄질 수 있다(예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해).
본 발명의 실시예들은, 여기서는 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 기술되었다. 상기 흐름도들 및/또는 블록도들에서의 각각의 블록, 상기 흐름도들 및/또는 블록도들에서의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것이 이해되어야 할 것이다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터, 전용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치로 제공되어 머신(machine)을 생성해 낼 수 있다. 그리하여, 그 명령들이 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행되는 경우 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 수단을 생성하도록 한다.
이들 컴퓨터 프로그램 명령들은 또한 실체적인 컴퓨터-판독가능 스토리지 매체 내에 저장될 수 있는데, 상기 실체적인 컴퓨터-판독가능 스토리지 매체는 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치가 특정 방법으로 기능하도록 명령할 수 있다. 그리하여 그 컴퓨터-판독가능 매체에 저장된 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/작용을 구현하는 명령 수단을 포함하는 제조 물품을 만들어 내도록 한다. 상기 컴퓨터 프로그램 명령들은 또한 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치 상으로 로드되어 일련의 동작 단계들이 상기 컴퓨터 또는 기타 프로그램가능 장치 상에서 수행되도록 하여 컴퓨터로 구현된 프로세스를 만들어 내도록 한다. 그리하여 상기 명령들이 상기 컴퓨터 또는 기타 프로그램 장치 상에서 실행되는 경우 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 프로세서들을 제공하도록 한다.
도면들에서 흐름도 및 블록도들은 본 발명의 여러 가지 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 아키텍쳐, 기능, 및 가능한 구현들의 동작을 예시한다. 여기서, 흐름도 및 블록도들 내의 각각의 블록은 모듈, 세그먼트, 또는 코드부를 나타낼 수 있는데, 이것들 각각은 특정 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행가능한 명령들을 포함한다. 또한, 어떤 다른 구현들에서는, 상기 블록 내에 나타내어진 기능들은 그 도면들에서 나타내어진 순서를 벗어나서 일어날 수도 있다는 것을 주목해야 한다. 예를 들어, 연속해서 도시된 두 개의 블록들은, 관련된 기능에 의존하여, 실질적으로 동시에 실행될 수도 있고, 또는 그 블록들은 때로는 역순으로 실행될 수도 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 상기 블록도들 및/또는 흐름도 내의 블록들의 조합들은 그 특정 기능들 또는 작용들을 수행하는 전용 하드웨어-기반의 시스템들, 또는 전용 하드웨어 및 컴퓨터 명령들의 조합들에 의해 구현될 수도 있다는 것을 주목해야 할 것이다.
나아가, 여기에 기술되는 방법들 중 어떤 것은 실체적인 컴퓨터 판독가능 스토리지 매체 상에 구현되는 별개의 소프트웨어 모듈들을 포함하는 시스템을 제공하는 추가 단계를 포함할 수 있고, 상기 모듈들은 도 7에 도시된 컴포넌트들(예를 들어, 블록들 102, 104, 106, 108, 110, 112, 701-707, 750, 블록 750은 예를 들어 데이터베이스 내의 엔트리들을 포함할 수 있음) 중 어떤 것 또는 모두를 포함할 수 있다. 그런 다음, 상기 방법 단계들은, 위에서 기술된 것과 같이 하드웨어 프로세서 상에서 실행되는 시스템의 서브-모듈들 및/또는 별개의 소프트웨어 모듈들을 사용하여 수행될 수 있다. 나아가, 컴퓨터 프로그램 제품은 여기에 기술되는 하나 또는 그 이상의 방법 단계들을 수행하기 위해 실행되기에 적합한 실체적인 컴퓨터-판독가능 스토리지 매체를 포함할 수 있는데, 이는 상기 별개의 소프트웨어 모듈들을 갖는 시스템의 제공을 포함한다.
어떤 경우에는, 여기에 예시된 컴포넌트들은 하드웨어, 소프트웨어, 또는 이것들의 조합들의 여러 가지 형태들 - 예를 들어, 주문형 집적회로(들)(application specific integrated circuit(s), ASICs), 기능 회로, 메모리와 연관된 하나 또는 그 이상의 적절하게 프로그램된 범용 디지털 컴퓨터들 등) - 로 구현될 수 있다는 것을 이해하여야 할 것이다. 여기에 제공되는 발명의 가르침이 주어진다면, 당해 기술 분야에서 통상의 기술을 가진 자는 본 발명의 컴포넌트들의 다른 구현들을 생각해 낼 수 있을 것이다.
위에서 기술된 발명의 실시예들은 다수의 다른 방식으로 구현될 수 있다는 것을 알 수 있을 것이고 또한 이해하여야 할 것이다. 여기에 제공되는 발명의 가르침이 주어진다면, 당해 기술 분야에서 통상의 기술을 가진 자는 발명의 다른 구현들을 생각해 낼 수 있을 것이다. 사실상, 비록 본 발명의 실시예들이 여기서는 첨부된 도면들을 참조하여 기술되었으나, 발명은 예시된 그 형태대로의 실시예들로 한정되지는 않으며, 또한 발명의 범위 또는 사상을 벗어나지 않고서 여러 가지 다른 변경 및 변형 예들이 이뤄질 수 있다는 것은 당해 기술 분야에서 숙련된 자에게는 자명하다는 것이 이해될 수 있을 것이다.

Claims (21)

  1. 발행-구독 엔진(publication-subscription engine)과 복수의 클라이언트들 사이의 인터랙션들(interactions)을 제어하는 방법에 있어서,
    복수의 프로토콜 스택들을 배치(deploy)하는 단계 - 상기 프로토콜 스택들 각각은 복수의 구성가능한(composable) 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현함 -;
    상기 복수의 클라이언트들 중 제1의 정해진(given) 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라고 결정하는 것에 응답하여, 보안 접속을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한(appropriate) 프로토콜 스택의 암호화된 인스턴스(encrypted instance)를 인스턴스화(instantiate)하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증(authenticate)하는 단계; 및
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가(authorize)하는 단계를 포함하는,
    방법.
  2. 청구항 1에 있어서, 상기 방법은,
    상기 복수의 클라이언트들 중 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 단계;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 단계;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속되지 않을 것이라고 결정하는 것에 응답하여, 비보안(non-secure) 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 제2의 적절한 프로토콜 스택의 클리어-텍스트 인스턴스(clear-text instance)를 인스턴스화하는 단계;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 인증하는 단계; 및
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 허가하는 단계를 더 포함하는,
    방법.
  3. 청구항 2에 있어서, 상기 방법은,
    시스템을 제공하는 단계 - 상기 시스템은 별개의(distinct) 소프트웨어 모듈들을 포함하고, 상기 별개의 소프트웨어 모듈들 각각은 실체적인(tangible) 컴퓨터-판독가능 기록가능 스토리지 매체 상에 구현되고, 상기 별개의 소프트웨어 모듈들은 통신 매니저 모듈, 네트워크 계층 모듈, 보안 프로토콜 앵커 모듈, 표준 프로토콜 앵커 모듈, 및 보안 브로커 로그인 컨텍스트 모듈을 포함함 - 를 더 포함하되,
    상기 복수의 프로토콜 스택들을 배치하는 단계는 하드웨어 프로세서 상에서 실행되는 상기 통신 매니저 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 네트워크 계층 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 네트워크 계층 모듈에 의해 수행되고;
    상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 보안 프로토콜 앵커 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 인증하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 허가하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈에 의해 수행되고;
    상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 단계는 상기 하드웨어 프로세서 상에서 실행되는 상기 표준 프로토콜 앵커 모듈에 의해 수행되는,
    방법.
  4. 청구항 3에 있어서, 상기 방법은
    상기 보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 통신 매니저 모듈이, 상기 공통의 인터페이스를 사용하여, 보안 소켓 계층 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합(join)시키는 단계; 및
    상기 비보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 통신 매니저 모듈이, 상기 공통의 인터페이스들을 사용하여, 트랜스퍼 제어 프로토콜 모듈들(transfer control protocol modules)을 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합시키는 단계를 포함하는,
    방법.
  5. 청구항 3에 있어서, 상기 별개의 소프트웨어 모듈들은 인증 매니저 모듈을 더 포함하고, 상기 인증 매니저 모듈은 상기 보안 브로커 로그인 컨텍스트 모듈의 일부이며, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계는,
    상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈을 사용하여, 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 인스턴스화되고 암호화된 인스턴스(instantiated encrypted instance)에서의 상기 구성가능한 프로토콜 모듈들 각각을 위한 아이덴티티 정보를 추출하는 단계;
    상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈을 사용하여, 상기 추출된 아이덴티티 정보에 기초하여 범용 아이덴티티 객체(general purpose identity object)를 구성(build)하는 단계;
    상기 하드웨어 프로세서 상에서 실행되는 상기 인증 매니저 모듈을 사용하여, 상기 발행-구독 엔진에 상기 범용 아이덴티티 객체를 공급하는 단계; 및
    상기 하드웨어 프로세서 상에서 실행되는 상기 인증 매니저 모듈을 사용하여, 상기 범용 아이덴티티 객체가 적절한 인증 규칙들과 매치되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계를 포함하는,
    방법.
  6. 청구항 3에 있어서, 상기 별개의 소프트웨어 모듈들은 허가 매니저 모듈을 더 포함하고, 상기 허가 매니저 모듈은 상기 보안 브로커 로그인 컨텍스트 모듈의 일부이며,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트는 유저 u:와 연관되고 - u:는 유저 식별자(user identifier)임 -;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 인증 매니저 모듈로써 이하의 서브-단계들, 즉,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 p:에 의해 정해진 동작을 수행하기를 원한다는 것을, 결정하는 단계 - p:는 동작 식별자(operation identifier)임 -;
    상기 동작이 리소스 r: - r:은 리소스 식별자(resource identifier)임 - 과 관련되어 환경 e:에서 수행되도록 요구된다는 것을, 결정하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들(capabilities)의 세트 C를 검색(retrieve)하는 단계; 및
    상기 파라미터들 u:, r:, p:, 및 e:C에 포함되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계;
    를 수행하는 것을 포함하는,
    방법.
  7. 청구항 6에 있어서, 상기 리소스 식별자 r:은 토픽(topic) 및 큐(queue) 중 하나를 식별하는,
    방법.
  8. 청구항 6에 있어서, 상기 동작 식별자 p:는 리드 동작 및 라이트 동작 중 하나를 식별하는,
    방법.
  9. 청구항 6에 있어서, 상기 방법은
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계 이후에, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들의 상기 세트 C에서의 변화를 가져왔다는 것을, 상기 하드웨어 프로세서 상에서 실행되는 상기 허가 매니저 모듈로써 탐지하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 기능들의 상기 변화된 세트에 의해 허용되지 않는 또 다른 동작을 수행하기를 원한다는 것을, 상기 하드웨어 프로세서 상에서 실행되는 상기 허가 매니저 모듈로써, 탐지하는 단계; 및
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 허용되지 않은 동작을 수행하기를 원한다는 것을 탐지하는 것에 응답하여, 상기 허용되지 않은 동작과 연관된 메시지의 페이로드(payload)를 상기 구성가능한 프로토콜 모듈들 중 정해진 프로토콜 모듈(given one)로써 드랍(drop)하고, 상기 허용되지 않은 동작과 연관된 상기 메시지의 헤더 내에 에러 플래그를 배치하는 단계를 더 포함하는,
    방법.
  10. 청구항 3에 있어서,
    상기 보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 통신 매니저 모듈이, 상기 공통의 인터페이스들을 사용하여, 보안 소켓 계층 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합시키는 단계를 포함하고;
    상기 비보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 단계는, 상기 하드웨어 프로세서 상에서 실행되는 상기 통신 매니저 모듈이, 상기 공통의 인터페이스들을 사용하여, 트랜스퍼 제어 프로토콜 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합시키는 단계를 포함하고;
    상기 별개의 소프트웨어 모듈들은 인증 매니저 모듈 - 상기 인증 매니저 모듈은 상기 보안 브로커 로그인 컨텍스트 모듈의 일부임 - 을 더 포함하며,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 단계는,
    상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈을 사용하여, 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 인스턴스화되고 암호화된 인스턴스에서의 상기 구성가능한 프로토콜 모듈들 각각을 위한 아이덴티티 정보를 추출하는 단계;
    상기 하드웨어 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈을 사용하여, 상기 추출된 아이덴티티 정보에 기초한 범용 아이덴티티 객체를 구성하는 단계;
    상기 하드웨어 프로세서 상에서 실행되는 상기 인증 매니저 모듈을 사용하여, 상기 발행-구독 엔진에 상기 범용 아이덴티티 객체를 공급하는 단계; 및
    상기 하드웨어 프로세서 상에서 실행되는 상기 인증 매니저 모듈을 사용하여, 상기 범용 아이덴티티 객체가 적절한(appropriate) 허가 규칙들과 매치되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계를 포함하며,
    상기 별개의 소프트웨어 모듈들은 허가 매니저 모듈 - 상기 허가 매니저 모듈은 상기 보안 브로커 로그인 컨텍스트 모듈의 일부임 - 을 더 포함하며,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트는 유저 u: - u:는 유저 식별자임 - 와 연관되고;
    상기 하드웨어 프로세서 상에서 실행되는 상기 허가 매니저 모듈로써, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계는, 이하의 서브-단계들, 즉,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 p: - p:는 동작 식별자임 - 에 의해 정해진 동작을 수행하기를 원한다는 것을, 결정하는 단계;
    상기 동작이 리소스 r: - r:은 리소스 식별자임 - 과 관련되어 환경 e:에서 수행되도록 요구된다는 것을, 결정하는 단계;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들의 세트 C를 검색(retrieve)하는 단계; 및
    상기 파라미터들 u:, r:, p:, 및 e:C에 포함되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 단계;
    를 수행하는 것을 포함하는,
    방법.
  11. 실체적인(tangible) 컴퓨터 판독가능 기록가능 스토리지 매체를 포함하는 컴퓨터 프로그램 제품 - 상기 스토리지 매체는 발행-구독 엔진(publication-subscription engine)과 복수의 클라이언트들 사이의 인터랙션들(interactions)을 제어하는 컴퓨터 사용가능 프로그램 코드를 포함함 - 에 있어서,
    복수의 프로토콜 스택들을 배치(deploy)하는 컴퓨터 사용가능 프로그램 코드 - 상기 프로토콜 스택들 각각은 복수의 구성가능한(composable) 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현함 - ;
    상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 보안 접속을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택의 암호화된 인스턴스(encrypted instance)를 인스턴스화(instantiate)하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 컴퓨터 사용가능 프로그램 코드; 및
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 컴퓨터 사용가능 프로그램 코드를 포함하는,
    컴퓨터 프로그램 제품.
  12. 청구항 11에 있어서, 상기 컴퓨터 프로그램 제품은,
    상기 복수의 클라이언트들 중 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 연결되지 않을 것이라는 결정에 응답하여, 비보안 접속(non-secure connection)을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 제2의 적절한 프로토콜 스택의 클리어-텍스트 인스턴스(clear-text instance)를 인스턴스화하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 인증하는 컴퓨터 사용가능 프로그램 코드; 및
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 허가하는 컴퓨터 사용가능 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 제품.
  13. 청구항 11에 있어서, 상기 발행-구독 엔진과 상기 복수의 클라이언트들 사이의 인터랙션들을 제어하는 상기 컴퓨터 사용가능 프로그램 코드는 별개의(distinct) 소프트웨어 모듈들을 포함하며, 상기 별개의 소프트웨어 모듈은 통신 매니저 모듈, 네트워크 계층 모듈, 보안 프로토콜 앵커 모듈, 표준 프로토콜 앵커 모듈, 및 보안 브로커 로그인 컨텍스트 모듈을 포함하되,
    상기 통신 매니저 모듈은 상기 복수의 프로토콜 스택들을 배치하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하고;
    상기 네트워크 계층 모듈은, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 상기 컴퓨터 사용가능 프로그램 코드, 및 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하고;
    상기 보안 프로토콜 앵커 모듈은 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하고;
    상기 보안 브로커 로그인 컨텍스트 모듈은 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 인증하는 상기 컴퓨터 사용가능 프로그램 코드, 및 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 허가하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하고;
    상기 표준 프로토콜 앵커 모듈은 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하는,
    컴퓨터 프로그램 제품.
  14. 청구항 13에 있어서,
    상기 보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 상기 컴퓨터 사용가능 프로그램 코드는, 상기 공통의 인터페이스들을 사용하여, 보안 소켓 계층 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합(join)시키는 컴퓨터 사용가능 프로그램 코드를 포함하고;
    상기 비보안 접속을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 상기 컴퓨터 사용가능 프로그램 코드는, 상기 공통의 인터페이스들을 사용하여, 트랜스퍼 제어 프로토콜 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합시키는 컴퓨터 사용가능 프로그램 코드를 포함하는,
    컴퓨터 프로그램 제품.
  15. 청구항 13에 있어서, 상기 별개의 소프트웨어 모듈들은,
    상기 보안 브로커 로그인 컨텍스트 모듈의 일부인, 인증 매니저 모듈; 및
    상기 보안 브로커 로그인 컨텍스트 모듈의 일부인, 허가 매니저 모듈을 더 포함하되,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 상기 컴퓨터 사용가능 프로그램 코드는,
    상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 인스턴스화되고 암호화된 인스턴스(instantiated encrypted instance)에서의 상기 구성가능한 프로토콜 모듈들 각각을 위한 아이덴티티 정보를 추출하는 컴퓨터 사용가능 프로그램 코드;
    상기 추출된 아이덴티티 정보에 기초하여 범용 아이덴티티 객체를 구성하는 컴퓨터 사용가능 프로그램 코드; 및
    상기 인증 매니저 모듈 - 상기 인증 매니저 모듈은,
    상기 발행-구독 엔진에 상기 범용 아이덴티티 객체를 공급하는 컴퓨터 사용가능 프로그램 코드; 및
    상기 범용 아이덴티티 객체가 적절한(appropriate) 인증 규칙들과 매치되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 컴퓨터 사용가능 프로그램 코드를 포함함 - 을 포함하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트는 유저 u: - u:는 유저 식별자임 - 와 연관되고;
    상기 허가 매니저 모듈은 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 상기 컴퓨터 사용가능 프로그램 코드를 포함하고, 상기 허가 매니저 모듈은,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 p: - p:는 동작 식별자임 - 에 의해 정해진 동작을 수행하기를 원한다는 것을 결정하는 컴퓨터 사용가능 프로그램 코드;
    상기 동작이 리소스 r: - r:은 리소스 식별자임 - 과 관련되어 환경 e:에서 수행되도록 요구된다는 것을 결정하는 컴퓨터 사용가능 프로그램 코드;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들(capabilities)의 세트 C를 검색(retrieve)하는 컴퓨터 사용가능 프로그램 코드; 및
    상기 파라미터들 u:, r:, p:e:C에 포함되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 컴퓨터 사용가능 프로그램 코드를 포함하는,
    컴퓨터 프로그램 제품.
  16. 발행-구독 엔진(publication-subscription engine)과 복수의 클라이언트들 사이의 인터랙션들(interactions)을 제어하는 장치에 있어서,
    메모리; 및
    상기 메모리에 결합되는 적어도 하나의 프로세서를 포함하되,
    상기 적어도 하나의 프로세서는,
    복수의 프로토콜 스택들을 배치(deploy)하고 - 상기 프로토콜 스택들 각각은 복수의 구성가능한(composable) 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현함 -;
    상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 보안 접속을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택의 암호화된 인스턴스(eycrypted instance)를 인스턴스화(instantiate)하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하도록 동작하는,
    장치.
  17. 청구항 16에 있어서, 상기 적어도 하나의 프로세서는,
    상기 복수의 클라이언트들 중 제2의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하고;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하고;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속되지 않을 것이라는 결정에 응답하여, 비보안 접속(non-secure connection)을 발효시키기 위해 상기 복수의 프로토콜 스택들 중 제2의 적절한 프로토콜 스택의 클리어-텍스트 인스턴스(clear-text instance)를 인스턴스화하고;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 인증하고;
    상기 복수의 클라이언트들 중 상기 제2의 정해진 클라이언트를 허가하도록 더 동작하는,
    장치.
  18. 청구항 17에 있어서, 상기 장치는 실체적인 컴퓨터-판독가능 기록가능 스토리지 매체 - 상기 스토리지 매체는 상기 스토리지 매체 상에 구현된 별개의(distinct) 소프트웨어 모듈들을 가지며, 상기 별개의 소프트웨어 모듈들은 통신 매니저 모듈, 네트워크 계층 모듈, 보안 프로토콜 앵커 모듈, 표준 프로토콜 앵커 모듈, 및 보안 브로커 로그인 컨텍스트 모듈을 포함함 - 를 더 포함하되,
    상기 복수의 프로토콜 스택들을 배치하는 것은 상기 적어도 하나의 프로세서 상에서 실행되는 상기 통신 매니저 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 네트워크 계층 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트가 상기 보안 방식으로 접속될 것인지를 결정하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 네트워크 계층에 의해 수행되고;
    상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 보안 프로토콜 앵커 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 인증하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈에 의해 수행되고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트 및 상기 제2의 정해진 클라이언트를 허가하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 보안 브로커 로그인 컨텍스트 모듈에 의해 수행되고;
    상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하는 것은, 상기 적어도 하나의 프로세서 상에서 실행되는 상기 표준 프로토콜 앵커 모듈에 의해 수행되는,
    장치.
  19. 청구항 18에 있어서,
    상기 적어도 하나의 프로세서는, 상기 공통의 인터페이스들을 사용하여, 보안 소켓 계층 모듈들을 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합(join)시킴에 의해, 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 암호화된 인스턴스를 인스턴스화하도록 동작가능하고;
    상기 적어도 하나의 프로세서는, 상기 공통의 인터페이스들을 사용하여, 트랜스퍼 제어 프로토콜 모듈들(transfer control protocol modules)을 상기 복수의 프로토콜 스택들 중 상기 제2의 적절한 프로토콜 스택에서의 상기 구성가능한 프로토콜 모듈들과 결합시킴에 의해, 상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 클리어-텍스트 인스턴스를 인스턴스화하도록 동작가능한,
    장치.
  20. 청구항 18에 있어서, 상기 별개의 소프트웨어 모듈들은,
    상기 보안 브로커 로그인 컨텍스트 모듈의 일부인, 인증 매니저 모듈; 및
    상기 보안 브로커 로그인 컨텍스트 모듈의 일부인, 허가 매니저 모듈을 더 포함하되,
    상기 적어도 하나의 프로세서는,
    상기 복수의 프로토콜 스택들 중 상기 제1의 적절한 프로토콜 스택의 상기 인스턴스화되고 암호화된 인스턴스(instantiated encrypted instance)에서의 상기 구성가능한 프로토콜 모듈들 각각을 위한 아이덴티티 정보를 추출하고;
    상기 추출된 아이덴티티 정보에 기초하여 범용 아이덴티티 객체(general purpose identity object)를 구성(build)하고;
    상기 발행-구독 엔진에 상기 범용 아이덴티티 객체를 공급하고, 상기 범용 아이덴티티 객체가 적절한 인증 규칙들과 매치되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하기 위해, 상기 인증 매니저 모듈을 사용함에 의해,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하도록 동작하고,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트는 유저 u: - u:는 유저 식별자임 - 와 연관되고;
    상기 적어도 하나의 프로세서는,
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 p: - p:는 동작 식별자임 - 에 의해 정해진 동작을 수행하기를 원한다는 것을 결정하고;
    상기 동작이 리소스 r: - r:은 리소스 식별자임 - 과 관련되어 환경 e:에서 수행되도록 요구된다는 것을 결정하고;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트와 연관된 기능들(capabilities)의 세트 C를 검색(retrieve)하고;
    상기 파라미터들 u:, r:, p:, 및 e:C에 포함되는 경우, 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하기 위해,
    상기 허가 매니저 모듈을 실행함에 의해 상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하도록 동작하는,
    장치.
  21. 발행-구독 엔진(publication-subscription engine)과 복수의 클라이언트들 사이의 인터랙션들(interactions)을 제어하는 장치에 있어서,
    복수의 프로토콜 스택들을 배치(deploy)하는 수단 - 상기 프로토콜 스택들 각각은 복수의 구성가능한(composable) 프로토콜 모듈들을 포함하고, 상기 구성가능한 프로토콜 모듈들 각각은 공통의 인터페이스들을 구현함 -;
    상기 복수의 클라이언트들 중 제1의 정해진 클라이언트가 상기 발행-구독 엔진에 접속되기를 원한다는 것을 탐지하는 수단;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 보안 방식(secure manner)으로 접속될 것인지를 결정하는 수단;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트가 상기 보안 방식으로 접속될 것이라는 결정에 응답하여, 상기 보안 접속을 발효(effectuate)시키기 위해 상기 복수의 프로토콜 스택들 중 제1의 적절한 프로토콜 스택의 암호화된 인스턴스를 인스턴스화(instantiate)하는 수단;
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 인증하는 수단; 및
    상기 복수의 클라이언트들 중 상기 제1의 정해진 클라이언트를 허가하는 수단을 포함하는,
    장치.
KR1020117020667A 2009-02-12 2009-04-30 발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술 KR20110122731A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/369,885 2009-02-12
US12/369,885 US10110631B2 (en) 2009-02-12 2009-02-12 Introducing encryption, authentication, and authorization into a publication and subscription engine

Publications (1)

Publication Number Publication Date
KR20110122731A true KR20110122731A (ko) 2011-11-10

Family

ID=42541362

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117020667A KR20110122731A (ko) 2009-02-12 2009-04-30 발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술

Country Status (6)

Country Link
US (1) US10110631B2 (ko)
EP (1) EP2396941A4 (ko)
KR (1) KR20110122731A (ko)
CN (1) CN102308548A (ko)
CA (1) CA2741121A1 (ko)
WO (1) WO2010093375A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180031852A (ko) * 2016-09-19 2018-03-29 충남대학교산학협력단 Mqtt 프로토콜 연동을 위한 어댑터 및 그를 이용한 데이터 교환 시스템
KR20190057604A (ko) * 2017-11-20 2019-05-29 아주대학교산학협력단 게시-구독 메시지 서비스 방법
KR20190069230A (ko) * 2017-12-11 2019-06-19 건국대학교 산학협력단 Sdn 콘트롤러에서 키 관리 서버를 이용한 보안 통신 방법 및 이를 수행하는 장치

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303035B2 (en) 2009-12-22 2019-05-28 View, Inc. Self-contained EC IGU
WO2014087179A1 (en) * 2012-12-07 2014-06-12 Microsec Szamitastechnikai Fejlesztö Zrt. Method and system for authenticating a user using a mobile device and by means of certificates
EP4235289A3 (en) 2014-06-30 2023-11-22 View, Inc. Computer-implemented control methods and systems for networks of optically switchable windows during reduced power availability
CN105722040B (zh) * 2014-12-03 2019-10-25 华为技术有限公司 一种业务消息的传输方法、装置及系统
US11740948B2 (en) 2014-12-08 2023-08-29 View, Inc. Multiple interacting systems at a site
US20160176630A1 (en) * 2014-12-19 2016-06-23 Zan Compute Inc. Smart garbage bin
US10225219B2 (en) 2016-02-22 2019-03-05 International Business Machines Corporation Message delivery in a message system
CN106059892A (zh) * 2016-05-17 2016-10-26 中国科学院沈阳计算技术研究所有限公司 一种用于融合通信系统的消息引擎
US10055909B2 (en) 2016-07-08 2018-08-21 Calamp Corp. Systems and methods for crash determination
US10171630B2 (en) 2016-08-26 2019-01-01 Amazon Technologies, Inc. Executing remote commands
US10219117B2 (en) 2016-10-12 2019-02-26 Calamp Corp. Systems and methods for radio access interfaces
US10473750B2 (en) 2016-12-08 2019-11-12 Calamp Corp. Systems and methods for tracking multiple collocated assets
US10678906B1 (en) * 2016-12-22 2020-06-09 Amazon Technologies, Inc. Multi-service and multi-protocol credential provider
US10361859B2 (en) 2017-10-06 2019-07-23 Stealthpath, Inc. Methods for internet communication security
US10367811B2 (en) 2017-10-06 2019-07-30 Stealthpath, Inc. Methods for internet communication security
US10397186B2 (en) 2017-10-06 2019-08-27 Stealthpath, Inc. Methods for internet communication security
US10375019B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10374803B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10630642B2 (en) 2017-10-06 2020-04-21 Stealthpath, Inc. Methods for internet communication security
US20190141156A1 (en) 2017-11-06 2019-05-09 Calamp Corp. Systems and Methods for Dynamic Telematics Messaging
US11206171B2 (en) 2017-11-07 2021-12-21 Calamp Corp. Systems and methods for dynamic device programming
CN110048927B (zh) 2018-01-16 2020-12-15 华为技术有限公司 通信方法和通信装置
CN110086636B (zh) * 2019-04-17 2022-03-25 平安科技(深圳)有限公司 一种基于mqtt的消息分发方法、服务器及存储介质
US11558423B2 (en) 2019-09-27 2023-01-17 Stealthpath, Inc. Methods for zero trust security with high quality of service
TW202206925A (zh) * 2020-03-26 2022-02-16 美商視野公司 多用戶端網路中之存取及傳訊
US11848767B2 (en) 2021-06-01 2023-12-19 Apple Inc. Privacy-preserving electronic publication and subscription systems

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6158007A (en) * 1997-09-17 2000-12-05 Jahanshah Moreh Security system for event based middleware
US7246150B1 (en) * 1998-09-01 2007-07-17 Bigfix, Inc. Advice provided for offering highly targeted advice without compromising individual privacy
US6263362B1 (en) * 1998-09-01 2001-07-17 Bigfix, Inc. Inspector for computed relevance messaging
US6256664B1 (en) * 1998-09-01 2001-07-03 Bigfix, Inc. Method and apparatus for computed relevance messaging
US8914507B2 (en) * 1998-09-01 2014-12-16 International Business Machines Corporation Advice provided for offering highly targeted advice without compromising individual privacy
US7131000B2 (en) * 2001-01-18 2006-10-31 Bradee Robert L Computer security system
US6954792B2 (en) * 2001-06-29 2005-10-11 Sun Microsystems, Inc. Pluggable authentication and access control for a messaging system
EP1461679A4 (en) * 2001-11-12 2006-01-18 Worldcom Inc SYSTEM AND METHOD FOR THE FLUID IMPLEMENTATION OF MICRO-PAYMENTS RELATING TO CONSUMABLE SERVICES
US7720910B2 (en) * 2002-07-26 2010-05-18 International Business Machines Corporation Interactive filtering electronic messages received from a publication/subscription service
US9124447B2 (en) * 2002-07-26 2015-09-01 International Business Machines Corporation Interactive client computer communication
US7376832B2 (en) * 2003-04-21 2008-05-20 International Business Machines Corporation Distributed method, system and computer program product for establishing security in a publish/subscribe data processing broker network
US20070112574A1 (en) * 2003-08-05 2007-05-17 Greene William S System and method for use of mobile policy agents and local services, within a geographically distributed service grid, to provide greater security via local intelligence and life-cycle management for RFlD tagged items
US7831693B2 (en) * 2003-08-18 2010-11-09 Oracle America, Inc. Structured methodology and design patterns for web services
US7827595B2 (en) * 2003-08-28 2010-11-02 Microsoft Corporation Delegated administration of a hosted resource
GB2411494B (en) 2004-02-27 2006-04-12 Toshiba Res Europ Ltd Protocol stack with modification facility
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US7827234B2 (en) * 2005-01-10 2010-11-02 International Business Machines Corporation Privacy entitlement protocols for secure data exchange, collection, monitoring and/or alerting
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US7512880B2 (en) * 2005-12-23 2009-03-31 Swift Creek Systems, Llc Method and system for presenting published information in a browser
US20070208702A1 (en) * 2006-03-02 2007-09-06 Morris Robert P Method and system for delivering published information associated with a tuple using a pub/sub protocol
US7873071B2 (en) * 2006-05-15 2011-01-18 The Boeing Company Multiple level security adapter
US20080066181A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation DRM aspects of peer-to-peer digital content distribution
US8560348B2 (en) * 2006-09-26 2013-10-15 Ralph A. Korpman Individual health record system and apparatus
US20080120337A1 (en) * 2006-11-21 2008-05-22 Fry Jared S Method And System For Performing Data Operations Using A Publish/Subscribe Service
US20080133646A1 (en) * 2006-12-04 2008-06-05 Bea Systems, Inc. System and method for fully distributed network with agents
US9330190B2 (en) * 2006-12-11 2016-05-03 Swift Creek Systems, Llc Method and system for providing data handling information for use by a publish/subscribe client
US8850451B2 (en) * 2006-12-12 2014-09-30 International Business Machines Corporation Subscribing for application messages in a multicast messaging environment
US8280978B2 (en) * 2006-12-29 2012-10-02 Prodea Systems, Inc. Demarcation between service provider and user in multi-services gateway device at user premises
US8275404B2 (en) * 2008-10-29 2012-09-25 Google Inc. Managing and monitoring emergency services sector resources
US20100146101A1 (en) * 2008-12-09 2010-06-10 Morris Robert P Method And System For Binding A Watcher Representing A Principal To A Tuple Based On A Matching Criterion

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180031852A (ko) * 2016-09-19 2018-03-29 충남대학교산학협력단 Mqtt 프로토콜 연동을 위한 어댑터 및 그를 이용한 데이터 교환 시스템
KR20190057604A (ko) * 2017-11-20 2019-05-29 아주대학교산학협력단 게시-구독 메시지 서비스 방법
KR20190069230A (ko) * 2017-12-11 2019-06-19 건국대학교 산학협력단 Sdn 콘트롤러에서 키 관리 서버를 이용한 보안 통신 방법 및 이를 수행하는 장치

Also Published As

Publication number Publication date
EP2396941A4 (en) 2013-06-12
US20100205427A1 (en) 2010-08-12
EP2396941A1 (en) 2011-12-21
WO2010093375A1 (en) 2010-08-19
CA2741121A1 (en) 2010-08-19
CN102308548A (zh) 2012-01-04
US10110631B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR20110122731A (ko) 발행 및 구독 엔진에 암호화, 인증, 및 허가를 도입하는 기술
US10263855B2 (en) Authenticating connections and program identity in a messaging system
US10805085B1 (en) PKI-based user authentication for web services using blockchain
JP6526181B2 (ja) スマートカードによるログオンおよび連携されたフルドメインログオン
JP5038531B2 (ja) 信頼できる機器に限定した認証
US9866556B2 (en) Common internet file system proxy authentication of multiple servers
US8484716B1 (en) Hosting a server application on multiple network tiers
US11673058B2 (en) Data transport of encryption key used to secure communication between computing devices
US9100398B2 (en) Enhancing directory service authentication and authorization using contextual information
US9276869B2 (en) Dynamically selecting an identity provider for a single sign-on request
US20120254957A1 (en) User impersonation/delegation in a token-based authentication system
TW201626273A (zh) 對於資源存取之基於要求的認證
US9049257B2 (en) Methods and apparatus for an E-mail-based management interface for virtualized environments
JP2017524214A (ja) サードパーティの認証サポートを介した企業認証
CN105991614A (zh) 一种开放授权、资源访问的方法及装置、服务器
JP2004355619A (ja) 信頼範囲外の所与の外部接続によって複数のソースからの通信を行うことができるプロトコル・ベースの信頼範囲内の分散認証
WO2023072817A1 (en) Control of access to computing resources implemented in isolated environments
CN116018580B (zh) 用于跨云壳层的实例持久化数据的技术
WO2022040396A1 (en) Self-authorizing identification and applications therefor
Karp et al. The client utility architecture: the precursor to E-speak
US20240007462A1 (en) Connecting a software-defined data center to cloud services through an agent platform appliance
KR101330832B1 (ko) 클라우드 서버 및 클라이언트의 요청을 처리하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application