KR101988682B1 - 무상태 애플리케이션 통지 기법 - Google Patents

무상태 애플리케이션 통지 기법 Download PDF

Info

Publication number
KR101988682B1
KR101988682B1 KR1020147005396A KR20147005396A KR101988682B1 KR 101988682 B1 KR101988682 B1 KR 101988682B1 KR 1020147005396 A KR1020147005396 A KR 1020147005396A KR 20147005396 A KR20147005396 A KR 20147005396A KR 101988682 B1 KR101988682 B1 KR 101988682B1
Authority
KR
South Korea
Prior art keywords
channel
notification
application
client
routing data
Prior art date
Application number
KR1020147005396A
Other languages
English (en)
Other versions
KR20140059788A (ko
Inventor
조지 조이
척 완 윌리엄 라우
대런 루이
요세프 퍼스텐버그
라비칸트 체루쿠리
케빈 마이클 울레이
매튜 알 에어스
가우라브 에스 아난드
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20140059788A publication Critical patent/KR20140059788A/ko
Application granted granted Critical
Publication of KR101988682B1 publication Critical patent/KR101988682B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • 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/53Network services using third party service providers
    • 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/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • 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/164Implementing security features at a particular protocol layer at the network layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

제 3 자가 클라이언트 애플리케이션으로 메시지를 제공할 수 있는 무상태 애플리케이션 통지에 대해서 개시한다. 통지 서비스와 애플리케이션 사이에 통신 채널이 확립될 수 있다. 요청에 의거하여, 본 발명의 통지 서비스는 상기 채널에 적합하되, 채널 핸들 또는 토큰의 형태로서 가능한 난독화 라우팅 데이터를 생성할 수 있다. 라우팅 데이터는 암호화 및 디지털 서명되어 제 3 자로부터 라우팅 데이터의 콘텐트와 포맷이 난독화될 수 있다. 난독화 라우팅 데이터를 보유하고 있는 애플리케이션 서비스는 데이터와 함께 통지를 하나의 패키지로 형성한 다음 이 패키지를 전달을 위한 통지 서비스로 전송할 수 있다. 따라서 애플리케이션 서비스는 난독화 라우팅 데이터에 의해서 부호화된 상세 채널 정보를 모르는 상태에서 이를 수행한다. 난독화 라우팅 데이터를 생성하는 통지 서비스는 데이터를 복호화하고 해석할 수 있으며, 또한 애플리케이션 서비스를 대신하여 채널 상의 통지를 적절한 종점 애플리케이션으로 전달할 수 있다.

Description

무상태 애플리케이션 통지 기법{STATELESS APPLICATION NOTIFICATIONS}
메시지를 클라이언트에게 전달하기 위해서 서비스 제공자가 통지 서비스를 서버측에 구현한 클라이언트-서버 환경에서, 상기 서비스는 제 3 자를 대신하여 클라이언트에게 통지 메시지를 처리하고 전달하도록 구성될 수 있다. 일부 종래 기술의 방법에 따르면, 상기 메시지 처리는 다양한 클라이언트를 위해서 서버측 상에서 서비스 제공자에 의해서 영구적으로 유지되는 주소, 라우팅 데이터, 계정 데이터, 인증 데이터 및/또는 기타 상태 데이터와 같은 클라이언트 상태 데이터에 기초할 수 있다.
하지만, 다양한 클라이언트들을 위해서 그와 같은 클라이언트 상태 데이터를 유지하는 것은 비용 문제를 초래할 수 있는데, 이는 다른 목적을 위해서 서비스 제공자에 의해서 다르게 제공될 수 있는 리소스(예를 들면, 메모리 및 처리 능력)가 상태 데이터의 저장 및 관리를 위해서 묶여 버릴 수 있기 때문이다. 더욱이, 가끔 및/또는 한번 접속하고는 두번 다시 접속하지 않을 수 있는 클라이언트를 위해서 서비스 제공자측에서 상태 데이터를 영구적으로 저장하는 것은 비효율적이고 낭비적이다. 이에 덧붙여, 중앙 집중화된 저장의 경우 클라이언트 데이터를 획득하기 위한 해커의 목표가 되는 것과 같은 보안 위험이 있을 수 있고 또한 단일의 중앙 집중화된 저장의 신뢰도에 종속되어 통지가 이루어질 수 있다.
본 요약부는 이하의 발명의 상세한 설명에서 보다 자세히 기술되는 개념을 선택적으로 단순화된 형식으로 소개하기 위해 제공된다. 본 요약부는 특허청구범위의 발명의 대상의 주요 특징 또는 핵심 특징을 밝히고자 의도되지 않았을 뿐만 아니라, 특허청구범위의 발명의 대상의 범위를 제한하고자 사용되도록 의도되지도 않는다.
다양한 실시예는 제 3 자가 클라이언트 애플리케이션으로 통지를 제공할 수 있도록 설계된 무상태 애플리케이션 통지를 제공한다. 적어도 일부 실시예에서, 통지 서비스는 클라이언트 애플리케이션의 통신 채널을 확립하고 또한 채널 상의 애플리케이션으로 통지를 지향시키도록 사용될 수 있는 난독화 라우팅 데이터를 생성한다. 일부 실시예에서, 라우팅 데이터는 채널 경로 또는 주소의 추상으로서 유도되는 채널 핸들로서 구성될 수 있다. 채널 핸들 또는 다른 적절한 라우팅 데이터 역시 암호화되고 디지털 서명된 토큰으로 부호화될 수 있으며, 이에 의해서 제 3 자로부터 토큰의 콘텐트 및 포맷이 난독화되면서 부정 조작으로부터 보호될 수 있다.
일정한 형식의 난독화 라우팅 데이터를 보유하고 있는 애플리케이션 서비스는 데이터와 함께 통지를 패키지로 형성한 다음 이 패키지를 전달하기 위해서 통지 서비스로 전송할 수 있다. 애플리케이션 서비스는 난독화 라우팅 데이터를 이해하지 않고 또는 채널을 위한 경로/주소를 알지 못한 채로도 이 난독화 라우팅 데이터를 사용하여 통지를 채널로 지향시킬 수 있다. 난독화 라우팅 데이터를 생산하는 통지 서비스는 이 난독화 라우팅 데이터를 복호화하고 해석하고, 데이터 내부에 포함된 서명을 증명하여 부정 조작을 방지하며, 또한 애플리케이션 서비스를 대신하여 적절한 종점 애플리케이션으로 채널 상의 통지를 전달할 수 있다.
도면에서 동일한 참조 부호는 동일한 구성 요소를 나타내기 위해 사용된다.
도 1은 본 명세서에서 설명되는 다양한 원리가 하나 이상의 실시예에 따라 구현될 수 있는 동작 환경(operating environment)을 도시한 도면이다.
도 2는 하나 이상의 실시예에 따라 채널 및 채널 핸들을 생성하기 위한 예시적인 상황을 나타낸 도면이다.
도 3은 하나 이상의 실시예에 따라 채널 핸들이 통지를 전달하는 예시적인 상황을 나타낸 도면이다.
도 4는 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다.
도 5는 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다.
도 6은 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다.
도 7은 하나 이상의 실시예를 구현하는 데 사용될 수 있는 예시적인 시스템을 나타낸 도면이다.
개요
제 3 자가 클라이언트 애플리케이션으로 메시지를 제공할 수 있는 무상태 애플리케이션 통지에 대해서 개시한다. 통지 서비스와 애플리케이션 사이에 통신 채널이 확립될 수 있다. 요청에 의거하여, 본 발명의 통지 서비스는 상기 채널에 적합하되, 채널 핸들 또는 토큰의 형태로서 가능한 난독화 라우팅 데이터를 생성할 수 있다. 라우팅 데이터는 암호화 및 디지털 서명되어 제 3 자로부터 라우팅 데이터의 콘텐트와 포맷을 난독화할 수 있다. 난독화 라우팅 데이터를 보유하고 있는 애플리케이션 서비스는 데이터와 함께 통지를 패키지로 형성한 다음 이 패키지를 전달하기 위해 통지 서비스로 전송할 수 있다. 따라서 애플리케이션 서비스는 난독화 라우팅 데이터에 의해서 부호화된 상세 채널 정보를 모르는 상태에서 이를 수행한다. 난독화 라우팅 데이터를 생성하는 통지 서비스는 데이터를 복호화하고 해석할 수 있으며, 또한 애플리케이션 서비스를 대신하여 채널 상의 통지를 적절한 종점 애플리케이션으로 전달할 수 있다.
이하의 설명에서는, "동작 환경"이라는 절이 제공되며 여기에서는 하나 이상의 실시예를 사용할 수 있는 하나의 환경에 대해 기술한다. 뒤 이어서, "무상태 애플리케이션 통지의 실시예"라는 절에서는 하나 이상의 실시예에 따른 무상태 애플리케이션 통지에 대한 상세한 실시예에 대해서 기술한다. 다음으로, "예시적인 방법"이라는 절에서는 하나 이상의 실시예에 따른 무상태 애플리케이션 통지에 대한 예시적인 기법에 대해서 기술한다. 마지막으로, "예시적인 시스템"이라는 절에서는 하나 이상의 실시예를 구현하는데 사용될 수 있는 예시적인 컴퓨팅 시스템 및 디바이스에 대해서 기술한다.
동작 환경
도 1은 하나 이상의 실시예에 따른 동작 환경을 나타내는 도면으로, 대략 도면 번호 100으로 나타내었다. 환경(100)에는 하나 이상의 프로세서(104), 하나 이상의 컴퓨터 판독 가능 매체(106), 및 컴퓨터 판독 가능 매체 상에 존재하고 프로세서(들)에 의해서 실행될 수 있는 하나 이상의 애플리케이션(108)과 운영 체제(110)를 갖는 클라이언트(102)를 포함한다. 클라이언트(102)는 임의의 적절한 컴퓨터 시스템 및/또는 디바이스로 구현될 수 있으며, 이 예로 제한하지 않고, 데스크 톱 컴퓨터, 휴대용(portable) 컴퓨터, 태블릿 또는 슬레이트 디바이스, 휴대용 개인 정보 단말기(PDA)와 같은 소지형(handheld) 컴퓨터, 휴대폰, 셋톱 박스 등이 포함될 수 있다. 클라이언트(102)를 포함하는 다양한 시스템 및/또는 디바이스를 나타낼 수 있는 컴퓨팅 시스템의 일례는 후술하는 도 7에 도시하고 설명하기로 한다.
컴퓨터 판독 가능 매체는 전형적으로 컴퓨팅 디바이스와 관련되는 모든 형태의 휘발성 및 비휘발성 메모리 및/또는 저장 매체를 포함할 수 있지만, 이는 예시적인 것으로서 이들만으로 제한되지는 않는다. 그와 같은 매체로는 ROM, RAM, 플래쉬 메모리, 하드 디스크, 이동식 매체(removable media) 등이 포함될 수 있다. 컴퓨터 판독 가능 매체는 "컴퓨터 판독 가능 저장 매체" 및 "통신 매체"를 모두 포함할 수 있으며, 그 예로는 도 7의 예시적인 컴퓨팅 시스템의 설명에서 찾아 볼 수 있을 것이다.
또한, 클라이언트(102)는 전술 및 후술하는 바와 같이 무상태 통지가 가능해지도록 구현될 수 있는 채널 상태 데이터(111)를 포함하고 있다. 채널 상태 데이터(111)는 클라이언트(102) 및 통지 서비스 사이에서 확립되어 클라이언트의 애플리케이션(108)으로 통지를 제공할 수 있는 전달 경로 또는 "채널"을 의미한다. 채널 상태 데이터(111)는, 몇 가지 예만 언급하지만, 하나 이상의 채널과 관련된 식별자, 라우팅 데이터, 토큰, 인증 데이터, 및 만료 데이터 등을 포함할 수 있다. 클라이언트(102)는 자체의 채널 상태 데이터(111)를 캐시(cache)하여 서버측에서의 무상태 처리를 가능하게 할 수 있다.
도 1에서 더욱 상세하게 나타낸 바와 같이, 클라이언트(102)는 인터넷과 같은 네트워크(112)를 통해서, 전술 및 후술하는 바와 같이, 다양한 리소스(예를 들면, 콘텐트 및 서비스)를 제공하는 하나 이상의 서비스 제공자(114)와 통신적으로 접속될 수 있다. 예를 들어, 클라이언트(102)는 서비스 제공자(114)와 상호 작용하고, 메시지를 교환하여 채널을 생성하고 통지를 획득할 수 있는 채널을 구현할 수 있다.
서비스 제공자(114)는 각각 하나 이상의 프로세서(116) 및 하나 이상의 컴퓨터 판독 가능 매체(118)를 가지고 있는 것으로 도시되어 있다. 또한 서비스 제공자(114)는 리소스 매니저(120)를 포함하는 것으로 도시되어 있다. 리소스 매니저(120)는 네트워크(112)를 통해서 사용 가능하게 될 수 있는 다양한 리소스(122)를 관리하도록 서비스 제공자(114)에 의해서 기능적으로 동작 가능하다는 것을 나타내고 있다. 예를 들면, 다양한 리소스(122)는 클라이언트(102)에 의해서 출력되도록 네트워크를 통해서 통신하게 되는 웹 페이지 또는 다른 사용자 인터페이스를 통해서 제공될 수 있다. 리소스 매니저(120)는 리소스(122)로의 접근, 리소스(122)의 성능, 사용자 인터페이스 또는 데이터의 구성을 관리하여 리소스(122)를 제공하는 등을 관리할 수 있다.
서비스 제공자(114)는, 클라이언트(102)가 탐색하여 리소스(122)에 접근할 수 있도록 하는 하나 이상의 웹 서버 및/또는 사이트를 제공할 수 있다. 리소스(122)로는 전형적으로 하나 이상의 서비스 제공자에 의해서 네트워크를 통해 입수 가능한 임의적으로 적절하게 조합된 서비스 및/또는 콘텐트가 포함될 수 있다. 서비스의 몇 가지 예로는 검색 서비스, 이메일을 송신하고 수신하기 위한 이메일 서비스, 클라이언트(102) 사이에서의 인스턴트 메시지를 제공하기 위한 인스턴트 메시징 서비스, 및 동일한 관심사 및 활동을 공유하는 사용자 그룹 사이에서의 접속 및 상호 작용을 가능하게 하는 사회적 관계망 서비스를 포함하고 있으나 이에 제한되지는 않는다. 콘텐트에는 다양한 조합의 텍스트, 비디오, 광고, 오디오, 멀티 미디어 스트림, 애니메이션, 이미지, 웹 페이지, 웹 애플리케이션, 디바이스 애플리케이션, 브라우저에 디스플레이되는 콘텐트 또는 기타 디바이스 애플리케이션 등을 포함할 수 있다.
또한, 서비스 제공자(114)는 클라이언트(102)와 다른 개체 사이에서의 통지(126)의 통신을 관리하도록 기능적으로 동작할 수 있도록 대표되는 통지 서비스(124)를 포함하거나 다르게는 이를 사용할 수 있다. 통지 서비스(124)는 단독으로 및/또는 다른 서비스와 연계하여 동작되어 하나 이상의 다른 형태의 메시지 처리에 대한 기능을 제공할 수 있다. 예시적이며 본 발명을 제한하지 않는 예로서, 통지 서비스에 의해서 제공되는 복수의 서로 다른 종류의 메시지 처리에는 이메일, 문자 메시지, 애플리케이션 및/또는 운영 체제 통지, 애플리케이션 내의 콘텐트, 사회적 관계망 통지 및 초대, 인스턴트 메시지 처리, 음성 메시지 처리, 1:1 메시지 처리 등이 포함될 수 있다.
또한 통지 서비스(124)는 본 명세서에서 설명하는 무상태 애플리케이션 통지에 적합한 기법을 구현하는 것도 가능하다. 특히, 통지 서비스(124)는 하나 이상의 애플리케이션 서비스(128)를 대신하여 통지(126)가 클라이언트(102)로 전달될 수 있도록 구현될 수 있다. 통지(126)는 프로모션, 애플리케이션 업데이트, 경고, 앱 내 기능, 등과 같은 애플리케이션 서비스에 대응하는 애플리케이션(108)으로 지향되는 메시지로서 구성될 수 있다. 통지 서비스(124)는 통지(126)를 클라이언트(102)로 전달하는데 책임을 진다. 클라이언트(102)에 의해서 캐시되는 채널 상태 데이터(111)는 요구에 의해서 필요하다면 통지 서비스(124)에 의해서 획득될 수 있다. 그러나, 통지 서비스(124)는 통지 요청을 제공받은 난독화 라우팅 데이터를 사용하여 서버측에서 채널 및 통지에 대한 "무상태" 처리를 수행할 수 있다. 통지 서비스(124)는 현재 접속되어 있는 경우라면 클라이언트와 관련된 상태 정보를 일시적으로 저장할 수 있다. 상태 데이터는 현재 접속된 클라이언트의 식별 정보, 허용하거나 차단하기 위한 통지에 대한 여러 가지 종류/형태에 대한 정보 등을 포함할 수 있다. 하지만, 클라이언트와의 접속이 해제되면 임시 상태 데이터는 통지 서비스(124)에 의해서 폐기될 수 있으며 따라서 이와 같은 프로세스는 "무상태"(stateless)로 간주될 수 있다.
이하에서 상세하게 후술하는 바와 같이, 통지(126)는 클라이언트(102) 및 서비스 제공자(114) 사이에 확립된 채널 상에서 전달될 수 있다. 통지는 통지 서비스(124)를 통해서 제공되는 채널 핸들 또는 토큰과 같은 난독화 라우팅 데이터와 통지를 연관시키는 것에 의해서 채널을 통해 전송되어질 수 있다. 일 실시예에서, 채널을 통한 통지를 제공하기 위한 방법으로서, 통지 서비스(124)는 채널 메타 데이터(132)를 전송하도록 구성된 토큰(130)을 사용할 수 있다. 채널 메타 데이터(132)는 통지 서비스(124)에 의한 요청의 처리, 채널 확립, 통지 전달 등과 같은 "처리 중"에 사용되는 데이터를 나타낼 수 있다. 여기에는 클라이언트(102)로부터 필요에 따라서 얻어지는 다양한 채널 상태 데이터(111)가 포함될 수 있다. 하지만, 통지 서비스(124)는 클라이언트(102)를 대신하여 채널 메타 데이터(132)를 반드시 캐시하지는 않는다.
채널과 관련된 다양한 데이터는 채널 ID, 채널 핸들, 및 라우팅 데이터를 포함하는 채널 메타 데이터(132)의 일부로서 포함될 수 있다. 채널 ID는 고유한 채널을 식별하며 또한 채널 ID는 제 3 자에게 노출되지 않도록 유지된다. 그러나, 제 3 자는 채널을 위해서 생성되고 또한 토큰으로 제공되는 채널 핸들을 사용할 수 있고 또는 다르게는 채널을 해석하거나 대응하는 채널 ID에 대해서 모르는 채로 통지 서비스(124)를 통해서 메시지를 종점으로 지향시킬 수 있다. 특히, 채널 핸들은 채널 ID의 추상으로서 유도되어 채널의 속성을 난독화할 수 있다. 채널, 채널 핸들, 및 무상태 애플리케이션 통지에 대한 이상의 측면 및 다른 측면들에 대해서 이하의 도면을 참고하여 더욱 상세하게 설명하기로 한다.
이상으로 예시적인 동작 환경에 대해서 설명하였으며, 하나 이상의 실시예에 따른 무상태 애플리케이션 통지에 관한 몇 가지 실시예에서 대해 설명하기로 한다.
무상태 애플리케이션 통지의 실시예
본 절은 하나 이상의 실시예에 따른 무상태 애플리케이션 통지와 관련된 실시예를 상세하게 설명한다. 후술하는 설명에서, 제목이 "통지 전달용 채널"인 첫번째 서브섹션에서는 애플리케이션 통지를 가능하도록 확립될 수 있는 채널에 대해서 기술한다. 제목이 "무상태 토큰"인 다음번 서브섹션은 통지를 라우팅하기 위해서 채널을 사용하여 적절한 종점으로 라우팅 데이터를 전송하는 일부 실시예에서 사용될 수 있는 토큰과 관련된 상세 내용을 제공한다. 이후에, 무상태 애플리케이션 통지를 구현하기 위해서 서비스 제공자(114), 클라이언트(102), 및 애플리케이션 서비스(128) 사이에서의 예시적인 상호 작용에 대해서 도 2 및 도 3에 나타낸 동작안의 실시예에 대해서 설명한다.
통지 전달용 채널
상술한 설명에서와 같이, 통지는 클라이언트(102) 및 서비스 제공자(114) 사이에 확립된 채널 상에서 전달될 수 있다. 일반적으로 말하자면, 채널은 애플리케이션 서비스(128)로부터 특정 종점까지 통지를 위한 전달 경로(예를 들면, 주소)를 나타내고 있다. 본 명세서에서 사용된 바와 같이 종점은 특정한 사용자, 디바이스, 및/또는 애플리케이션의 고유한 조합에 대응한다. 달리 말하자면, 채널은 특정 클라이언트(102)에 설치되고 클라이언트(102)의 특정 사용자에 의해서 사용되는 특정 애플리케이션(108)을 위해서 확립되고 이와 연관되는 통신 경로로서 고려될 수 있다. 채널은 전역 고유 주소를 종점 애플리케이션에 할당할 수 있는 메커니즘이다.
각각의 채널은 대응하는 채널 식별자(ID)를 가질 수 있다. 채널 ID는 대응하는 종점으로의 전달 경로를 고유하게 식별하기 위한 영구적인 식별자이다. 채널을 보호하고 공격자로부터 채널의 강탈 또는 오용을 방지하기 위해서, 채널 ID는 난독화되어 유지될 수 있다. 적어도 일부 실시예에서, 채널 ID는 클라이언트(102)에 의해서 안전하게 유지되고 또한 제 3 자에서 노출되지 않는다. 예를 들어, 하나 이상의 애플리케이션(108)용의 채널 ID는 운영 체제(110)에 내재적인 파라미터/객체로서 구성되어질 수 있다. 운영 체제(110)는 통지 서비스(124)와의 상호 작용으로 채널 ID를 사용할 수 있지만, 다르게는 채널 ID를 비공개로 유지한다.
따라서, 채널 상에서의 통지를 가능하게 하기 위해서는, 채널 ID를 노출하거나 그 자체를 사용하는 것 대신에 제 3 자에게 발행될 수 있는 채널 핸들이 생성된다. 애플리케이션의 설치 또는 실행과 같은 것에 의해서 애플리케이션에 대한 통지가 활성화되는 경우, 애플리케이션에 특유한 콘텐트를 갱신하는데 사용될 수 있는 채널이 확립될 수 있다. 일 접근법에서는, 애플리케이션은 운영 체제(108)를 통해서 채널 핸들의 발행을 요청할 수 있다. 예를 들면, 로컬 애플리케이션 프로그래밍 인터페이스(API, application programming interface)를 통해서 요청이 이루어질 수 있다. 이어서 운영 체제는 통지 서비스(124)와 상호 작용하여 통지 서비스(124)가 채널 핸들을 발행하도록 하고 또한 채널 핸들을 애플리케이션(108)으로 복귀시킬 수 있다. 또한 통지 서비스(124)는 채널이 존재하지 않는 경우라면 새로운 채널을 확립할 수도 있다. 이후에 애플리케이션(108)은 채널 핸들을 애플리케이션 서비스(128)로 분배하여 애플리케이션 서비스(128)로부터 대응하는 통지를 가능하게 할 수 있다.
더욱 구체적으로는, 채널 핸들은 애플리케이션 및 제 3 자로의 분배를 위해서 채널 ID의 추상으로서 유도될 수 있다. 채널 핸들은 클라이언트로부터의 요청에 반응하여 통지 서비스(124)에 의해서 구축될 수 있다. 클라이언트로부터의 요청은 채널 ID 및 통지 서비스(124)에 의해서 사용되어 대응하는 채널 핸들을 생성하게 되는 기타 클라이언트 상태 데이터(111)를 포함하도록 구성될 수 있다. 핸들은 채널의 속성을 난독화하며 또한 암호화되어 핸들의 변조를 방지할 수 있다. 또한 디지털 서명을 사용하여 변조 또는 부정 조작을 방지할 수도 있다. 통지 서비스(124)는 채널 핸들의 생성에 책임을 지며 또한 채널 핸들의 포맷과 콘텐트를 제어한다. 따라서, 핸들의 포맷과 콘텐트는 클라이언트(102) 및/또는 제 3 자 애플리케이션 서비스(128)의 모두로부터 난독화될 수 있다. 이러한 방식으로, 통지 서비스(124)에 의해서는 핸들이 해석될 수 있고 또한 다른 제 3 자에 의해서는 핸들을 해석할 수 없도록 채널 핸들이 구성될 수 있다.
채널 핸들은 임의의 적당한 방식으로 포맷될 수 있다. 일반적으로, 채널 핸들은 종점 애플리케이션으로의 경로 또는 주소를 나타내도록 구성되어진다. 따라서, 채널 핸들은 채널에 적합한 다양한 라우팅 데이터를 부호화할 수 있다. 예시적이며 본 발명을 제한하지 않는 예로서, 통지 서비스(124)는 특정 애플리케이션, 클라이언트 디바이스, 및 이 클라이언트 디바이스의 사용자에 대한 조합된 식별자를 부호화한 URI(Uniform Resource Identifier, 통합 리소스 식별자)로서의 채널 핸들을 생성할 수 있다. 더욱 일반적으로 설명하자면, 채널 핸들은 식별하는데 충분하고 또한 대응하는 종점으로 통지를 라우팅하는 임의의 조합의 라우팅 데이터를 나타낼 수 있다. 핸들은 내재적인 채널 ID에 기초하여 생성될 수 있으며, 따라서 통지 서비스(124)는 핸들을 해석할 수 있고 또한 적절한 채널 상의 핸들을 사용하여 대응하는 종점으로 전송된 통지를 전달할 수 있다.
특정한 채널 ID를 위해서 복수의 채널 핸들을 발행할 수 있다. 따라서, 만료되거나 변조된 채널 핸들은 내재적인 채널 ID에 영향을 미치지 않고 인증이 해제될 수 있다. 또한 채널 핸들은 채널 핸들과 만료 시간을 연관시키는 것에 의해서 제한적인 수명을 가지도록 구성될 수도 있다. 만료 시간 이후에는, 채널 핸들은 더 이상 통지를 전달하는데 사용될 수 없을 수 있다. 하지만, 애플리케이션은 동일한 채널 상에서의 신규 채널 핸들의 발행을 요청할 수 있다. 또한 채널 핸들은 만료 이전에 갱신되어 채널로의 통지의 무단 전달을 제공할 수도 있다. 채널 핸들이 갱신되는 경우, 통지 서비스(124)는 동일 채널 상에서 이전 핸들에 대한 대체품으로서 사용될 수 있는 신규 핸들을 제공한다. 복수의 채널 핸들은 동시에 채널을 위해서 활성화될 수 있다. 핸들 갱신에 관련된 더욱 상세한 내용은 후속하는 예시적인 방법과 관련하여 설명된다.
채널 그 자체는 무기한으로 개방된 채로 유지될 수 있고 또한 채널의 잔존 기간에 걸쳐서 다수의 채널 핸들이 채널에 할당될 수 있다. 채널은 명시적으로 폐쇄될 수 있으며, 이때 폐쇄된 채널과 관련된 임의의 채널 핸들은 통지를 전송하는데 더 이상 사용할 수 없게 된다. 클라이언트(102)에 의해서 유지되는 데이터는 이와 같은 채널의 사용 중지를 제어한다. 채널의 사용 중지는 클라이언트(102)로부터 채널 ID를 영구적으로 제거하는 문제일 뿐이며, 이에 의해서 더 이상 채널 ID가 존재하기 않기 때문에 상기 채널 ID와 관련된 임의의 핸들의 사용은 클라이언트(102)에 의해서 거부될 것이다. 따라서 특정 애플리케이션(108)용으로 확립된 신규 채널을 나타내도록 신규 채널 ID가 발행되어야 한다. 따라서, 영구 채널이 확립될 수 있으며 이에 의해서 채널을 통해서 통신이 가능해지도록 복수의 제한되어 사용되는 채널 핸들이 발행될 수 있으며, 동시에 이 채널이 공격당하거나 다르게는 변조되지 않도록 보호할 수 있다.
무상태 토큰
상술한 바와 같이, 클라이언트(102)에 의해서 캐시된 채널 상태 데이터(111)는 채널을 사용하는 통지 서비스(124)에 의해서 무상태 통지 전달을 가능하게 할 수 있다. 클라이언트를 대신하여 상태 데이터를 저장하는 것 대신에, 통지 서비스(124)는 필요에 따라서 클라이언트(102)로부터 채널 상태 데이터(111)를 "조회"(look-up)하거나 다르게는 이를 제공받을 수 있다. 따라서 서비스 제공자(114)는 상태 데이터의 저장과 관련되는 비용을 회피할 수 있다. 따라서, 클라이언트(102)는 자체 채널 상태 데이터(111)의 일부 또는 전부를 캐시(cache)하도록 하고 또한 필요에 따라서 이 데이터를 서비스 제공자(114)에게로 제공하도록 구성될 수 있다. 채널에 관련된 데이터는 도 1에서 클라이언트부터 획득되며, 다르게는 채널 메타 데이터(132)로 나타내었다.
동작 중에, 통지 서비스(124)를 통해서 암호화되고 디지털 서명된 채널 메타 데이터(132)를 전달하는데 토큰(130)을 사용할 수 있다. 토큰(130)은 무상태로 간주될 수 있는데, 이는 토큰(130)을 생성하는데 사용된 채널 메타 데이터(132)가 필요에 따라서 통지 서비스(124)에 의해서 클라이언트(102)로부터 획득되고 또한 서비스 제공자(114)에 의해서 실제적으로는 영구적으로 저장되지 않을 수 있는 "처리 중" 데이터일 수 있기 때문이다.
토큰(130)은 다양한 방식으로 구성될 수 있다. 일반적으로, 토큰(130)은 통지 서비스(124)에 의해서 해석될 수 있고 또한 토큰을 사용하여 대응하는 종점으로 통지를 라우팅하는데 사용될 수 있는 특정한 포맷으로 구성된 라우팅 데이터를 포함하고 있다. 예를 들자면, 토큰(130)은 페이로드(payload)로서 채널 메타 데이터(132)를 선택하여 패키지된 BLOB(binary large object)로 구성될 수 있다. 기타 다양한 토큰의 구성 또한 상정되어진다. 예를 들어 토큰(130)은 URI 또는 기타 적절한 채널 핸들을 포함하도록 구성될 수 있다. 또한 토큰(130)은 토큰의 유효성을 제어하고 검증하는데 사용되는 버전 관리 데이터, 인증 데이터, 만료 시간, 및/또는 기타 보안 정보와 같은 보안 정보를 포함도록 구성될 수 있다. 보안 정보는 서로 다른 비밀 키 및/또는 서로 다른 포맷의 서로 다른 버전의 토큰을 사용할 수 있게 한다. 또한, 토큰은 부정 조작을 방지하기 위해서 암호화 및/또는 디지털 서명될 수 있다. 일부 실시예에서, 통지 서비스(124)는 단독으로 토큰(130)을 복호화하고 해석할 수 있고 또한 따라서 채널 메타 데이터(132)(예를 들면, 채널 핸들 또는 다른 라우팅 데이터)에 의해서 규정된 종점으로 통지를 라우팅할 수 있다.
일부 실시예에서, 토큰(130) 내에서 암호화된 채널 메타 데이터(132)는 라우팅 데이터를 직접적으로 포함할 수 있다. 라우팅 데이터는 통지 서비스(124)가 토큰(130) 내로 전달된 자체 포함 정보를 사용하여 무상태적으로 메시지를 처리하고 종점으로 라우팅할 수 있도록 한다. 예시적으로, 라우팅 데이터는 버전 데이터, 채널 핸들, 대응하는 애플리케이션(108)에 대한 식별자, 클라이언트(102), 및/또는 컴퓨터, 디지털 인증서, 암호화를 위한 공개 키, 등을 포함할 수 있다. 통지 서비스(124)가 토큰을 발행하기 때문에, 통지 서비스(124)는 전송된 메시지를 토큰을 사용하여 해석하고, 토큰(130)을 복호화하여 채널 메타 데이터(132)를 획득하고, 토큰 내에 포함된 라우팅 데이터를 검증하고, 또한 통지를 적절한 채널로 라우팅할 수 있게 된다.
일부의 경우에서, 통지 라우팅은 토큰(130) 자체에 포함되어 있는 채널 핸들 및/또는 기타 적절한 라우팅 데이터를 사용하여 "처리 중"에 발생할 수 있다. 추가적으로 또는 다르게는, 통지 서비스(124)는 토큰 내에 포함된 정보에 기초하여 적절한 종점을 "조회"할 수 있다. 예를 들면, 통지 서비스(124)는 토큰 내에 제공된 채널 핸들과 채널 ID를 대조하여 메시지를 대응하는 종점으로 라우팅할 수 있다. 따라서, 상술한 토큰(130)은 일 실시예의 메커니즘을 제공하며 이에 의해서 통지 서비스(124)는 애플리케이션 서비스(128)를 대신하여 애플리케이션(108)으로 통지를 무상태로 전달할 수 있게 된다.
전술한 채널 및 무상태 토큰의 맥락 하에서, 도 2 및 도 3에 나타낸 동작안의 일부 실시예에 대해서 고려해 보기로 한다. 특히, 도 2는 무상태 애플리케이션 통지를 위해서 채널 핸들을 제공하기 위한 예시적인 트랜잭션 순서를 나타내는 다이아그램(200)을 도시하고 있다. 도 3은 채널 핸들을 사용하여 통지 서비스(124)를 통해서 통지를 전송하는 것과 관련된 일련의 트랜잭션 순서를 나타내는 다이아그램(300)을 도시하고 있다.
도 2의 실시예를 참조하면, 예시적인 동작안(200)은 채널 및 채널 핸들의 생성과 관련된 동작을 나타내고 있다. 단계(202)에서 애플리케이션(108)은 채널 요청을 개시할 수 있다. 예를 들어서, 애플리케이션은 이 애플리케이션이 설치될 때나 실행될 때, 사용자가 통지를 활성화시킬 때, 또는 다르게는 활성화에 의해서 통지를 획득하는 것에 의해서 상기 요청을 개시할 수 있다. 상기 요청은 컴퓨팅 디바이스(102)에 의해서 처리되어 통지를 가능하게 하는 애플리케이션(108)에 의해서 사용될 수 있는 채널 데이터를 갖는 적절한 반응을 제공하게 된다. 일부 실시예에 있어서, 채널 요청 및 반응은 운영 체제(110)에 의해서 제공되는 로컬 애플리케이션 프로그래밍 인터페이스(API)를 통해서 처리될 수 있다.
요청에 반응하여, 단계(204)에서, 운영 체제(110)는 애플리케이션용의 기존의 채널 ID를 조회할 수 있다. 채널이 존재하는 경우라면, 이 기존 채널 ID는 요청을 제공받을 수 있다. 또한 신규 채널 핸들의 생성을 요청할 것인지 말 것인지 또는 기존의 채널 핸들을 사용할 것인지 말 것인지의 정책에 기초하여 운영 체제(110)도 결정할 수 있다. 채널이 존재하지 않는 경우, 신규 채널이 생성되도록 요청이 이루어질 수 있다.
단계(206)에서, 운영 체제(110)는 애플리케이션 종속적인 정보 및/또는 채널 ID를 패키지로 하여 채널 메시지를 생성하고 또한 생성된 채널 메시지를 통지 서비스(124)로 송신한다. 애플리케이션 정보는 상술한 바와 같이 통지 서비스(124)에 의해서 사용되어 채널 핸들의 생성 및/또는 토큰(130)의 발행이 가능하도록 하는 라우팅 데이터 및/또는 기타 채널 상태 데이터(111)를 포함할 수 있다.
단계(208)에서, 통지 서비스(124)는 적절하다면 채널 요청에 반응하여 요청된 채널을 생성할 수 있다. 추가적으로 또는 다르게는, 통지 서비스(124)는 해당 채널을 위해서 신규 채널 핸들을 생성할 수 있다. 일부 실시예에서, 통지 서비스(124)는, 상술한 바와 같이, 요청 내의 채널 ID에 의해서 지시되는 채널, 또는 신규로 생성된 채널로 통지를 지향시키에 충분한 채널 핸들 및/또는 라우팅 데이터를 포함하도록 토큰(130)을 형성한다. 토큰(130)은 통지 서비스(124)에 의해서 암호화되고 또한 디지털 서명될 수 있다.
단계(210)에서, 통지 서비스(124)는 채널 데이터를 클라이언트(102)의 운영 체제(110)로 반환한다. 반환된 채널 데이터는 채널 핸들, 토큰이 사용되는 경우의 토큰, 난독화 라우팅 데이터 및/또는 적절하다면 신규 채널 ID를 포함할 수 있다. 반환된 채널 데이터가 통지를 라우팅하기 위한 정보를 포함하고 있기 때문에, 통지 서비스(124)는 클라이언트를 대신하여 데이터를 캐시하지 않고 요청 및 대응하는 정보를 폐기할 수 있다. 채널 핸들 및/또는 토큰의 후속 처리는 통지 메시지에서 역으로 제공된 채널 데이터를 사용하여 무상태로 발생할 수 있다. 일반적으로, 이 처리는 제공된 채널 데이터를 사용하고 또한 채널에 대한 추가 상태 데이터를 조회하지 않는 "처리 중"에 발생한다. 그러나, 통지 서비스(124)는 일부 안에서는 클라이언트로부터 추가적인 채널 상태 데이터(111)를 조회하거나 요청할 수 있다.
단계(212)에서, 운영 체제(110)는 반환된 채널 데이터를 캐시한다. 이는 채널 ID 및 애플리케이션 종점 사이에서의 매핑을 생성함으로서 가능하다. 상술한 바와 같이, 채널 ID 및 매핑은 운영 체제(110)에 의해서 비공개 상태로 유지될 수 있다. 따라서, 운영 체제(110)는 채널 ID를 추출할 수 있고 또한 채널 ID 및 매핑을 비밀리에 유지할 수 있다. 하지만, 단계(214)에서, 애플리케이션(108)으로 다른 채널 데이터를 역으로 제공하여 통지를 촉진하도록 할 수 있다. 여기에는 채널 핸들, 핸들을 갖는 토큰, 및/또는 채널과 관련된 다른 채널 데이터를 역으로 애플리케이션(108)에 제공하는 단계가 포함될 수 있다.
채널 상으로의 통지를 가능하게 하기 위해서, 단계(216)에서, 애플리케이션(108)은 적절한 채널 데이터를 대응하는 애플리케이션 서비스(128)로 제공한다. 다시금 여기에는 채널 핸들, 토큰, 및/또는 애플리케이션 서비스(128)에 의해서 사용되어 메시지를 역으로 애플리케이션으로 전달하는 다른 채널 데이터가 포함될 수 있다. 단계(218)에서, 애플리케이션 서비스는 채널 데이터를 저장하고 이를 나중에 사용하여 애플리케이션으로 통지를 역으로 전달할 수 있다.
다시 한번 더, 애플리케이션(108), 운영 체제(110), 및 애플리케이션 서비스(128) 모두는 통지에 사용된 핸들 또는 토큰의 포맷 및 콘텐트에 대해서 모를 수도 있음을 알아야 한다. 애플리케이션(108), 운영 체제(110), 및 애플리케이션 서비스(128)는 핸들 또는 토큰을 해석, 복호, 또는 다른 방식으로 처리하도록 구성되지 않을 수 있다. 오히려, 애플리케이션(108) 및 애플리케이션 서비스(128)는 통지 서비스(124)를 통해서 대응하는 종점으로 통지를 전달하도록 소정의 핸들 및/또는 토큰을 사용할 수 있다는 것을 이해하도록 구성되어 있다. 일 방법에서, 통지는 애플리케이션 서비스(128)에 의해서 핸들/토큰에 대한 페이로드(payload)로서 첨부되고 또한 통지를 라우팅하고 전달하도록 하는 처리를 수행하는 통지 서비스(124)로 전달된다. 핸들/토큰을 사용하여 통지를 전달하는 구성과 관련된 상세한 설명은 도 3과 관련하여 바로 아래에서 설명된다.
특히, 도 3은 통지 서비스(124)를 통해서 통지를 전달하기 위한 채널 핸들을 사용하는 예시적인 동작안(300)을 나타내고 있다. 채널 핸들은 개별적으로 제공되거나 토큰(130) 내에 포함되어 있을 수 있다. 어떤 경우에도 채널 핸들은 암호화 및/또는 디지털 서명되어 보호된다. 이 실시예에서, 채널 핸들은 통지 서비스에 의해서 해석될 수 있고 또한 정확한 종점으로 통지를 전달하는데 사용되는 부호화된 라우팅 데이터를 나타내고 있다. 이와 같은 라우팅 데이터는 상술한 바와 같이 암호화되고 서명된 토큰 내에 포함될 수 있다.
애플리케이션 서비스(128)는 특정 애플리케이션과 관련된 통지를 생성할 수 있다. 통지는 애플리케이션 업데이트, 애플리케이션 내 콘텐트, 프로모션, 또는 특별 대우, 경고 등을 제공하도록 구성될 수 있다. 통지는 디바이스의 종류, 사용자 기준, 플랫폼 등과 같은 선택 기준에 기초하여 하나 이상의 특정 종점을 목표로 하는 특정 애플리케이션 또는 메시지를 갖는 임의의 종점으로 지향되는 전역 메시지일 수 있다.
단계(302)에서, 애플리케이션 서비스는 통지를 위해서 채널 핸들을 조회한다. 예를 들어서, 애플리케이션 서비스(128)는 특정 애플리케이션(또는 선택 기준)을 갖는 하나 이상의 종점에 대한 채널 핸들을 캐시하고 이 채널 핸들을 위해서 통지가 활성화된다. 따라서, 애플리케이션 서비스(128)는 캐시된 데이터를 조회하여 통지와 적절한 채널 핸들을 대비할 수 있다.
단계(304)에서, 통지는 통지 서비스(124)로 전송된다. 통지는 채널 핸들의 페이로드로서 첨부될 수 있다. 복수의 종점으로 전달하는 경우에 있어서, 통지는 종점에 대응하는 복수의 채널 핸들과 관련되어질 수 있다.
단계(306)에서, 통지 서비스(124)는 통지를 처리하며, 여기에는 채널 핸들의 복호화하는 단계 및 채널 핸들의 유효성을 검증하는 단계가 포함될 수 있다. 예를 들어서, 통지 서비스(124)는 복호화 키를 사용하여 채널 핸들 및/또는 채널 핸들을 포함하고 있는 토큰(130)을 복호화할 수 있다. 이는 통지 서비스(124)로 하여금 통지를 전달하기 충분한 부호화된 라우팅 데이터를 획득할 수 있도록 한다. 또한 통지 서비스(124)는 채널 핸들이 만료되지 않았는지 또는 무효화 되지 않았는지 또한 대응하는 채널이 여전히 활성화되어 있는지를 확인하기 위해서 점검할 수 있다.
또한, 통지 서비스(124)는 통지를 허용하기 전에 소정의 인증 정보(예를 들면, 비밀 키, 패스워드/ID, 또는 기타 공유된 비밀)를 사용하여 애플리케이션 서비스(128)가 로그인하도록 요청함으로써 애플리케이션 서비스(128)를 인증할 수 있다. 소정의 인증 정보는 애플리케이션 서비스(128)에 의해서 제공된 채널 핸들 내에 포함된 인증 정보와 대비될 수 있다. 비교가 행해지고 또한 인증 정보가 일치하지 않는다면, 통지의 전달은 거부될 수 있다. 인증 정보의 비교를 가능하도록 하기 위해서, 채널 핸들은 핸들이 생성되는 시각에서의 인증에 적합하도록 특정한 신원에 결부되어 있을 수 있다. 이는 통지 서비스(124)가 운영 체제(110)에 의해서 클라이언트(102)로부터 제공되는 인증 정보를 내장시키는 것에 의해서, 또는 다르게는 핸들이 생성되는 시간에서의 핸들 내에 내장시키는 것에 의해서 달성될 수 있다.
채널 핸들이 유효하다고 가정하면, 통지 서비스(124)는 채널 핸들을 해석하여 통지를 어디로 전송할 지를 결정한다. 특히, 단계(308)에서 통지 서비스(124)는 채널 핸들을 사용하여 클라이언트 종점 및 대응하는 채널 ID를 결정한다. 예를 들어서, 채널 핸들은 통지 서비스(124)에 의해서 처리되어 채널 ID를 재구축할 수 있다. 다른 방법으로는, 대응하는 채널 ID를 조회하기 위한 참조용으로 채널 핸들을 사용할 수도 있다. 토큰의 경우, 토큰 내에 부호화된 라우팅 데이터는 토큰이 복호화되고 검증된 이후에는 통지를 직접 라우팅하기에 충분할 수 있다.
어떤 경우이더라도, 통지 서비스(124)는 통지를 어디로 전송해야 하는지를 식별하며 또한 단계(210)에서 상기 통지를 클라이언트(102)로 전달한다. 예를 들면, 채널 ID를 참조하는 전달은 클라이언트(102)의 운영 체제(108)로 지향될 수 있다. 단계(312)에서, 운영 체제(108)는 통지가 채널 ID에 기초하여 지향된 애플리케이션(108)임을 확인하는 처리를 수행한다. 하나의 방법으로서, 이는 운영 체제(108)의 로컬 API를 통해서 이루어질 수 있다. 적절한 애플리케이션(108)이 식별되는 경우, 단계(314)에서 애플리케이션(108)으로 통지가 전달된다. 애플리케이션(108)은 통지를 처리하고 또한 이에 따라서 통지가 지시하고 있는 여하한 반응 동작을 수행할 수 있다. 예를 들면, 애플리케이션(108)은 사용자 인터페이스 내에서 보도록 통지를 표시하고, 갱신을 수행하거나 예약하고, 통지와 관련된 경고 및/또는 시각적인 표시를 제공하고, 통지를 저장하는 등을 행할 수 있다.
지금까지 무상태 애플리케이션 통지의 일부 실시예에 대해서 설명하였으며, 이제 하나 이상의 실시예에 따라 무상태 애플리케이션 통지에 대한 예시적인 절차에 대해서 설명하기로 한다.
예시적인 방법
도 4는 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다. 상기 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합과 관련되어 구현될 수 있다. 적어도 일부 실시예에서, 상기 방법은 통지 서비스(124)를 포함하고 있거나 다르게는 이를 사용하고 있는 도 1의 예시적인 서비스 제공자(114)와 같이 적합하게 구성된 컴퓨팅 디바이스의 방식으로 구현될 수 있다.
단계(400)는 클라이언트로부터 채널과 관련된 토큰에 대한 요청을 획득한다. 예를 들면, 애플리케이션을 활성화하여 통지를 수신하게 되면, 이 애플리케이션은 상술한 바와 같이 채널 요청을 송신할 수 있다. 요청은 클라이언트(102)의 특정 애플리케이션에 대한 클라이언트 상태 데이터(111)를 포함할 수 있다. 통지 서비스(124)는 요청을 수신하고 또한 처리하여 기존의 채널에 접근하는데 사용할 수 있는 채널 및/또는 난독화 라우팅 데이터를 생성하도록 할 수 있다.
특히, 단계(402)는 클라이언트용의 라우팅 데이터를 포함하고 있는 토큰을 생성한다. 라우팅 데이터는 채널의 상세 정보를 부호화한 채널 핸들 또는 클라이언트 상태 데이터(111)를 조합한 형태일 수 있다. 효과적으로는, 라우팅 데이터는 통지 서비스(124)에 의해서 차후에 복구되어 통지(126)로 라우팅될 수 있는 채널의 전달 경로 또는 주소를 부호화한다. 라우팅 데이터는 통지 서비스(124)에 의해서 생산된 토큰의 일부로서 제공될 수 있다. 토큰은 요청에서 제공된 클라이언트 상태 데이터(111)를 사용하여 무상태로 생성되고 사용될 수 있다. 토큰은 통지 서비스(124)가 이후에 표, 데이터베이스, 또는 외부 자료로부터 데이터를 조회하지 않고 토큰에만 기초하여 "처리 중"인 채널에 대한 경로 또는 주소를 결정하도록 할 수 있기에 충분한 라우팅 데이터를 포함하도록 구성될 수 있다. 또한 토큰은 만료 시간, 보안 데이터, 및 기타 메타 데이터를 포함할 수 있다.
단계(404)는 토큰을 암호화하고 서명한다. 이는 토큰을 보호하고 제 3 자로부터 라우팅 데이터를 난독화한다. 단계(406)는 토큰을 클라이언트에게 반환하여 클라이언트가 통지를 위해서 채널을 사용하도록 할 수 있다. 토큰은 운영 체제(110)를 통해서 애플리케이션(108)으로 제공될 수 있으며, 애플리케이션은 다시 애플리케이션 서비스(128)에 의해서 사용되도록 토큰을 분배할 수 있다.
단계(408)는 토큰을 사용하는 클라이언트에게 전달하기 위한 통지를 획득한다. 예를 들어서, 통지 서비스(124)는 토큰과 함께 패키지되었거나 다르게 관련된 애플리케이션 서비스(128)로부터 통지를 획득할 수 있다.
단계(410)는 토큰을 복호화하여 라우팅 데이터를 추출하고 또한 라우팅 데이터의 유효성을 검증한다. 통지 서비스(124)가 토큰을 발행하고 또한 토큰의 보안을 제어하고 있기 때문에, 통지 서비스(124)는 토큰을 복호화하고 해석할 수 있다. 또한 통지 서비스(142)는 만료 시간을 점검하고, 채널이 활성화되어 있음을 확인하고, 해당 채널에 대해서 통지가 가능함을 확인하고, 또한 다르게는 다양한 보안 정보를 점검하는 것에 의해서 라우팅 데이터의 유효성을 검증할 수 있다.
라우팅 데이터 또는 토큰에 문제가 발견되는 경우에 에러 처리 프로세스가 개시될 수 있다. 에러 메시지는 통지의 송신자에게 되돌려서 송신될 수 있으며 토큰의 재발행, 클라이언트로의 에러 고지, 채널의 잠금, 송신자의 인증 해제 등과 같은 기타 교정 활동이 수행될 수 있다. 다르게는, 라우팅 데이터가 유효한 경우, 통지 서비스는 복호화된 라우팅 데이터를 처리하여 채널 ID를 재구축하거나 다르게는 라우팅 데이터에 의해서 기술된 채널을 식별할 수 있다. 이후에, 단계(412)는 토큰으로부터 추출된 라우팅 데이터에 기초하여 클라이언트로 통지를 전달한다.
도 5는 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다. 상기 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합과 관련되어 구현될 수 있다. 적어도 일부 실시예에서, 상기 방법은 도 1의 예시적인 클라이언트(102)와 같이 적절하게 구성된 컴퓨팅 디바이스를 사용하여 구현될 수 있다. 예를 들어서, 상기 방법은 무상태 애플리케이션 통지를 위한 클라이언트측 기법이 가능하도록 구성된 운영 체제(110)의 로컬 애플리케이션 프로그래밍 인터페이스(API)에 의해서 구현될 수 있다.
단계(500)는 통지 서비스로부터 채널에 대한 채널 핸들을 요청한다. 특정 채널에 대한 채널 핸들은 어떤 애플리케이션에 대해서 다양한 시간에 요청될 수 있다. 이는 애플리케이션이 초기에 설치될 때, 이 애플리케이션이 실행될 때, 또는 사용자에 의해서 통지가 활성활 될 때, 또는 다른 이유로 발생할 수 있다. 운영 체제(110)는 상술한 바와 같이 API를 통해서 애플리케이션 요청을 처리할 수 있다.
애플리케이션이 운영 체제(110)를 호출하여 채널 핸들을 획득하는 경우, 운영 체제(110)는 정책에 기초하여 (가능하다면) 이전에 캐시된 핸들을 제공할 것인지 또는 신규 핸들을 요청할 것인지를 결정할 수 있다. 신규 핸들은 예를 들어 기존의 핸들이 존재하지 않는 경우, 캐시된 핸들이 만료된 경우, 신규 핸들을 획득하는 것이 적절한 경우 등에 요청될 수 있다.
신규 핸들은 핸들이 만료되기 전에 갱신하도록 요청될 수 있다. 이는 예를 들어 갱신된 핸들(또는 토큰)을 획득하기 위한 타이밍에 대해서 기술한 정책에 기초하여 발생할 수 있다. 갱신하기 위해서는, 기존의 채널 상에서 핸들이 요청된다. 신규 핸들은 기존의 채널을 대신하여 발행될 수 있다. 상술한 바와 같이 하나의 채널에 대해서 동시에 복수의 핸들이 활성화될 수 있다. 따라서, 이전에 생성된 채널의 핸들은, 이 핸들이 만료되거나, 무효화되거나, 또는 다르게는 비활성화되지 않는 한 갱신 후에도 계속 사용될 수 있다. 그러나 갱신 후, 애플리케이션은 후속하는 통지에서 사용하기 위해서 최신 핸들을 분배할 수 있다.
또한 갱신은 애플리케이션 서비스(128)에 의해서 개시되어 애플리케이션 서비스(128)에 의해서 개별적으로 또는 그룹으로 유지되어 있던 핸들 또는 토큰을 갱신할 수 있음을 알아야 한다. 이는 애플리케이션 서비스(128)가 통지의 연속성을 보장하기 위해서 채널의 라우팅 데이터를 주기적으로 갱신하도록 할 수 있다. 갱신은 통지 서비스(124)를 통해서 발생하고 또한 갱신된 데이터는 요청 중인 애플리케이션 서비스(128)로 역으로 전달될 수 있다. 또한 통지 서비스(124)는 갱신된 핸들 또는 토큰을 적절한 클라이언트(102)로 제공할 수 있다.
단계(502)는 채널을 난독화한 채널 핸들을 포함하는 반응을 획득한다. 예를 들어, 통지 서비스(124)는 요청된 채널 핸들을 역으로 클라이언트(102)로 반환할 수 있다. 채널 핸들은 통지 서비스(124)에 의해서 해석될 수 있는 난독화 라우팅 데이터를 포함할 수 있다. 또한, 반응에는 채널 ID가 함께 포함될 수 있다. 클라이언트(102)는 반환된 데이터(예를 들면, 핸들, 토큰, 라우팅 데이터, 채널 ID)를 후속 용도를 위해서 캐시할 수 있다.
단계(504)는 채널 핸들을 애플리케이션에 제공하여 애플리케이션 서비스로부터의 통지의 활성화를 가능하게 한다. 캐시된 채널 핸들 또는 신규 생성된 핸들은 요청에 따라서 애플리케이션으로 공급될 수 있다. 이후에 애플리케이션은 채널 핸들을 대응하는 애플리케이션 서비스(128)로 전달하여 통지를 활성화시킬 수 있다. 채널 핸들을 보유하고 있는 애플리케이션 서비스(128)는 상술한 바 및 후술하는 바와 같이 채널 핸들에 의해서 부호화된 난독화 라우팅 데이터를 실제적으로 이해하지 않고도 통지 서비스(124)를 통해서 대응하는 채널로 통지를 지향시킬 수 있다.
단계(506)는 채널 핸들을 사용하여 통지 서비스를 통해서 채널로 전송된 통지를 수신한다. 통지는 통지 서비스로부터 클라이언트(102)로 전송될 수 있다. 통지는 본 명세서에서 설명한 바와 같이 운영 체제(110) 및/또는 로컬 API에 의해서 수신되고 처리될 수 있다. 특히, 통지 서비스(124)는 채널 핸들을 사용하여 애플리케이션 서비스(128)를 대신하여 통지를 해석하고 라우팅한다. 따라서 클라이언트(102)는 클라이언트(102)에 대해서 확립된 각각의 채널 상에서 통지 서비스(124)를 통해서 다양한 통지를 수신할 수 있다. 통지는 상술한 바와 같이 다양한 방식으로 클라이언트(102)에서 처리되고, 저장되고, 및/또는 출력될 수 있다.
도 6은 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도이다. 상기 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합과 관련되어 구현될 수 있다. 적어도 일부 실시예에서, 상기 방법은 도 1의 예시적인 애플리케이션 서비스(128)를 제공하도록 구성된 하나 이상의 서버에 의한 것과 같이, 적절하게 구성된 컴퓨팅 디바이스를 사용하여 구현될 수 있다.
단계(600)는 클라이언트로부터 난독화 라우팅 데이터를 수신하여 클라이언트의 대응하는 애플리케이션으로의 통지를 활성화한다. 예를 들어서, 애플리케이션 서비스(128)는 애플리케이션(108)으로부터 채널 핸들, 토큰, 또는 기타 난독화 라우팅 데이터를 획득하고 또한 저장할 수 있다. 난독화 라우팅 데이터는 대응하는 채널을 통해서 상기 서비스가 애플리케이션(108)으로 통지를 전송할 수 있도록 한다. 채널 자체는 본 명세서에서 기술된 방식으로 애플리케이션 서비스(128)로부터 난독화될 수 있다.
단계(602)는 애플리케이션으로의 전달을 위한 통지를 생성한다. 통지는 특정 애플리케이션으로 전달하기 위한 메시지로서 구성될 수 있다. 통지에는 프로그램 업데이트, 애플리케이션 내 콘텐트, 프로모션, 경고, 링크, 보상, 목표 달성 메시지, 등이 포함될 수 있다.
단계(604)는 난독화 라우팅 데이터와 함께 통지를 패키지로 형성한다. 특히, 애플리케이션 서비스(128)는 패키지를 생성할 수 있으며, 상기 패키지는 통지를 포함하고 또한 이 패키지 내에 난독화 라우팅 데이터를 포함시키는 것에 의해서 이 패키지를 채널로 전달할 수 있다. 예를 들면, 애플리케이션 업데이트는 채널 URI, 핸들, 토큰, 또는 채널용으로 발행된 기타 라우팅 데이터와 함께 패키지될 수 있다. 통지는 패키지 내에 포함되어 있는 난독화 라우팅 데이터에 의해서 표시되어지는 전달 명령에 첨부되어 있거나 다르게는 이에 관련되어 있는 페이로드로 간주될 수 있다.
단계(606)는 난독화 라우팅 데이터와 함께 통지를 전달하여 통지 서비스가 상기 통지를 상기 난독화 라우팅 데이터에 의해서 지정된 바와 같이 애플리케이션으로 전달하도록 한다. 다시, 애플리케이션 서비스(128)는 난독화 라우팅 데이터를 사용하여 상세한 라우팅 데이터 또는 내부에 부호화된 종점의 실제 주소를 반드시 알 필요없이 메시지를 종점으로 지향시킬 수 있다. 난독화 라우팅 데이터를 갖는 통지 패키지는 통지 서비스(124)에 의해서 제공되는 서비스의 장점을 애플리케이션 서비스(128)에 의해서 취할 수 있도록 구성된다. 통지 서비스(124)는 난독화 라우팅 데이터를 복호화하고 또한 이에 따라서 통지를 전달하는데 책임을 진다. 따라서, 애플리케이션 서비스(128)는 단순히 다양한 형식의 난독화 라우팅 데이터를 사용하여 통지 서비스(124)로 통지를 지향시키고 또한 처리하도록 하여 정확한 종점을 식별하고 통지를 라우팅할 수 있다.
지금까지 무상태 애플리케이션 통지의 다양한 실시예의 방법에 대해서 설명하였으며, 이제 하나 이상의 실시예에 따라 무상태 애플리케이션 통지의 다양한 특징을 구현하는데 사용될 수 있는 예시적인 시스템에 대해서 설명하기로 한다.
예시적인 시스템
도 7은 대략 도면 번호 700으로 나타내고 예시적인 컴퓨팅 디바이스(702)를 포함하는 예시적인 시스템을 도시하고 있으며, 상기 예시적인 시스템은 상술한 다양한 실시예를 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 디바이스를 나타내고 있다. 예를 들어, 컴퓨팅 디바이스(702)는 서비스 제공자(114)의 서버, 컴퓨팅 디바이스(102)와 관련된 디바이스(예를 들면, 클라이언트 디바이스), 애플리케이션 서비스(128)를 제공하는 서버, 시스템 온 칩, 및/또는 임의의 기타 적절한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수 있다.
예시적인 컴퓨팅 디바이스(702)는 하나 이상의 프로세서(704) 또는 프로세싱 유닛, 하나 이상의 메모리 및/또는 스토리지 컴포넌트를 포함할 수 있는 하나 이상의 컴퓨터 판독 가능 매체(706), 입력/출력(I/O) 디바이스용의 하나 이상의 입력/출력(I/O) 인터페이스(710), 및 다양한 컴포넌트 및 디바이스가 서로 간에 통신할 수 있도록 허용하는 버스(712)를 포함하고 있다. 컴퓨터 판독 가능 매체(706) 및/또는 하나 이상의 I/O 디바이스는 컴퓨팅 디바이스(702)의 일부로서, 또는 다르게는 접속된 채로 포함될 수 있다. 버스(712)는 메모리 버스나 메모리 컨트롤러, 주변 장치 버스(peripheral bus), 고속 그래픽 포트(accelerated graphics port), 및 임의의 이들 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 포함하는 하나 이상의 몇 가지 종류의 버스 구조를 나타내고 있다. 버스(712)는 유선 및/또는 무선 버스를 포함할 수 있다.
하나 이상의 프로세서(704)는 형성되는 재료에 의해서 또는 그 내부에서 채택한 처리 메커니즘에 의해서 제한되지는 않는다. 예를 들면, 프로세서는 반도체(들) 및/또는 트랜지스터(예를 들면, 전자 집적 회로(IC))를 포함하여 이루어질 수 있다. 이와 같은 맥락에서, 프로세서-실행 가능 명령은 전자적으로 실행 가능한 명령일 수 있다. 메모리/스토리지 컴포넌트(708)는 하나 이상의 컴퓨터 판독 가능 매체와 관련된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지 컴포넌트(708)는 (RAM과 같은) 휘발성 매체 및/또는 (ROM과 같은) 비휘발성 매체, 플래쉬 메모리, 광 디스크, 자기 디스크 등을 포함할 수 있다. 메모리/스토리지 컴포넌트(708)는 고정식 매체(예를 들어, RAM, ROM, 고정식 하드 드라이브 등)와 탈착식 매체(예컨대, 플래시 메모리 드라이브, 탈착식 하드 드라이브, 광 디스크 등)를 포함할 수 있다.
입력/출력 인터페이스(들)(710)는 사용자로 하여금 명령어 및 정보를 컴퓨팅 디바이스(702)에 입력할 수 있도록 하고, 또한 다양한 입력/출력 디바이스를 사용하여 사용자에게 및/또는 기타 컴포넌트 또는 디바이스에 정보를 표시할 수 있도록 한다. 입력 디바이스의 예로는 키보드, 터치 스크린 디스플레이, 커서 제어 디바이스(예를 들면, 마우스), 마이크, 스캐너 등등이 포함된다. 출력 디바이스의 예로는 디스플레이 장치(예를 들면, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등등이 포함된다.
본 명세서에서는 일반적인 맥락에 따라서 소프트웨어, 하드웨어(고정 논리 회로), 또는 프로그램 모듈에 대해서 설명될 수 있다. 일반적으로, 그와 같은 모듈에는 특정한 작업을 수행하거나 특정한 추상 데이터 형태를 구현한 프로그램의 루틴, 프로그램, 객체, 요소, 컴포넌트, 자료 구조 등이 포함된다. 이들 모듈의 구현 및 기법은 일정한 형식의 컴퓨터 판독 가능 매체 상에 또는 이를 거쳐서 전송될 수 있다. 컴퓨터 판독 가능 매체로는 컴퓨터 디바이스에 의해서 접근이 가능할 수 있는 다양한 입수 가능한 매체가 포함된다. 예를 들어, 컴퓨터 판독 가능 매체는 "컴퓨터 판독 가능 저장 매체" 및 "통신 매체"를 포함할 수 있지만, 본 발명은 이들만으로 제한하지는 않는다.
"컴퓨터 판독 가능 저장 매체"는 단순히 신호 전달, 반송파, 또는 신호 그 자체인 경우와 대비하였을 때 정보를 영구적으로 및/또는 지속적으로 저장할 수 있는 매체 및/또는 디바이스를 의미할 수 있다. 따라서, 컴퓨터 판독 가능 저장 매체는 비신호 반송 매체를 지칭한다. 또한 컴퓨터 판독 가능 저장 매체는 상술한 기술의 측면을 구현하는데 일부 실시예를 사용할 수 있는 하드웨어 형식으로 구현되는 명령어, 모듈, 및/또는 고정 디바이스 로직을 갖는 하드웨어 요소를 포함하고 있다.
컴퓨터 판독 가능 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 로직 요소, 또는 기타 데이터와 같은 정보를 저장하기에 적합한 방법 또는 기술로 구현된 휘발성 및 비휘발성, 탈착식 및 비탈착식 매체 및/또는 스토리지 디바이스를 포함하고 있다. 컴퓨터 판독 가능 저장 매체의 예로는, RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다용도 디스크(DVD) 또는 기타 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 기타 자기 스토리지 디바이스, 하드웨어 요소(예를 들면, 고정식 로직)의 집적 회로 또는 칩, 또는 기타 스토리지 디바이스, 물리적인 매체, 또는 소정의 정보를 저장하기에 적합하고 컴퓨터로 접속할 수 있는 제조 물품이 포함될 수 있지만, 이들만으로 제한하는 것은 아니다.
"통신 매체"는, 예를 들어 네트워크를 통해서, 컴퓨팅 디바이스의 하드웨어로 명령들을 전송하도록 구성된 신호 반송 매체를 지칭할 수 있다. 통신 매체는 전형적으로 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는, 예를 들어 반송파, 데이터 신호, 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터로 구현될 수 있다. 통신 매체는 또한 임의의 정보 전달 매체를 포함하고 있다. "변조된 데이터 신호"라는 용어는 어떤 신호를 의미하는 용어로서, 신호 중의 하나 이상의 특성이 고정되거나 변경되어 정보가 상기 신호 내에 부호화된 것을 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선, 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있지만, 본 발명은 이들만으로 제한하지는 않는다.
또한 이들 중 임의의 것들을 조합한 것 역시 컴퓨터 판독 가능 매체의 범위 내에 포함되어진다. 따라서, 소프트웨어, 하드웨어, 또는 API를 포함하는 프로그램 모듈, 통지 서비스(124), 운영 체제(110), 애플리케이션(108), 및 기타 프로그램 모듈은 일정한 형태의 컴퓨터 판독 가능 매체 상에 구현된 하나 이상의 명령 및/또는 로직으로서 구현될 수 있다.
따라서, 본 명세서에서 기술한 특정 모듈, 기능, 컴포넌트, 및 기법은 소프트웨어, 하드웨어, 펌웨어 및/또는 이들의 조합으로 구현될 수 있다. 컴퓨팅 디바이스(702)는 컴퓨터 판독 가능 매체 상에 구현된 소프트웨어 및/또는 하드웨어에 대응하는 특정 명령 및/또는 함수를 구현하도록 구성될 수 있다. 명령 및/또는 함수는 제조 업자의 하나 이상의 물품(예를 들면, 하나 이상의 컴퓨팅 디바이스(702) 및/또는 프로세서(704))에 의해서 실행/동작되어 무상태 애플리케이션 통지를 위한 기법, 뿐만 아니라 다른 기법을 구현할 수 있다. 이와 같은 기법에는, 본 명세서에서 기술한 예시적인 절차들이 포함되며, 이들만으로 제한되지는 않는다. 따라서, 컴퓨터 판독 가능 매체는 본 명세서에서 기술한 하나 이상의 디바이스에 의해서 실행되었을 때, 무상태 애플리케이션 통지를 위한 다양한 기법을 가능하게 하는 명령을 저장하거나 다르게는 명령을 제공하도록 구성될 수 있다.
결론
이상으로 채널 핸들 및/또는 토큰의 형태로서의 난독화 라우팅 데이터를 사용하여 통지 서비스를 통해서 통지를 전송할 수 있는 무상태 애플리케이션 통지에 대해서 설명하였다. 라우팅 데이터는 암호화 및 디지털 서명되어 제 3 자로부터 라우팅 데이터의 콘텐트와 포맷이 난독화될 수 있다. 난독화 라우팅 데이터를 보유하고 있는 애플리케이션 서비스는 데이터와 함께 통지를 패키지로 형성한 다음 이 패키지를 전달하기 위해 통지 서비스로 전송할 수 있다. 통지 서비스는 데이터를 복호화하고 해석하도록 구성될 수 있고, 또한 애플리케이션 서비스를 대신하여 적절한 종점으로 상기 통지를 전달하도록 구성될 수 있다.
구조적인 특징 및/또는 방법적인 동작에 특유한 표현을 이용하여 본 발명의 대상을 설명하였지만, 첨부한 특허청구범위에서 정의되는 본 발명의 대상은 상술한 구체적인 특징이나 동작만으로 한정되는 것은 아니다. 오히려, 상술한 구체적인 특징 및 동작은 특허청구범위를 구현하는 예시적인 형태로서 개시되었다.
102 : 클라이언트
111 : 채널 상태 데이터
108 : 애플리케이션
110 : 운영 체제
112 : 네트워크
114 : 서비스 제공자
116 : 프로세서
118 : 컴퓨터 판독 가능 매체
120 : 리소스 매니저
122 : 리소스
126 : 통지
124 : 통지 서비스
128 : 애플리케이션 서비스
132 : 채널 메타 데이터
110 : 운영 체제
130 : 토큰
702 : 컴퓨팅 디바이스
706 : 컴퓨터 판독 가능 매체
710 : 입력/출력(I/O) 인터페이스
712 : 버스
704 : 프로세서

Claims (20)

  1. 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의한 실행에 응답하여, 통지 서비스(notification service)로 하여금 동작을 수행하게 하는 명령어를 저장한 메모리를 포함하되,
    상기 동작은,
    애플리케이션 서비스와 클라이언트 애플리케이션 사이에서 통지를 전달하기 위해 상기 클라이언트 애플리케이션과 통신 채널을 확립하는 것과,
    상기 통지 서비스를 통해 상기 클라이언트 애플리케이션에 대한 통지를 상기 통신 채널 상으로 지향시키기 위해 상기 애플리케이션 서비스에 의해 사용될 상기 통신 채널에 대한 난독화 라우팅 데이터(obfuscated routing data)를 생성하는 것 - 상기 난독화 라우팅 데이터는 상기 애플리케이션 서비스 및 상기 클라이언트 애플리케이션에 의해 해석될 수 없고, 상기 난독화 라우팅 데이터의 콘텐츠는 상기 통지 서비스에 의해 제어됨 - 과,
    상기 난독화 라우팅 데이터와 함께 패키지되는 통지를 상기 애플리케이션 서비스로부터 획득하는 것- 상기 난독화 라우팅 데이터는, 상기 통신 채널의 캐시된 상태 데이터를 조회하지 않고도 처리 중에 상기 난독화 라우팅 데이터로부터 상기 통지 서비스에 의해 확인될 수 있는 상기 통신 채널의 경로를 부호화함 - 과,
    상기 난독화 라우팅 데이터를 해석하여 상기 통신 채널을 식별하고 상기 애플리케이션 서비스로부터 획득된 상기 통지를 상기 클라이언트 애플리케이션으로 지향시키는 것을 포함하는
    시스템.
  2. 제 1 항에 있어서,
    상기 난독화 라우팅 데이터는 상기 통신 채널의 주소의 추상(abstraction)으로서 유도되는 채널 핸들을 포함하는
    시스템.
  3. 제 1 항에 있어서,
    상기 난독화 라우팅 데이터는 토큰을 포함하고, 상기 토큰은 상기 토큰과 연관되어 전송된 통지를 상기 통신 채널 상에 지향시키기 위해 상기 통지 서비스에 의해 해석될 수 있는 라우팅 데이터를 반송하도록 포맷된
    시스템.
  4. 제 1 항에 있어서,
    상기 동작은, 상기 난독화 라우팅 데이터를 암호화하고 디지털 서명하는 것에 의해 상기 통신 채널을 보호하는 것을 더 포함하는
    시스템.
  5. 제 1 항에 있어서,
    상기 동작은, 상기 통신 채널에 영향을 미치지 않으면서 상기 난독화 라우팅 데이터를 인증 해제(de-authorize)하는 것을 더 포함하는
    시스템.
  6. 제 1 항에 있어서,
    상기 통신 채널을 확립하는 것은, 상기 통지 서비스와 상기 클라이언트 애플리케이션 사이의 영구 전역 고유 주소(persistent globally unique address)로서 채널 식별자를 할당하는 것을 포함하는
    시스템.
  7. 제 1 항에 있어서,
    상기 난독화 라우팅 데이터를 생성하는 것은, 상기 클라이언트 애플리케이션으로부터의 요청에 응답하여, 상기 클라이언트에서 캐시되고 상기 요청 내에 제공되는 상태 데이터에 기초하여 상기 통신 채널의 채널 핸들을 구축하는 것을 포함하는
    시스템.
  8. 제 7 항에 있어서,
    상기 채널 핸들은, 상기 클라이언트 애플리케이션, 클라이언트 디바이스, 및 상기 클라이언트 디바이스의 사용자의 조합을 부호화하는 통합 리소스 식별자(Uniform Resource Identifier: URI)로서 구축되는
    시스템.
  9. 제 1 항에 있어서,
    상기 난독화 라우팅 데이터를 해석하는 것은,
    상기 난독화 라우팅 데이터를 복호화하는 것과,
    만료 시간을 검사하여 상기 복호화된 라우팅 데이터의 유효성을 검증하는 것과,
    로그인(sign-in)하도록 상기 난독화 라우팅 데이터에 내장된 인증 정보와 상기 애플리케이션 서비스에 의해 사용되는 인증 정보와의 비교에 기초하여 통지를 전송하도록 상기 애플리케이션 서비스를 인증하는 것과,
    상기 복호화된 라우팅 데이터를 처리하여 상기 통지를 위한 상기 통신 채널을 식별하는 것을 포함하는
    시스템.
  10. 컴퓨터로 구현되는 방법으로서,
    클라이언트에 의해, 애플리케이션 서비스로부터 상기 클라이언트의 애플리케이션으로 통지를 제공하는 채널의 생성을 개시하는 단계와,
    상기 클라이언트에 의해, 통지 서비스로부터 상기 채널에 대한 채널 핸들을 네트워크를 통해 요청하는 단계 - 상기 채널 핸들은, 상기 채널의 캐시된 상태 데이터를 조회하지 않고도 처리 중에 상기 통지 서비스에 의해 해석될 수 있는 라우팅 데이터를 부호화하여 상기 클라이언트의 애플리케이션에 대한 상기 채널 상으로 통지를 지향시키고, 상기 라우팅 데이터의 콘텐츠는 상기 통지 서비스에 의해 제어됨 - 와,
    상기 요청에 응답하여 상기 통지 서비스에 의해 반환된 채널 핸들을 상기 클라이언트에서 캐시하는 단계와,
    상기 클라이언트에 의해 그리고 상기 네트워크를 통해, 상기 통지 서비스에 의해 반환된 상기 채널 핸들을 상기 애플리케이션 서비스에 제공하여 상기 애플리케이션 서비스로 하여금 상기 채널 핸들을 사용하여 상기 클라이언트로 통지를 라우팅할 수 있게 하는 단계 - 상기 채널 핸들의 상기 라우팅 데이터는 상기 애플리케이션 서비스 및 상기 클라이언트의 애플리케이션에 의해 해석될 수 없음 - 와,
    상기 클라이언트에서 상기 통지 서비스로부터 상기 채널 상에서 통지를 수신하는 단계 - 상기 통지는 상기 애플리케이션 서비스에서 상기 라우팅 데이터와 패키지되어 상기 통지 서비스로 하여금 상기 채널 상에서 상기 통지를 상기 클라이언트로 지향시키게 함 - 를 포함하는
    컴퓨터로 구현되는 방법.
  11. 제 10 항에 있어서,
    상기 채널 핸들은, 상기 애플리케이션, 클라이언트 디바이스, 및 상기 클라이언트에 대한 식별자들의 조합을 부호화하는 통합 리소스 식별자(URI)를 포함하는
    컴퓨터로 구현되는 방법.
  12. 제 10 항에 있어서,
    상기 클라이언트는, 상기 통지 서비스로부터 동일한 채널에 대해 복수의 채널 핸들을 요청하도록 구성되고, 상기 채널 핸들 중 적어도 일부는 동시에 활성화되어,
    상기 애플리케이션 서비스로부터 상기 클라이언트로의 통지의 연속성과,
    후속 통지를 제공하기 위한 상기 클라이언트와 애플리케이션 서비스 사이의 새로운 채널을 확립하지 않고 상기 채널에 대해 만료되고 변조된 채널 핸들을 인증 해제하는 것
    을 가능하게 하는
    컴퓨터로 구현되는 방법.
  13. 제 10 항에 있어서,
    상기 클라이언트에 의해, 상기 채널 핸들과 연관된 만료 시간 이전에 상기 클라이언트에 의해 캐시되는 상기 채널 핸들의 갱신을 요청하는 단계와,
    상기 요청에 응답하여 상기 통지 서비스에 의해 상기 채널에 대해 발행된 다른 채널 핸들을 획득하는 단계를 더 포함하는
    컴퓨터로 구현되는 방법.
  14. 컴퓨터로 구현되는 방법으로서,
    애플리케이션 서비스와 클라이언트 애플리케이션 사이에서 통지를 전달하기 위해 상기 클라이언트 애플리케이션과 통신 채널을 확립하는 단계와,
    통지 서비스를 통해 상기 클라이언트 애플리케이션에 대한 통지를 상기 통신 채널 상으로 지향시키기 위해 상기 애플리케이션 서비스에 의해 사용될 상기 통신 채널에 대한 난독화 라우팅 데이터를 생성하는 단계 - 상기 난독화 라우팅 데이터는 상기 애플리케이션 서비스 및 상기 클라이언트 애플리케이션에 의해 해석될 수 없고, 상기 난독화 라우팅 데이터의 콘텐츠는 상기 통지 서비스에 의해 제어됨 - 와,
    상기 난독화 라우팅 데이터와 함께 패키지되는 통지를 상기 애플리케이션 서비스로부터 획득하는 단계 - 상기 난독화 라우팅 데이터는, 상기 통신 채널의 캐시된 상태 데이터를 조회하지 않고도 처리 중에 상기 난독화 라우팅 데이터로부터 상기 통지 서비스에 의해 확인될 수 있는 상기 통신 채널의 경로를 부호화함 - 와,
    상기 난독화 라우팅 데이터를 해석하여 상기 통신 채널을 식별하고 상기 애플리케이션 서비스로부터 획득된 상기 통지를 상기 클라이언트 애플리케이션으로 지향시키는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  15. 제 14 항에 있어서,
    상기 난독화 라우팅 데이터는, 상기 통신 채널의 주소의 추상으로서 유도되는 채널 핸들을 포함하는
    컴퓨터로 구현되는 방법.
  16. 제 14 항에 있어서,
    상기 난독화 라우팅 데이터는 토큰을 포함하고, 상기 토큰은 상기 토큰과 연관되어 전송된 통지를 상기 통신 채널 상에 지향시키기 위해 상기 통지 서비스에 의해 해석될 수 있는 라우팅 데이터를 반송하도록 포맷된
    컴퓨터로 구현되는 방법.
  17. 제 14 항에 있어서,
    상기 난독화 라우팅 데이터를 암호화하고 디지털 서명하는 것에 의해 상기 통신 채널을 보호하는 단계를 더 포함하는
    컴퓨터로 구현되는 방법.
  18. 제 14 항에 있어서,
    상기 통신 채널에 영향을 미치지 않으면서 상기 난독화 라우팅 데이터를 인증 해제하는 단계를 더 포함하는
    컴퓨터로 구현되는 방법.
  19. 제 14 항에 있어서,
    상기 난독화 라우팅 데이터를 생성하는 단계는, 상기 클라이언트 애플리케이션으로부터의 요청에 응답하여, 상기 클라이언트에서 캐시되고 상기 요청에 의해 제공되는 상태 데이터에 기초하여 상기 통신 채널의 채널 핸들을 구축하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  20. 제 19 항에 있어서,
    상기 채널 핸들은, 상기 클라이언트 애플리케이션, 클라이언트 디바이스, 및 상기 클라이언트 디바이스의 사용자의 조합을 부호화하는 통합 리소스 식별자(URI)로서 구축되는
    컴퓨터로 구현되는 방법.
KR1020147005396A 2011-09-01 2012-08-30 무상태 애플리케이션 통지 기법 KR101988682B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/224,217 2011-09-01
US13/224,217 US9225538B2 (en) 2011-09-01 2011-09-01 Stateless application notifications
PCT/US2012/053025 WO2013033320A1 (en) 2011-09-01 2012-08-30 Stateless application notifications

Publications (2)

Publication Number Publication Date
KR20140059788A KR20140059788A (ko) 2014-05-16
KR101988682B1 true KR101988682B1 (ko) 2019-06-12

Family

ID=47403614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147005396A KR101988682B1 (ko) 2011-09-01 2012-08-30 무상태 애플리케이션 통지 기법

Country Status (6)

Country Link
US (1) US9225538B2 (ko)
EP (1) EP2752062B1 (ko)
JP (1) JP6138791B2 (ko)
KR (1) KR101988682B1 (ko)
CN (1) CN102857408B (ko)
WO (1) WO2013033320A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10348657B1 (en) 2012-06-28 2019-07-09 Open Text Corporation System for delivering notification messages across different notification media
US8923823B1 (en) * 2012-06-28 2014-12-30 Emc Corporation System for delivering and confirming receipt of notification messages across different notification media
EP2706727B1 (en) * 2012-09-11 2014-09-10 BlackBerry Limited Systems, devices and methods for authorizing endpoints of a push pathway
CN104125063B (zh) * 2013-04-28 2016-10-12 腾讯科技(深圳)有限公司 授权认证方法、设备及系统
WO2014200017A1 (ja) 2013-06-11 2014-12-18 Tanji Atsushi 骨切支援システム、情報処理装置、画像処理方法、および画像処理プログラム
EP3042483A4 (en) 2013-09-06 2017-04-12 Nokia Technologies Oy Method, apparatus and system for enhancing user's engagement with service
US10466688B2 (en) 2015-05-14 2019-11-05 Honeywell International Inc. Apparatus and method for providing event context with notifications related to industrial process control and automation system
US10021063B2 (en) * 2015-05-14 2018-07-10 Honeywell International Inc. Apparatus and method for protecting proprietary information over public notification infrastructure
US10078326B2 (en) 2015-05-14 2018-09-18 Honeywell International Inc. Apparatus and method for event detection to support mobile notifications related to industrial process control and automation system
US10505790B2 (en) 2015-05-14 2019-12-10 Honeywell International Inc. Apparatus and method for automated event notification read receipt to support non-repudiated auditing or other functions in industrial process control and automation system
US10021064B2 (en) 2015-05-14 2018-07-10 Honeywell International Inc. Apparatus and method for translating industrial process control and automation system events into mobile notifications
US9571471B1 (en) * 2015-11-10 2017-02-14 AO Kaspersky Lab System and method of encrypted transmission of web pages
US10574739B2 (en) 2016-02-26 2020-02-25 Honeywell International Inc. System and method for smart event paging
US10798093B2 (en) * 2016-09-19 2020-10-06 Verisign, Inc. GTLD domain name registries RDAP architecture
US10523632B2 (en) 2016-09-19 2019-12-31 Verisign, Inc. GTLD domain name registries RDAP architecture
US10466686B2 (en) 2017-02-17 2019-11-05 Honeywell International Inc. System and method for automatic configuration of a data collection system and schedule for control system monitoring
CN108667791B (zh) * 2017-12-18 2021-01-01 中国石油天然气股份有限公司 身份验证方法
US11709480B2 (en) 2018-05-14 2023-07-25 Honeywell International Inc. System and method for automatic data classification for use with data collection system and process control system
CN112335273A (zh) * 2018-06-26 2021-02-05 诺基亚技术有限公司 用于动态更新路由标识符的方法和装置
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
EP3731480B1 (en) * 2019-04-25 2022-03-02 Mastercard International Incorporated Systems and methods for secure communication
US11347572B2 (en) 2019-09-26 2022-05-31 Vmware, Inc. Methods and apparatus for data pipelines between cloud computing platforms
US11764958B2 (en) * 2021-04-06 2023-09-19 Capital One Services, Llc Systems and methods for dynamically encrypting redirect requests

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182443A1 (en) 2002-03-20 2003-09-25 Microsoft Corporation System and method for protecting privacy and anonymity of parties of network communications

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4451566B2 (ja) * 1998-10-30 2010-04-14 バーネットエックス インコーポレーティッド 保証されたシステム可用性を有する安全な通信のためのアジル・ネットワーク・プロトコル
US7188180B2 (en) * 1998-10-30 2007-03-06 Vimetx, Inc. Method for establishing secure communication link between computers of virtual private network
US6502135B1 (en) * 1998-10-30 2002-12-31 Science Applications International Corporation Agile network protocol for secure communications with assured system availability
US7020708B2 (en) * 1999-05-14 2006-03-28 Cingular Wireless Ii, Llc Aircraft data services
US7673329B2 (en) 2000-05-26 2010-03-02 Symantec Corporation Method and apparatus for encrypted communications to a secure server
US7555561B2 (en) * 2001-03-19 2009-06-30 The Aerospace Corporation Cooperative adaptive web caching routing and forwarding web content data broadcasting method
US20020157024A1 (en) * 2001-04-06 2002-10-24 Aki Yokote Intelligent security association management server for mobile IP networks
US7647597B2 (en) * 2001-06-28 2010-01-12 Microsoft Corporation Transparent and sub-classable proxies
WO2003028284A1 (en) * 2001-09-26 2003-04-03 Synchron Networks Secure broadcast system and method
US7398388B2 (en) * 2002-02-28 2008-07-08 Hewlett-Packard Development Company, L.P. Increasing peer privacy
JP3659236B2 (ja) * 2002-04-18 2005-06-15 日本電気株式会社 モバイル通信網システム、外部エージェントルータ、アドレスサーバ及びそれらに用いるパケット配送方法
US7096200B2 (en) * 2002-04-23 2006-08-22 Microsoft Corporation System and method for evaluating and enhancing source anonymity for encrypted web traffic
US7860975B2 (en) * 2002-07-31 2010-12-28 Oracle America, Inc. System and method for secure sticky routing of requests within a server farm
JP4072071B2 (ja) * 2003-02-13 2008-04-02 富士フイルム株式会社 顔画像補正方法および装置、並びに顔画像補正プログラム
US7701974B2 (en) 2003-10-21 2010-04-20 Nokia Corporation Routing information processing for network hiding scheme
US7774411B2 (en) * 2003-12-12 2010-08-10 Wisys Technology Foundation, Inc. Secure electronic message transport protocol
US8639819B2 (en) * 2004-02-05 2014-01-28 Nokia Corporation Ad-hoc connection between electronic devices
US20050270970A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Failsafe service oriented architecture
US7509497B2 (en) * 2004-06-23 2009-03-24 Microsoft Corporation System and method for providing security to an application
US20050286412A1 (en) * 2004-06-23 2005-12-29 Lucent Technologies Inc. Transient notification system
US7623516B2 (en) * 2004-06-29 2009-11-24 Damaka, Inc. System and method for deterministic routing in a peer-to-peer hybrid communications network
US7376134B2 (en) * 2004-08-02 2008-05-20 Novell, Inc. Privileged network routing
US7664879B2 (en) * 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US8082304B2 (en) * 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
JP4594753B2 (ja) * 2005-01-24 2010-12-08 日本放送協会 コンテンツ利用許可証送信装置、コンテンツ利用許可証送信プログラム及びコンテンツ利用許可証受信プログラム
US20070038740A1 (en) 2005-08-10 2007-02-15 Nortel Networks Limited Notification service
JP4701132B2 (ja) 2005-12-07 2011-06-15 株式会社エヌ・ティ・ティ・ドコモ 通信経路設定システム
US20070245414A1 (en) * 2006-04-14 2007-10-18 Microsoft Corporation Proxy Authentication and Indirect Certificate Chaining
JP2007028606A (ja) * 2006-06-07 2007-02-01 Umi Nishida ピアツーピア型匿名プロキシにおける安全性の高い匿名通信路の検証及び構築する方法
JP4466622B2 (ja) * 2006-07-24 2010-05-26 日本電気株式会社 通信管理装置、通信装置、ネットワーク、サーバ、通信システム、通信方法およびプログラム
JP4420057B2 (ja) * 2007-04-23 2010-02-24 株式会社日立製作所 通信方法、情報処理システム及び情報処理装置
US8099764B2 (en) 2007-12-17 2012-01-17 Microsoft Corporation Secure push and status communication between client and server
US8144623B2 (en) * 2008-02-04 2012-03-27 Kabushiki Kaisha Toshiba Method and apparatus for automatically setting IP address
US20100088387A1 (en) 2008-10-03 2010-04-08 Apple Inc. Email Notification Proxy
US8275404B2 (en) 2008-10-29 2012-09-25 Google Inc. Managing and monitoring emergency services sector resources
US8064896B2 (en) 2009-03-09 2011-11-22 Apple Inc. Push notification service
JP5148540B2 (ja) * 2009-03-30 2013-02-20 セコム株式会社 監視システム
US20110066851A1 (en) * 2009-09-14 2011-03-17 International Business Machines Corporation Secure Route Discovery Node and Policing Mechanism
US9806982B2 (en) * 2010-12-27 2017-10-31 Verizon Patent And Licensing Inc. Router policy system
US8595818B2 (en) * 2011-06-01 2013-11-26 Raytheon Bbn Technologies Corp. Systems and methods for decoy routing and covert channel bonding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182443A1 (en) 2002-03-20 2003-09-25 Microsoft Corporation System and method for protecting privacy and anonymity of parties of network communications

Also Published As

Publication number Publication date
CN102857408B (zh) 2016-12-28
JP2014528199A (ja) 2014-10-23
JP6138791B2 (ja) 2017-05-31
EP2752062A4 (en) 2015-08-05
EP2752062A1 (en) 2014-07-09
US9225538B2 (en) 2015-12-29
CN102857408A (zh) 2013-01-02
KR20140059788A (ko) 2014-05-16
WO2013033320A1 (en) 2013-03-07
US20130061046A1 (en) 2013-03-07
EP2752062B1 (en) 2019-09-25

Similar Documents

Publication Publication Date Title
KR101988682B1 (ko) 무상태 애플리케이션 통지 기법
US11196729B2 (en) Methods and systems for distributing encrypted cryptographic data
US8447970B2 (en) Securing out-of-band messages
US9137017B2 (en) Key recovery mechanism
JP2022507151A (ja) 安全な無線ファームウェアアップグレード
US20140096213A1 (en) Method and system for distributed credential usage for android based and other restricted environment devices
US9525548B2 (en) Provisioning techniques
CN105580311A (zh) 使用请求供应的密钥的数据安全性
KR101648364B1 (ko) 대칭키 암호화와 비대칭키 이중 암호화를 복합적으로 적용한 암/복호화 속도개선 방법
CN110611657A (zh) 一种基于区块链的文件流处理的方法、装置及系统
US10095848B2 (en) System, method and apparatus for securely distributing content
JP2011128985A (ja) アカウントアグリゲーションシステム、情報処理装置およびアカウントアグリゲーションシステムにおける暗号鍵管理方法
US20130322623A1 (en) Quarantine method for sellable virtual goods
CN112966287B (zh) 获取用户数据的方法、系统、设备和计算机可读介质
KR20150052346A (ko) 고유의 코드 서명 키들의 보안 관리 및 개인화
CN110022207B (zh) 密钥管理及处理数据的方法、装置、设备和计算机可读介质
CN111901287B (zh) 一种为轻应用提供加密信息的方法、装置和智能设备
US9455961B2 (en) System, method and apparatus for securely distributing content
KR20220163483A (ko) 다자간 연산 및 k-익명성 기술 사용한 기밀 정보 보호
US11095630B1 (en) Authenticating mobile traffic
CN112187777A (zh) 智慧交通传感数据加密方法、装置、计算机设备及存储介质
KR102507864B1 (ko) 보안 인스턴트 메시징 방법 및 장치
CN114826616B (zh) 数据处理方法、装置、电子设备和介质
CN116017436A (zh) 数据访问方法、装置、设备及存储介质

Legal Events

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