KR102123369B1 - 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법 - Google Patents

웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법 Download PDF

Info

Publication number
KR102123369B1
KR102123369B1 KR1020197035646A KR20197035646A KR102123369B1 KR 102123369 B1 KR102123369 B1 KR 102123369B1 KR 1020197035646 A KR1020197035646 A KR 1020197035646A KR 20197035646 A KR20197035646 A KR 20197035646A KR 102123369 B1 KR102123369 B1 KR 102123369B1
Authority
KR
South Korea
Prior art keywords
local
web server
server
computer
module
Prior art date
Application number
KR1020197035646A
Other languages
English (en)
Other versions
KR20190137178A (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 KR20190137178A publication Critical patent/KR20190137178A/ko
Application granted granted Critical
Publication of KR102123369B1 publication Critical patent/KR102123369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • 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
    • 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/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Abstract

시스템, 적어도 하나의 프로그램을 저장하는 컴퓨터 판독가능 매체, 및 로컬 유틸리티를 제어하기 위한 컴퓨터 실행 방법이 개시되어 있다. 로컬 유틸리티에서, 애플리케이션으로부터 발생하고 제 1 토큰을 포함한 제 1 요청이 수신된다. 애플리케이션은 제 1 서버로부터 복수의 링크들과 제 1 토큰을 포함한 웹페이지를 수신한다. 복수의 링크들은 제 2 서버로부터 애플리케이션에 의해 수신된다. 제 1 토큰이 인증된다. 인증은 제 1 토큰을 제 3 서버로 보내는 것을 포함한다. 제 1 토큰을 인증하는 것에 응답해, 제 2 토큰이 로컬 유틸리티에서 발생된다. 제 2 토큰은 애플리케이션으로부터 연이은 요청에 포함하기 위해 애플리케이션으로 전송된다.

Description

웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법{Systems and Methods for Controlling a Local Application Through a Web Page}
개시된 아이디어는 일반적으로 애플리케이션을 실행하고 있는 동일한 컴퓨터에 디스플레이되는 웹페이지를 통해 애플리케이션을 제어하는데 관한 것이다.
현대의 컴퓨터들은 웹 브라우징과 같은 기타 기능들을 제공하는 것 이외에 사용자가 텍스트, 사진 이미지, 동영상 및 오디오를 포함한 여러 가지 다른 타입의 미디어들을 소비하게 한다. 컴퓨터가 더욱 인터랙티브하고 강력해짐에 따라, 사용자는 점점더 그들의 컴퓨터에 미디어를 저장하고 소비하고 있다. 또한, 사용자는 뉴스, 웹페이지 로그(블로그), 및 온라인 매거진을 읽을 뿐만 아니라 소셜 네트워크 사이트를 방문하는데 더욱더 많은 시간을 온라인에 보내고 있다. 그러나, 많은 컴퓨터 시스템에서, 음악 플레이어와 같은 미디어 재생 소프트웨어는 웹브라우저와 같은 웹 액세스 소프트웨어와 별개이다. 따라서, 사용자는 음악의 재생을 조절 또는 변경하거나 뮤직 플레이어의 상태 정보를 보기 위해 디스플레이되는 웹브라우저와 뮤직 플레이어 간에 전환이 요구된다. 그러나 다른 애플리케이션들 중에서 네비게이션해야 하는 것은 비효율적이고 불편할 수 있다.
현재, 웹페이지가 그렇게 하는 것이 바람직할 경우 로컬 미디어 소프트웨어 또는 웹페이지가 정보를 다른 데 보낼 수 있도록 로컬로 저장되고 실행되는 미디어 플레이어(또는 임의의 다른 로컬 유틸리티)에 통신하는 것은 어렵다. 따라서, 로컬 미디어 플레이어와 웹브라우저 간에 통신을 제공하는 것과 관련된 이들 및 기타 문제들을 해결하는 시스템 및 방법을 제공하는 것이 이점적일 수 있다.
따라서, 웹브라우저와 같은 애플리케이션과 로컬 유틸리티 간에 빠르고, 효율적이며, 안전한 통신을 가능하게 하는 시스템 및 방법에 대한 필요성이 있다. 몇몇 실시예에 따르면, 프로세서와 메모리를 갖춘 전자 디바이스에서 방법이 실행된다. 상기 방법은 로컬 유틸리티에서 애플리케이션으로부터 발생하고 제 1 토큰을 포함한 제 1 요청을 수신하는 단계를 포함한다. 애플리케이션은 복수의 링크들과 제 1 서로부터 제 1 토큰을 포함한 웹페이지를 수신한다. 복수의 링크들은 제 2 서버로부터 애플리케이션에 의해 수신된다. 상기 방법은 제 1 토큰을 제 3 서버로 보내는 단계를 포함해, 제 1 토큰을 인증하는 단계를 더 포함한다. 상기 방법은 제 1 토큰의 인증에 응답해, 로컬 유틸리티에서 제 2 토큰을 발생하는 단계를 더 포함한다. 상기 방법은 애플리케이션으로부터 연이은 요청들에 포함하기 위해 제 2 토큰을 애플리케이션에 보내는 단계를 더 포함한다.
몇몇 실시예에서, 상기 방법은 제 3 토큰을 포함한 제 2 요청을 수신하는 단계, 및 제 3 토큰이 제 2 토큰과 일치하는 것을 검증하는 단계를 더 포함한다. 제 2 및 제 3 토큰이 일치하면, 제 2 요청의 컨텐츠를 기초로 하나 이상의 실행들을 취하는 단계를 포함한다. 제 2 및 제 3 토큰이 일치하지 않으면, 제 2 요청의 컨텐츠를 기초로 어떠한 실행도 취하지 않는 단계를 포함한다.
몇몇 실시예에서, 제 1 토큰을 인증하는 단계는 로컬 유틸리티로부터 제 1 토큰을 제 3 서버로 전송하는 단계, 및 로컬 유틸리티에서 제 3 서버로부터 인증메시지를 수신하는 단계를 포함한다.
몇몇 실시예에서, 애플리케이션은 웹브라우저이고, 로컬 유틸리티는 미디어 플레이어이다. 몇몇 실시예에서, 로컬 유틸리티는 로컬 유틸리티 및 애플리케이션(가령, 웹브라우저)와 통신하는 웹서버를 포함한다. 몇몇 실시예에서, 복수의 링크들이 모듈에 포함된다. 몇몇 실시예에서, 모듈은 아이프레임이다. 몇몇 실시예에서, 링크들은 로컬 유틸리티 컨트롤 명령 및/또는 로컬 유틸리티 상태 요청에 해당한다. 몇몇 실시예에서, 링크들은 URLs(Uniform Resource Locators)이다.
몇몇 실시예에 따르면, 하나 이상의 프로세서; 메모리; 및 메모리에 저장되고 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램들을 포함하는 전자 디바이스는 상술한 방법들 중 어느 하나의 동작을 수행하기 위한 명령어들을 포함한다. 몇몇 실시예에 따르면, 비일시적 컴퓨터 판독가능한 저장매체는 전자 디바이스에 의한 실행시, 상기 디바이스가 상술한 방법들 중 어느 하나의 동작을 수행하게 하는 명령어를 저장한다.
본 발명의 내용에 포함됨
본 명세서에 개시된 실시예들은 단지 예로써 그리고 비제한적으로 첨부도면의 그림들에 도시되어 있다. 동일한 참조번호는 도면 전체에 일치하는 부분을 나타낸다.
도 1은 몇몇 실시예들에 따른 클라이언트-서버 환경을 도시한 블록도이다.
도 2는 몇몇 실시예들에 따른 클라이언트 컴퓨터 시스템을 도시한 블록도이다.
도 3 내지 도 5는 몇몇 실시예들에 따른 클라이언트-서버 환경을 도시한 블록도이다.
도 6a 및 도 6b는 몇몇 실시예들에 따른 웹페이지를 도시한 블록도이다.
도 7은 몇몇 실시예들에 따른 로컬 유틸리티를 제어하기 위한 방법의 흐름도를 도시한 것이다.
도 8은 몇몇 실시예들에 따른 클라이언트 컴퓨터를 도시한 블록도이다.
도 9 및 도 10은 몇몇 실시예들에 따른 서버 컴퓨터 시스템을 도시한 블록도이다.
본 명세서에 기술된 시스템 및 방법은 클라이언트 컴퓨터에서 실행되는 2개의 애플리케이션들 간에 양방향 및 연속 통신을 가능하게 한다. 특히, 개시된 실시예들은 사용자가 웹브라우저와 같이 로컬 애플리케이션에 디스플레이된 웹페이지에 포함된 컨트롤을 통해 (미디어 플레이어, 다운로드 매니저, 카메라 컨트롤 애플리케이션, 사진/동영상 편집기 등과 같은) 로컬로 실행된 유틸리티의 소정 태양들을 컨트롤 및 인터랙트하게 할 수 있다. 본 명세서에 개시된 시스템 및 방법은 또한 웹페이지에 포함을 위해 (컨트롤 버튼, 상태 윈도우 등과 같은) 로컬 유틸리티에 대한 컨트롤 요소들을 포함한 모듈들을 생성하는 방법을 제공한다.
웹페이지가 (간단한 텍스트 및 이미지 디스플레이와 같이) 단지 제한된 기능들만을 제공하는데 이용되나, 이들은 이전에 전용의 로컬로 저장되고 실행되는 소프트웨어에 의해 제공된 기능들을 현재 수행하고 있다. 예컨대, 웹페이지는 사용자가 자신의 컴퓨터에 음악을 스트림하거나 로컬 웹캠을 제어해 비디오나 사진을 찍게 할 수 있다. 그러나, 이런 기능들은 브라우저 기반의 솔루션들(가령, JAVATM, QUICKTIMETM, FLASHTM 등과 같은 플러그-인)에 의해 제공될 수 있으나, 로컬로 저장되고 실행되는 소프트웨어는 브라우저 기반의 방안들보다 여전히 종종 더 효과적이거나 편리하다. 예컨대, 미디어 플레이어 애플리케이션들은 이들이 직접 컴퓨터의 로컬 파일 구조에 직접 액세스하거나 이를 통한 컨트롤할 경우 종종 가장 효과적이어서, 이들은 저장된 미디어 파일들을 빨리 그리고 효율적으로 액세스, 분석, 편성, 및 재생할 수 있게 된다.
더욱이, 로컬로 저장되고 실행된 애플리케이션들은 브라우저 기반의 솔루션들이 실행하기 어려운 추가 서비스 또는 기능들을 제공할 수 있다. 예컨대, 로컬 미디어 플레이어는 소셜 네트워킹 사이트에 최근에 재생된 노래들을 식별하는 상태 업데이트를 자동으로 포스트하도록 구성될 수 있다. 또 다른 예로, 로컬 미디어 플레이어는 사용자의 미디어 소비 히스토리를 추적해 미디어 플레이어와 관련된 미디어 서비스가 사용자의 취향과 관련된 새 미디어 아이템들에 대한 제안을 제공할 수 있다. 몇몇 경우, 웹페이지에서 또는 브라우저 플러그-인으로 이들 특징들을 실행하는 것이 어렵다. 더욱이, 이들 기능들을 수행하는 로컬 유틸리티가 이미 있다면, 웹브라우저 환경에서 이들을 다시 생성하려고 시도하기보다 상기 로컬 유틸리티를 이용하는 것이 더 효율적일 수 있다.
하지만, 소정 타입의 애플리케이션들이 로컬로 저장되고 실행되는 것이 이점적인 반면, 웹브라우저로부터 이런 애플리케이션을 제어하는 것은 어렵고/어렵거나 비효율적일 수 있다. 가령, 사용자가 음악을 들으며 웹 서핑을 하는 경우, 사용자는 트랙을 바꾸고, 볼륨을 조절하는 등등을 위해 웹브라우저와 로컬 미디어 플레이어 간에 윈도우를 빈번히 바꿔야 할 것이다. 또한, 사용자가 특정 노래나 재생목록을 스트림하기 위한 옵션을 제공하는 웹페이지로 웹브라우저를 네비게이션하는 경우를 고려하자. 제안된 특정 노래를 좋아하면, 사용자는 음악을 시작하고 계속 웹브라우징한다. 나중에, 사용자는 새 노래를 스트림하기 위한 옵션을 제공하는 다른 브라우저 윈도우 또는 탭에 웹페이지를 마주치게 되다. 사용자가 새 노래를 선택하면, 한 웹페이지는 또 다른 웹페이지가 새 노래의 오디오 재생목록을 시작했음을 알 방법이 없기 때문에 두 노래들이 동시에 재생될 것이다. 따라서, 사용자는 원치 않는 음악을 제공하고 있는 웹페이지를 찾아내고, 그 음악을 멈추고, 새 페이지로 다시 네비게이션해 마지막으로 새 음악을 시작하도록 새 브라우저 인스턴스들 중에 네비게이션하는데 시간을 소비하도록 강요된다. 이는 불편하다. 이들 및 다른 문제들에 비추어, 웹브라우저 환경을 나가야 하거나 웹페이지로부터 직접 주목하지 않고도 로컬 애플리케이션과 컨트롤 및 인터랙션을 가능하게 하는 웹페이지들에 포함을 위한 모듈을 제공하는 것이 이점적일 것이다. 게다가, 웹페이지 생성자 및 관리자들이 로컬 유틸리티와 웹브라우저 간에 소통을 가능하게 하기 위해 기다란 프로그래밍할 필요없이 빨리 그리고 쉽게 웹페이지에 포함하기 위한 모듈을 만들게 하는 것이 이점적일 것이다.
따라서, 본 명세서에 개시된 아이디어 및 실시예들은 (미디어 플레이어와 같이) 로컬로 저장되고 실행되는 유틸리티들과 별도의 애플리케이션에 의해 검색 및/또는 별도의 애플리케이션에 디스플레이되는 웹페이지 및 기타 원격 컨텐츠(집합적으로, "웹페이지") 간에 끊김 없는 사용자 경험을 가능하게 한다. 개시된 시스템 및 방법은 웹페이지에서 떨어져 네비게이션 할 필요없이 사용자가 로컬 유틸리티를 제어하게 한다. 더욱이, 개시된 시스템 및 방법은 다수의 다른 모듈들 및/또는 웹페이지들을 통해 단일 로컬 유틸리티의 컨트롤을 가능하게 할 수 있으며, 이는 상술한 동시 음악재생 시나리오와 같은 컨트롤 갈등을 막는데 도움을 준다. 몇몇 경우, 개시된 실시예들은 편의성 및 접근성을 향상시키고자 하며, 소비자에게 제공할 뿐만 아니라 사용자가 방문할 수 있는 웹페이지와 같은 다른 자원들과 끊김 없는 통합을 가능하게 하고자 하는 엔티티들에 의해 이용될 수 있다.
도면들, 및 특히 몇몇 실시예들에 따른 클라이언트-서버 환경의 블록도를 도시한 도 1을 참조한다. 클라이언트-서버 환경은 클라이언트 컴퓨터 시스템(102), 웹서버(104), 모듈서버(122), DNS 서버(114) 및 네트워크(106)를 포함한다.
클라이언트 컴퓨터 시스템(102)("클라이언트 컴퓨터(102)")은 웹브라우저(108), 로컬 웹서버(112), 및 로컬 유틸리티(110)를 포함한다. 웹브라우저(108)는 웹페이지(116)를 검색 및/또는 디스플레이하도록 구성된다. 후술된 시스템 및 방법을 이용해, 클라이언트 컴퓨터(102)는 사용자가 별도의 윈도우 또는 애플리케이션 환경에서 로컬 유틸리티(110)와 인터랙트하는 것을 필요로 하기보다 사용자가 웹브라우저(108)를 통해 로컬 유틸리티(110)와 인터랙트하게 한다.
몇몇 실시예에서, 웹서버(104)에 의해 웹페이지(116)가 클라이언트 컴퓨터(102)에 보내진다. 가령, 웹페이지(116)는 사용자의 요청시 웹서버(104)로부터 검색되는 블로그 또는 소셜 네트워킹 웹페이지일 수 있다. 물론, 상술한 바와 같이, 웹페이지(116)는 전자상거래, 뉴스, 오락, 미디어 및/또는 기타 웹페이지들을 포함한 임의 타입의 원격 컨텐츠이고/이거나 원격 컨텐츠를 포함할 수 있다. 몇몇 실시예에서, 웹페이지(116)는 웹브라우저(108)와 로컬 웹서버(112) 간에 통신을 개시하도록 구성된다. 몇몇 실시예에서, 링크들은 로컬 유틸리티 컨트롤(120)과 연결된다. 로컬 유틸리티 컨트롤(120)과 연결된 링크들을 또한 본 명세서에서 로컬 유틸리티 컨트롤 링크라 한다. 몇몇 실시예에서, 링크들은 로컬 유틸리티 컨트롤(120)과 프로그램적으로 연결된 html 요소들이다.
몇몇 실시예에서, 로컬 유틸리티(110)는 미디어 플레이어(가령, 로컬로 또는 원격으로 저장된 미디어를 재생하도록 구성된 미디어 플레이어)이고, 로컬 유틸리티 컨트롤러(120)는 선택될 경우 로컬 유틸리티가 미디어 재생 또는 재생, 잠시멈춤, 중지, 건너뛰기 등과 같이 보기 기능을 수행하게 하는 그래픽 요소들을 포함한다. (사용자는 마우스 클릭, 키보드 입력, 터치 입력, 음성 입력 등과 같이 임의의 적절한 수단으로 그래픽 요소들을 선택할 수 있다). 몇몇 실시예에서, 로컬 유틸리티 컨트롤(120)은 미디어 플레이어에 의해 현재 재생되고 있는 미디어에 대한 정보를 나타내는 "지금 재생" 윈도우와 같이 출력요소들을 포함한다.
몇몇 실시예에서, 링크는 출력 요소 또는 선택가능한 요소들과 직접 연결되지 않고, 오히려 웹브라우저(108)와 로컬 웹서버(112) 간에 다른 필요하거나 바람직한 통신을 가능하게 한다. 또한, 하기의 개시는 종종 로컬 유틸리티 "컨트롤"이라 하는 반면, 교시는 요청(가령, http 요청)을 로컬 유틸리티(110)로 보내는 웹페이지에 있는 임의의 요소들에 적용될 수 있다. 요청은 로컬 유틸리티(110)의 동작 상태를 변경(가령, 트랙을 건너뛰기)할 수 있거나, 로컬 유틸리티로부터 정보(가령, "현재 재생중인" 정보)를 요청하거나, 로컬 유틸리티(110)가 임의의 다른 행동을 하게 할 수 있다.
몇몇 실시예에서, 로컬 유틸리티 컨트롤(120) 및 이들과 연결된 로컬 유틸리티 컨트롤 링크들이 모듈서버(122)로부터 수신되는 모듈(124)에 포함된다. 몇몇 실시예에서, 웹페이지(116)는 웹페이지(116)에 포함하기 위해 모듈(즉, 모듈의 컨텐츠)이 모듈서버(122)로부터 다운로드 되게 하는 html 요소 또는 다른 컴퓨터 코드를 포함한다. 몇몇 실시예에서, 모듈(124)은 인라인 프레임이다. (인라인 프레임은 문서가 또 다른 문서에 들어 있게 한다.) 몇몇 실시예에서, 모듈은 웹페이지(116)에서 html 아이프레임 요소에 의해 정의된 인라인 프레임이다. 모듈은 미디어 플레이어 및 뷰어, 카메라 또는 웹캠 애플리케이션, 다운로드 매니저 등과 같이 다양한 타입의 로컬 유틸리티에 대한 로컬 유틸리티 컨트롤(120)을 포함할 수 있다. 모듈은 로컬 유틸리티(110)의 소정 태양들을 컨트롤 및/또는 보기 위해 때로 "위젯"으로 기술될 수 있다. 도 6a 및 도 6b를 참조로 모듈, 모듈의 컨텐츠, 및 이들이 어떻게 생성되는지를 아래에서 설명한다.
로컬 웹페이지(112)는 로컬 유틸리티(110)와 소통해, http 요청과 같은 웹브라우저(108)로부터 발행된 요청들이 로컬 웹서버(112)에 의해 수신되고 요청에 의한 정보가 로컬 유틸리티(110)로 전송되거나 그렇지 않으면 제공된다. 본 논의에서, 로컬 웹서버(112)와 소통은 로컬 웹서버(112)가 로컬 유틸리티(110)에 대한 프론트 엔드로서 실행될 때 로컬 유틸리티(110)와의 소통과 같은 것으로 간주될 수 있음을 알아야 한다. 몇몇 실시예에서, 로컬 웹서버(112)는 로컬 유틸리티(110)와 프로그램적으로 통합되고, 로컬 유틸리티(110)와 로컬 웹브라우저(108)(및/또는 다른 로컬 또는 원격 애플리케이션들) 간에 전용 인터페이스로서 동작한다. 몇몇 실시예에서, 로컬 유틸리티(110)와 로컬 웹서버(112)는 동일한 소프트웨어 애플리케이션의 일부이고, 하나에 의해 수행되거나 제공되는 것으로 본 명세서에 기술된 동작 또는 기능은 다른 하나에 의해 수행되거나 제공될 수 있다.
몇몇 실시예에서, 웹브라우저(108)는 인터넷 프로토콜(IP) 통신을 통해 로컬 웹서버(112)와 통신한다. 예컨대, 몇몇 실시예에서, 웹페이지(116)에 있는 링크들(가령, 로컬 유틸리티 컨트롤(120)과 연결된 링크들)은 실행시 웹브라우저(108)가 하이퍼텍스트 전송규약(http) 요청을 특정 IP 어드레스로 보내는 URL(Uniform Resource Locator)이다. 몇몇 실시예에서, http 요청은 로컬 웹서버(112) 및/또는 로컬 유틸리티(110)에 의해 인식되고, 상기 로컬 유틸리티(110)가 어떤 동작을 하게 하는 파라미터 및/또는 명령을 포함한다. 로컬 유틸리티(110)가 미디어 플레이어인 실시예에서, 파라미터 및/또는 명령은 미디어 플레이어가 재생 컨트롤 기능(가령, 중지, 재생, 건너뛰기, 등)을 수행하게 할 수 있거나, 미디어 플레이어가 요청된 정보(가령, 현재 재생되는 노래, 가장 최근에 재생된 앨범 등)를 웹브라우저(108)에 제공하게 할 수 있다.
로컬 유틸리티 컨트롤(120)이 실행될 경우 로컬 웹서버(112)가 웹브라우저(108)로부터 http 요청을 수신하기 위해, 로컬 유틸리티 컨트롤 링크는 로컬 웹서버(112)의 IP 어드레스에 보내져야 한다. 이 기능은 로컬 웹서버(112)를 루프백 어드르레스와 연결시키고, 루프백 어드레스를 기정의된 도메인 네임에 링크시킴으로써 제공될 수 있다.
특히, 몇몇 실시예에서, 로컬 웹서버(112)는 클라이언트 컴퓨터(102)의 루프백 어드레스(또는 루프백 네트워크 어드레스)와 연결된다. 본 명세서에 사용된 바와 같이, 루프백 어드레스는 자기참조 어드레스로서, 컴퓨터로부터 발행되고 루프백 어드레스로 어드레스되는 (IP 통신을 포함한) 통신이 동일한 컴퓨터에 의해 수신된다. IPv4 프로토콜 통신이 이용되는 실시예에서, 컴퓨터의 루프백 네트워크 어드레스는 (도 1에 도시된 바와 같이) 127.0.01의 IP 어드레스에 해당한다. 몇몇 실시예에서, 다른 루프백 네트워크 어드레스가 이용된다.
웹브라우저(108)가 http 요청을 로컬 웹서버(112)로 보내기 위해, 웹페이지(116)는 "http://127.0.0.1/[command]"와 같은 URL과 연결된 링크를 포함할 수 있다. (아래에 상세히 설명된 바와 같이, URL의 [command] 부분은 로컬 유틸리티(110)가 어떤 동작을 수행하게 하도록 구성될 수 있다.) 링크가 실행되면, 웹브라우저(108)는 http 요청을 로컬 웹서버(112)에 해당하는 IP 어드레스 127.0.0.1로 보낸다. 따라서, 통신이 웹브라우저(108)와 로컬 웹서버(112)(그리고 이에 따라 로컬 유틸리티(110)) 간에 가능해진다.
그러나, 다양한 이유로, 로컬 유틸리티 컨트롤 링크(즉, URL로의 하드-코딩 127.0.0.1에 의해)의 URL로 직접 루프 어드레스를 포함하도록 실행될 수 없다. 예컨대, URL이 루프백 어드레스에 직접 어드레스될 경우 본 발명의 몇몇 실시예들에 사용된 보안 특징들이 불가능해진다. 오히려, URL에 있는 IP 어드레스보다는 도메인 네임을 이용하는 것이 더 이점적일 수 있다. 따라서, 하나 이상의 외부 도메인 네임들이 도메인 네임 시스템에 등록되고 루프백 어드레스와 연결될 수 있다. 도 1에 도시된 바와 같이, 도메인 네임 시스템(DNS) 서버(114)는 도메인 네임 테이블(118)을 포함한다. 도메인 네임 테이블은 도메인 네임을 (IP 어드레스와 같이) 네트워크 어드레스로 맵핑한다. 웹브라우저가 http 요청을 URL로 보내면, DNS 서버는 일반적으로 URL에 있는 도메인을 실제 네트워크 어드레스로 변환하는데 이용된다. 예컨대, http 요청을 URL www.Example.com/home로 보내는 브라우저는 "home" 페이지를 요청하기 위해 어느 쪽에서 실제 네트워크 어드레스를 결정하는 것이 필요하다. 그렇게 하기 위해, 웹브라우저(108)는 도메인 "Example.com"에 대한 네트워크 어드레스(가령, IP 어드레스)를 요청하며 DNS 서버(114)와 통신한다. 도 1에 도시된 바와 같이, 도메인 네임 테이블(118)은 도메인 "Example.com"을 75.25.1.92의 IP 어드레스와 상관시키고, DNS 서버(114)는 웹브라우저(108)로 복귀할 것이다. 웹브라우저(108)는 그런 후 페이지 "/home"(및 실제로 "Example.com"에 대해 의도된 어떤 다른 통신)에 대한 요청을 75.25.1.92의 IP 어드레스로 보낸다.
몇몇 실시예에서, 웹브라우저(108)와 클라이언트 컴퓨터(102) 상의 로컬 유틸리티(110) 간에 통신을 용이하게 하기 위해, 도메인은 도메인 네임 시스템에 등록될 수 있으며, 도메인은 루프백 어드레스와 연결된다. 도 1에 도시된 바와 같이, 도메인 네임 테이블(118)은 도메인 "loopdomain.com"에 대한 엔트리를 포함하며, 상기 도메인은 127.0.0.1의 루프백 네트워크 어드레스와 연결된다.
"loopdomain.com"을 루프백 어드레스와 연결시키는 DNS 엔트리는 상술한 바와 같이 웹페이지(116)에 있는 링크들과 결부해 사용될 수 있다. 특히, 로컬 유틸리티 컨트롤 링크에서 루프백 IP 어드레스를 하드-코딩하는 대신, 링크들은 "http://loopdomain.com/[command]"와 같은 URL과 연결될 수 있다. 이 도메인이 도메인 네임 테이블(118)을 통해 루프백 어드레스로 맵핑되면, 임의의 다른 컴퓨터들로 보내지 않고도(그리고 실제로 로컬 클라이언트 컴퓨터(102)를 전혀 나가지 않고도) 이 도메인에 어드레스된 임의의 http 요청들이 웹브라우즈(108)에서 로컬 웹서버(112)로 직접 보내진다. 그러나, URL이 간단히 IP 어드레스라기보다 외부 도메인 네임과 연결되기 때문에, 도 3을 참조로 아래에 논의된 바와 같이, 다수의 다른 특징 및 이점들이 달성될 수 있다.
IP 프로토콜을 통해 통신하기 위해, 웹브라우저(108)와 로컬 웹서버(112)는 여러 가지 기술들을 이용해 오픈된 통신채널을 확립하고 유지한다. 몇몇 실시예에서, 웹브라우저(108)는 오픈 TCP/UDP 포트와 같은 오픈포트를 이용해 로컬 웹서버(112)와 통신해야 한다. 몇몇 실시예에서, 웹브라우저(108)는 포트 스캐닝 기술을 이용해 로컬 웹서버(112)에서 이용가능한 포트를 식별한다. 예컨대, 몇몇 실시예에서, 웹페이지(116) 및/또는 웹브라우저(108)는 기정의된 포트 범위에서 제 1 이용가능 포트를 찾음으로써 로컬 웹서버(112)에 연결을 시도한다. 오픈포트가 식별되고 나면, 웹브라우저(108)는 포트를 통해 로컬 웹서버(112)에 통신할 것이다.
그러나, 웹브라우저(108)가 오픈포트를 식별하려고 시도하고 있는 중일 때 서버가 클라이언트 컴퓨터(102)를 계속 실행하고 있지 않는다면 로컬 웹서버(112)에서 오픈포트를 전혀 찾을 수 없을 것이다. 몇몇 경우, 오픈포트 식별 실패는 웹브라우저(108)(또는 웹페이지(116)에 있는 스크립트 또는 다른 코드)에 로컬 유틸리티(110)가 클라이언트 컴퓨터(102)에 현재 실행되고 있지 않음을 나타낸다. 따라서, 웹브라우저(108)는 자동으로 로컬 유틸리티(110)를 띄우도록 구성될 수 있다. (이 논의를 위해, 로컬 유틸리티(110)를 띄우는 것은 로컬 웹서버(112)를 띄우는 것을 포함한다.) 몇몇 실시예에서, 이는 클라이언트 컴퓨터(102)의 운영시스템에 이해 인식되는 고객 URI 방식을 이용해 달성된다. 몇몇 실시예에서, 웹페이지(116)는 고객 URI 방식을 이용한 링크를 포함할 수 있고, 로컬 유틸리티(110)를 띄우도록 하는 명령을 포함한다. 이 링크가 (오픈포트도 전혀 식별되지 않은 다음에) 브라우저에 의해 실행되면, 클라이언트 컴퓨터(102)는 로컬 유틸리티(110)를 띄워 웹브라우저(108)와 통신이 확립될 수 있게 된다.
일예로, 사용자가 미디어 플레이어 위젯을 포함한 웹페이지를 보는 중이고, 사용자가 "재생" 명령을 선택하면, 웹브라우저(108)는 상술한 포트 스캐닝 방법을 통해 로컬 유틸리티(110)와 통신하려고 시도할 것이다. 로컬 유틸리티(110)가 실행되고 있지 않으면, 웹브라우저(108)는 고객 URI 방식을 이용한 링크를 실행해 로컬 유틸리티(110)를 띄우고, 그 후 선택된 노래를 재생하도록 성공적으로 명령을 보낸다.
도 2는 어떻게 실시간으로, 웹브라우저(108)와 클라이언트 컴퓨터 시스템(102)에 있는 로컬 서버(112) 사이에 양방향 통신들이 확립될 수 있는지를 도시한 블록도이다. http 통신시, 웹서버들은 클라이언트 컴퓨터에 초대되지 않은 웹브라우저와 통신을 개시하지 않을 것이다. 오히려, 웹서버들은 웹브라우저가 보낸 요청에만 응답할 수 있다. 따라서, 웹브라우저와 웹서버 간에 통신이 되는 동안, 모든 통신들은 웹브라우저에 의해 먼저 개시되어야 한다. 그러나, 소정 상황에서, 웹서버는 이에 대한 특정한 요청 없이도 웹브라우저에 정보를 보내는 것이 허용되어야 한다. 예컨대, 로컬 미디어 플레이어 애플리케이션이 웹페이지에서 미디어 플레이어 위젯에 있는 "현재 재생" 윈도우를 파퓰레이팅하는 것과 같이 현재 재생되는 노래에 대한 정보를 보내는 것이 이점적일 수 있다. 그리고, 로컬 미디어 플레이어는 웹브라우저가 업데이트를 요청할 때만이 아니라 업데이트가 발생할 때마다 현재 재생된 노래에 대한 업데이트 정보를 보낼 수 있어야 한다.
몇몇 실시예에서, 도 2에 도시된 바와 같이, 웹페이지(116)는 오픈-엔드 메시지 요청(202)을 로컬 웹서버(112)로 보내도록 구성된다. 몇몇 실시예에서, 오픈-엔드 메시지 요청(202)은 웹페이지(116)의 로딩 후에 바로 웹브라우저(108)로부터 보내지므로, 로컬 유틸리티(110)가 웹브라우저(108)로 보내고 싶어하는 어떤 정보가 메시지에 응답해 그 후 임의의 시간에 보내질 수 있다. 몇몇 실시예에서, 오픈-엔드 메시지 요청(202)은 로컬 유틸리티(110)가 웹브라우저(108)로 제공하고 싶은 어떤 타입의 정보에 대한 요청이다. 몇몇 실시예에서, 오픈-엔드 메시지 요청(202)은 로컬 유틸리티(110)가 미디어 플레이어인 실시예에서, 현재 재생중인 노래와 같이 기정의된 정보의 카테고리에 대한 요청이다.
로컬 웹서버(112)가 오픈-엔드 메시지 요청(202)을 수신하고 나면, 로컬 웹서버(112)는 로컬 유틸리티(110)가 웹브라우저(108)로 내질 어떤 정보가 있는지 판단할 때까지 요청에 대해 어떠한 동작도 취하지 않는다. 몇몇 경우, 로컬 유틸리티(110)는 오픈-엔드 메시지 요청(202)이 수신된 후 바로 웹브라우저(108)로 보낼 어떠한 정보도 없을 것이다. 따라서, 로컬 웹서버(112)는 리턴 메시지(204)를 보내는 것을 필요로 하는 이벤트를 대기한다. 이런 이벤트가 발생하면, 로컬 웹서버(112)는 리턴 메시지(204)를 웹브라우저(108)로 보낸다. 몇몇 실시예에서, 웹브라우저(108)는 그런 후 바로 또 다른 오픈-엔드 메시지 요청(202)을 로컬 웹서버(112)로 보내어 항상 대기중인 요청이 있게 된다. 이런 식으로, 로컬 웹페이지(112)는 오픈-엔드 메시지 요청(202)을 통해 웹브라우저(108)로 "청하지 않은" 정보를 보낼 수 있다.
다른 한편으로, 사용자가 로컬 유틸리티 컨트롤(120) 중 하나를 선택했을 경우와 같이, 웹브라우저(108)가 로컬 웹서버(112)로 명령을 보낼 준비를 하고 있을 때, 웹브라우저(108)는 단순히 명령(206)을 보낼 것이다. 웹브라우저(108)는 요청을 보내기 위해 초대를 할 필요가 없기 때문에, 명령(206)이 아무 때나 보내질 수 있다. 몇몇 실시예에서, 명령(206)은 http 요청의 일부이다. 명령(206)과 오픈-엔드 메시지 요청(202)을 이용해, 로컬 웹서버(112)와 웹브라우저(108) 간에 연속적인 양방향 통신이 가능해 진다.
몇몇 실시예에서, 웹브라우저(108)는 웹페이지(116) 및/또는 모듈(124)에 의해 요구된 통신들 모두를 용이하게 하기 위해 로컬 웹서버(112)와 다수의 연결을 필요로 한다. 이는 문제를 나타낼 수 있는데, 왜냐하면 어떤 브라우저들은 어떤 하나의 서버에 동신 연결 회수를 제한하기 때문이다. 그러나, 몇몇 경우, 웹페이지(116)는 로컬 유틸리티(110)와의 소정 수준의 상호대화성을 가능하게 하기 위해 서버 연결의 더 많은 최대 회수를 필요로 할 수 있다. 예컨대, 사용자는 하나의 서버에서 다수의 웹페이지들을 오픈시킬 수 있으며, 다수의 웹페이지들은 로컬 유틸리티(110)와 통신하는 로컬 유틸리티 컨트롤(120)을 갖는다. 따라서, 브라우저는 로컬 웹서버(112)에 최대 허용가능한 동시 연결 회수를 빨리 초과할 수 있다. 또한, 대기중인 요청들을 관리하는 것은 지속적으로 수많은 이용가능한 연결들을 점유할 수 있기 때문에, 상술한 오픈-엔드 메시지 요청에 의해 문제가 악화될 수 있다.
이 문제는 다수의 서브도메인들을 통해 로컬 웹서버(112)에 연결함으로써 방지될 수 있다. 구체적으로, 루프백 어드레스와 연결된 도메인은 random1.loopdomain.com, random2.loopdomain.com, 등과 같은 다수의 서브도메인들로 나누어질 수 있다. 몇몇 실시예에서, 도 1에서 도메인 네임 테이블(118)에 도시된 바와 같이, 이들 서브도메인들은 루프백 어드레스(이 경우 127.0.0.1)와 각각 연결된다. 로컬 웹서버(112)와 통신을 개시하도록 의도된 웹페이지(116)에서의 링크들은 이들 서브도메인들을 간에 분배될 수 있어, 웹브라우저(108)로부터 서브도메인들 중 어느 하나로의 어떤 요청이 로컬 웹브라우저(112)로 보내지게 된다. 그리고 요청들이 다른 도메인 네임들로 보내지기 때문에, 웹브라우저(108)는 다른 서버들로 보내지고 있는 것으로 요청을 등록할 것이며, 따라서, 오픈 연결 회수를 제한하지 않을 것이다.
도 3은 로컬 웹서버(112)와 웹브라우저(108) 사이에 통신이 어떻게 확립될 수 있는지를 도시한 블록도로서, 몇몇 실시예에 따라 웹페이지(116)가 보안 프로토콜을 통해 수신된다.
몇몇 예에서, 웹페이지는 하이퍼텍스트 전송규약(https)과 같은 보안 프로토콜을 통해 웹브라우저로 보내진다. 그러나, 웹브라우저는 웹페이지가 https 컨텐츠뿐만 아니라 http 컨텐츠를 포함할 때 사용자에게 경고 또는 주의를 보내도록 구성된다. 따라서, 웹페이지(116)가 https(가령, https://www.Example.com)를 통해 웹브라우저(108)에 의해 수신되나, 로컬 유틸리티 컨트롤러(120)가 정규 http(가령, http://www.loopdomain.com/[control])와 연결되면, 웹브라우저(108)는 경고 메시지를 사용자에게 디스플레이할 수 있다. 따라서, 웹브라우저(108)와 로컬 웹서버(112)가 https를 통해 통신하게 하는 것이 이점적이다. 다른 이점들 중에, 이는 웹브라우저(108)에 경고 메시지를 트리거하는 것을 방지한다.
보안 프로토콜을 통해 웹서버와 자유롭게 통신할 수 있기 전에, 웹브라우저는 웹서버와 보안통신채널을 확립해야 한다. 보안통신채널은 통신보호를 위해 2 이상의 디바이스들 간에 인증 및/또는 보안 세션을 기술한다. 보안통신채널은 2개의 디바이스들 간에 성공적인 인증 루틴을 전제로 한다. 보안통신채널은 원격 서버로부터 클라이언트 컴퓨터로 디지털 인증서를 전달하는 것을 포함하는 루틴을 통해 확립될 수 있다. 몇몇 실시예에서, 웹브라우저(108)와 로컬 웹서버(112)는 이런 타입의 인증 루틴을 이용해 보안통신채널을 확립한다. 구체적으로, 몇몇 실시예에서, 로컬 웹서버(112)는 웹브라우저(108)가 웹서버(112)를 인증하기 위해 웹서버(112)로부터 요청할 수 있는 디지털 인증서(302)를 저장한다. 몇몇 실시예에서, 디지털 인증서(302)는 웹브라우저(108)가 로컬 웹서버(112)로 보내지는 하나 이상의 메시지를 암호화는 공개키를 포함한다.
대표적인 컴퓨터 네트워킹 용도로, 디지털 인증서는 (서브도메인들을 포함한) 단일 도메인과 고유하게 연결된다. 몇몇 경우, 인증이 성공하기 위해 디지털 인증서는 인증서 요청이 보내지는 동일 도메인과 연결되어야 한다. 예컨대, 인증서 요청이 웹브라우저로부터 www.BankPage.com와 연결된 서버로 보내지고, 서버가 www.EvilPage.com와 연결된 디지털 인증서를 반환시키면, 웹브라우저(108)는 요청 도메인(BankPage.com)과 인증서 도메인(EvilPage.com) 간에 불일치가 있음을 인지할 것이다. 이는, 가령, EvilPage.com으로부터 서버가 BankPage.com으로부터 서버로서 마스쿼래딩(masquerading)되면, BankPage.com을 의도한 통신을 인터셉트하려는 시도가 발생할 수 있다. 그러나, 도메인 불일치로 인해, 인증이 실패할 것이고, 웹브라우저는 EvilPage.com으로부터 서버와 더 통신하지 않을 것이다.
상술한 바와 같이, 몇몇 실시예에서, 로컬 유틸리티 컨트롤러(120)는 외부 도메인(가령, loopdomain.com)에 대한 링크들과 연결된다. 따라서, 로컬 웹브라우저(108)가 상술한 인증 프로세스를 이용해 로컬 웹서버(112)와 보안통신채널을 확립하기 위해, 로컬 웹서버(108)는 동일 도메인에 대한 디지털 인증서를 가져야 한다. 따라서, 몇몇 실시예에서, 로컬 웹서버(112)는 로컬 유틸리티 컨트롤 링크들(가령, loopdomain.com)의 동일 도메인과 연결된 디지털 인증서(302)를 저장한다.
로컬 유틸리티 컨트롤 링크가 https 프로토콜을 명시하고 외부 도메인"loopdomain.com" 언급하는 실시예를 도시한 도 3을 다시 참조한다. 예컨대, 로컬 유틸리티 컨트롤(120)은 "재생" 버튼일 수 있고, 다음 링크: https://loopdomain.com/[play command]와 연결될 수 있다. (웹페이지(116)에서 재생버튼의 사용자 선택에 응답하는 것과 같이) 이 링크를 실행할 때, 웹브라우저(108)는 DNS 서버(114)에 제공된 어드레스에서 보안통신채널을 서버와 확립하려 시도할 것이다. 도 3에 도시된 바와 같이, loopdomain.com에 대한 어드레스는 루프백 어드레스이므로, 웹브라우저(108)는 디지털 인증서에 대한 요청을 로컬 웹서버(112)로 보낼 것이다. 응답으로, 로컬 웹서버(112)는 (loopdomain.com과 관련된)디지털 인증서(302)를 웹브라우저(108)로 보낼 것이다. 이 경우, 브라우저(108)는 (외부링크가 상기 도메인에 어드레스되었기 때문에) loopdomain.com으로부터 인정서를 요청하고 로컬 웹사이트(112)로부터 상기 도메인과 관련된 인증서를 수신한다. 따라서, 웹브라우저(108)는 인증서는 요청과 동일한 도메인에 관련된 것임을 확인하고, 이에 따라 이 부분의 인증루틴을 마치고 웹브라우저(108)와 로컬 웹서버(112) 간에 보안통신채널을 확립한다.
몇몇 실시예에서,디지털 인증서(302)는 클라이언트 컴퓨터의 사용자에게 제공될 경우 로컬 웹서버(112)와 번들된다. 몇몇 실시예에서, 디지털 인증서(302)는 복사되고 로컬 웹서버(112)의 모든 인스턴스에 포함된다. 몇몇 실시예에서, 디지털 인증서(302)는 와일드카드 인증서이므로, 인증서는 부모 도메인(가령, random1.loopdomain.com, random2.loopdomain.com, 등)과 관련된 임의의 서브도메인을 인증한다. 다른 실시예에서, 사용자가 로컬 웹서버를 먼저 실행할 때 디지털 인증서를 얻고/얻거나 설치한다. 또 다른 실시예에서, 사용자는 디지털 인증서를 주기적으로 업데이트하고/하거나 그렇지 않으면 대체한다.
상기 논의는 https 프로토콜 면에서 인증 프로세스를 설명한 것이나, 개시된 개념들은 또한 다른 보안 프로토콜 및 인증 기술에도 적용된다. 더욱이, https 실행을 위한 디지털 인증서가 설명되어 있으나, 구체적으로 상술한 것들 대신에, 다른 타입의 인증 토큰, 인증서, 및 루틴이 이용될 수 있다. 인증 프로세스의 소정 태양들을 상술하였으나, 언급되지 않은 다른 단계 및/또는 절차들이 포함될 수 있다. 예컨대, 인증 프로세스는 보안통신채널에 사용되는 암호화 코드 또는 키를 확립할 수 있다.
도 4는 클라이언트 서버 환경에서 다수의 클라이언트 컴퓨터 (102-1 - 102-n)를 도시한 블록도이다. 상술한 바와 같이, 디지털 인증서(302)는 각 클라이언트컴퓨터(102-n)에 설치된 로컬 웹서버에 포함될 수 있다. 예컨대, 회사가 로컬 유틸리티(가령, 미디어 플레이어 애플리케이션)와 관련된 로컬 웹서버를 포함한 미디어 플레이어 소프트웨어를 배포하면, 각 소프트웨어 패키지는 디지털 인증서(302)의 복사를 포함할 것이다. 따라서, 동일한 디지털 인증서(302)(또는 동일한 하나의 디지털 인증서 사본)이 각 클라이언트 컴퓨터(102-n)에 있게 된다.
디지털 인증서(302)는 일반적으로 밀접해서 보호되며, 이들은 인증서를 소유한 기관 밖으로는 공유되지 않도록 되어 있다. 따라서, 디지털 인증서(302)는 도 3-4에 설명된 바와 같이 사용될 경우 손상된 것을 간주될 수 있는데, 이는 사본이 인증서 소유자에 의해 소유되지 않거나 통제되지 않는 다른 컴퓨터에 있기 때문이다. 실제로 클라이언트 컴퓨터는 인증서가 발행된 당사자가 아닌 소프트웨어 패키지의 사용자들과 관련 있다.
일반적으로, 손상된 보안 인증서는 심각한 보안 우려이다. 예컨대, 온라인 상업 웹사이트의 체크아웃 페이지에 대한 디지털 인증서가 손상되면, 클라이언트와 상업 엡사이트의 서버 간에 통신이 악의적인 제 3 자에 의해 인터셉트될 수 있다. 그러나, 인증서가 손상된 사실은 상술한 실시예들에서 유사한 보안 위험을 발생하지 않는다. 오히려, 암호화된 통신이 클라이언트 컴퓨터 그 자체에 간단히 루프백되어, 보안 메시지들이 실제로는 결코 클라이언트 컴퓨터를 떠나지 않는다. 이들 내부 통신은 쉽게 인터셉트되지 않거나 그렇지 않으면 악의적 당사자들에 의해 변경되지 않는다.
어떤 경우, 로컬 웹서버(112)는 악의적 웹페이지가 바람직하지 못한 조작을 수행하거나 민감한 데이터에 액세스하기 위해 로컬 유틸리티(110)와의 통신을 막기 위해 승인모듈(124)로부터 명령 및 요청만을 수신해야 한다. 예컨대, 로컬 유틸리티(110)가 카메라 컨트롤 애플리케이션이면, 악의적 웹페이지는 부착된 웹캠을 활성화시키겨 미인가 이미지들을 캡쳐하려고 시도할 수 있다. 또는, 악의적 웹페이지는 미디어 플레이어로부터 미디어 액세스 히스토리를 추출하려 시도할 수 있다. 따라서, 로컬 웹서버(112)는 웹페이지로부터의 요청이 승인되었는지 판단할 수 있어야 하고, 승인되지 않은 그런 요청들을 막아야 한다. 도 5를 참조로 본 발명의 실시예에 따른 예시적인 방법을 설명한다.
도 5는 몇몇 실시예에 따른 클라이언트-서버 환경의 블록도를 도시한 것이다. 클라이언트-서버 환경은 클라이언트 컴퓨터(102), 웹서버(104), 모듈서버(122), 토큰서버(502), 및 인증서버(504)를 포함하고, 각각은 네트워크(106)에 연결되어 있다. 클라이언트 컴퓨터(102)는 도 1에 참고로 상술한 바와 같이 웹브라우저(108), 로컬 유틸리티(110), 및 로컬 웹서버(112)를 포함한다. 몇몇 실시예에서, 모듈서버(122), 토큰서버(502), 및 인증서버(504)는 공통 엔티티 또는 서버시스 공급자와 모두 연결된다.
몇몇 실시예에서, 토큰 패싱 절차는 아래에 기술된 바와 같이 도 5의 클라이언트-서버 환경을 참조로 모듈(124)과 로컬 웹서버(112) 간에 인증된 통신을 확립하는데 사용된다.
웹브라우저(108)는 웹서버(104)로부터 웹페이지(116)를 수신하도록 구성된다. 몇몇 실시예에서, 웹페이지(116)는 로컬 유틸리티 컨트롤(120)을 포함하는 모듈(124)에 대한 참조를 포함하며, 상기 모듈(및/또는 로컬 유틸리티 컨트롤(120) 및 로컬 유틸리티 컨트롤 링크를 포함한 모듈의 컨텐츠)은 모듈서버(122)로부터 수신된다. 몇몇 실시예에서, 웹서버(104) 및 모듈서버(122)는 다른 도메인들과 연결되어 있다. 몇몇 실시예에서, 모듈에 대한 참조는 모듈서버(122)의 URL과 관련된 html 아이프레임 요소이다.
웹브라우저(108)가 웹서버(104)로부터 웹페이지(116)를 수신하면, 웹브라우저(108)는 모듈서버(122)와 접촉해 모듈(124)을 수신한다. 몇몇 실시예에서, 모듈(124)에 대한 요청을 수신하는데 응답해, 모듈서버(122)는 토큰서버(502)로부터 제 1 토큰을 요청하고 수신한다. 모듈서버(122)는 그런 후 모듈(124)과 제 1 토큰을 웹브라우저(108)로 보낸다. 몇몇 실시예에서, 토큰은 http 통신에 포함되거나 그렇지 않으면 컴퓨터들 간에 공유될 수 있는 문자열, 파일, 또는 임의의 다른 정보이다.
다음, 제 1 토큰은 웹브라우저(108)로부터 로컬 웹서버(112)로 전송된다. 몇몇 실시예에서, 모듈(124)은 모듈(124)에 포함된 링크의 실행에 의해 개시된 http 요청에 따라 제 1 토큰을 로컬 웹서버(112)로 보내도록 구성된다. 요청시 로컬 웹서버(112)에 토큰이 전혀 포함되지 않으면, 요청은 무시될 것이다. 제 1 토큰이 요청에 포함되면, 토큰은 인증을 위해 로컬 웹서버(112)로부터 로컬 유틸리티(110)로 보내진다.
몇몇 실시예에서, 제 1 토큰을 인증하기 위해, 로컬 유틸리티(110)는 제 1 토큰을 인증서버(504)로 보낸다. 인증서버(504)는 토큰서버(502)를 이용해 토큰서버(502)가 실제로 제 1 토큰을 발행했는지 확인한다. 그런 후 인증서버(504)가 제 1 토큰이 진짜인지 (가령, 제 1 토큰이 토큰서버(502)에 의해 모듈(124)로 발행되었는지) 로컬 유틸리티(110)에 응답한다.
인증서버(504)로부터 응답이 제 1 토큰이 토큰 서버(502)에 의해 발행되지 않았음을 나타내면, 로컬 유틸리티는 웹브라우저(108)로부터 요청을 무시할 것이고, 포함된 임의의 명령들에 대해 다른 동작을 취한다. 응답이 제 1 토큰이 진짜인 것을 나타내면, 로컬 유틸리티(110)(및/또는 로컬 웹브라우저(112))는 제 2 토큰을 발생할 것이고 웹서버(112)는 제 2 토큰을 모듈(124)로 보낸다. 모듈(124)은 그런 후 로컬 웹서버(112)에 대한 모든 연속 요청들에 제 2 토큰을 포함하고, 로컬 웹서버(112)는 제 2 토큰을 포함한 요청에 대해서만 동작을 취할 것이다.
몇몇 실시예에서, 로컬 웹서버(112)와 웹브라우저(108) 간에 단지 허용가능한 통신은 모듈서버(122)에 의해 제공된 모듈로부터 발생되는 통신들이다. 상술한 토큰 전송방법은 따라서 웹페이지와 로컬 웹서버(112) 간에 미인가 통신을 막는데, 유효한 제 2 토큰을 포함한 요청들만 인식될 것이며 유효한 제 2 토큰은 인증서버(504)에 의해 제 1 토큰의 인증 후에만 획득될 수 있기 때문이다.
상기는 사용자가 원격 소스로부터 수신된 웹페이지를 통해 로컬 유틸리티(110)와 인터랙트하도록 웹브라우저(108)와 로컬 유틸리티(110) 간에 연속 및 양방향 통신을 가능하게 하는 방법의 태양을 기술하고 있다. 일태양은 웹페이지(116)에 로컬 유틸리티 컨트롤러(120)를 제공하는 것에 관한 것이다. 도 6a 및 도 6b를 참조로 로컬 유틸리티 컨트롤(120)과 모듈(124)의 태양들을 설명한다.
도 6a는 몇몇 실시예에 따른 웹페이지(600)와 모듈(124)을 도시한 블록도이다. 모듈(124)은 미디어 플레이어인 로컬 유틸리티(110)에 대한 젱보를 통제 및 제공하기 위한 다수의 로컬 유틸리티 컨트롤(120)을 포함한다. 몇몇 실시예에서, 로컬 유틸리티 컨트롤(120)은 플레이백 컨트롤(602), 재생목록 정보(604), 및 현재 재생 윈도우(606)를 포함한다. 몇몇 실시예에서, 모듈(124)은 이미지(가령, 앨범 아트), 텍스트(가령, 가사), 스크롤링 및/또는 동기화된 텍스트(가령, 가라오케 디스플레이), 비디오(가령, 뮤직 비디오), 등과 같은 기타 정보를 디스플레이할 수 있다. 다른, 더 많거나 더 적은 컨트롤들을 포함한 로컬 유틸리티 컨트롤(120)의 다른 조합들도 또한 가능하다. 더욱이, 모듈(124)에서 로컬 유틸리티 컨트롤(120)의 타입은 이들이 통신하도록 구성되는 로컬 유틸리티(110)의 특별한 타입에 따르게 될 것이다.
상술한 바와 같이, 몇몇 실시예에서, 모듈(124)은 html 아이프레임 요소에 의해 정의될 수 있는 인라인 프레임이다. 몇몇 실시예에서, 인라인 프레임의 컨텐츠들은 원격 서버(가령, 모듈서버(122))로부터 수신된다. 몇몇 실시예에서, 웹페이지(600)의 html은 정확히 로컬 유틸리티 컨트롤(120)이 모듈(120)에 포함되어야 하는 것을 모듈서버(122)에 명시한 링크를 포함한다. 몇몇 실시예에서, 링크는 또한 모듈(124)의 다른 태양을 명시한다. 모듈(124)이 가령 미디어 플레이어 위젯이면, 링크는 위젯이 사용자에 어떤 노래를 제공해야 하는지 명시할 수 있다.
보다 상세하게, 웹페이지 생성자는 웹페이지 방문자가 어떤 노래, 재생목록, 앨범, 라디오 방송국 등을 재생하게 하도록 구성된 위젯을 웹페이지(600)에 포함하고 싶어할 수 있다. 이런 식으로, 웹페이지(600)는 그 방문객들에게 맞춤화되고 고유한 사용자 경험을 제공할 수 있다. 따라서, 웹 생성자는 웹페이지에 포함하기 위한 맞춤화 모듈을 제공하는 모듈 생성 서비스를 이용할 수 있고 정확히 어떤 노래 또는 노래들(또는 다른 미디어 타입)이 모듈(124)에 포함되어야 하는지를 명시할 수 있다. 서비스는 생성자가 요청한 특정 모듈 컨텐츠에 해당하는 고객 링크(가령, URL)을 제공할 수 있다. 웹페이지(600)에 이 고객 링크를 포함함으로써, 모듈은 정확히 생성자가 요청한 것으로 파퓰레이팅될 것이다. 그리고 상기에서 상세히 설명한 바와 같이, 방문객이 모듈(120)에 제공된 노래의 재생을 요청하면, 웹페이지(600)는 노래의 재생을 시작하도록 로컬 유틸리티(110)와 통신할 것이다. (로컬 유틸리티(110)가 미디어 플레이어인 실시예에서, 미디어 플레이어는 사용자의 선택을 재생하기 위해 로컬로 저장된 파일들에 액세스할 수 있거나, 외부 미디어 공급자로부터 미디어를 수신할 수 있다. 몇몇 실시예에서, 미디어 공급자는 모듈 생성 서비스와 연결된다.)
몇몇 실시예에서, 고객 링크는 모듈서버(122)와 연결된 도메인에 어드레스되는 URL이고, 모듈서버(122)에 의해 인식되는 고유의 문자열을 포함한다. 몇몇 실시예에서, 고유 문자열은 특정 컨텐츠가 모듈(124)에 대한 고객 링크에 제공하기 위한 요청에 응답해 모듈서버(122)에 의해 제공된다. 예컨대, 웹페이지 생성자는 생성자의 좋아하는 앨범 또는 재생목록과 함께 파퓰레이팅된 모듈을 (모듈서버(122))로부터) 요청할 수 있다. 답례로, 모듈서버(122)는 고유 문자열을 포함한 고객 링크를 생성하고 이를 웹페이지 생성자에 제공한다. (웹브라우저(108)가 모듈서버(122)에 문자열을 포함한 http 요청을 만들게 하는) 고객 링크가 실행되면, 모듈서버(122)는 문자열을 기초로 요청된 모듈 컨텐츠를 결정하고, 상기 컨텐츠를 웹브라우저(108)에 제공한다.
몇몇 실시예에서, 모듈(124)의 컨텐츠는 웹페이지(600)에 의해 자동으로 그리고 실시간으로 확립된다. 몇몇 실시예에서, 웹페이지(600)는 동적으로 발생된 정보를 기초로 모듈서버(122)로부터 고객 링크를 요청하는 코드(가령, 스크립트)를 포함한다. 예컨대, 웹페이지(600)는 노래의 목록을 디스플레이할 수 있고, 사용자가 자신이 좋아하는 것에 대해 투표하게 할 수 있다. 웹브라우저에 의해 로딩될 경우, 웹페이지(600)는 현재 상위 노래들을 기초로 모듈서버(122)로부터 고객 링크를 요청할 수 있다. 따라서, 투표결과가 시간에 걸쳐 변함에 따라, 혹은 새 노래가 추가되고 다른 노래들이 투표 목록에서 빠짐에 따라, (웹페이지(600)가 로딩될 때 생성되는) 모듈의 컨텐츠가 이에 따라 변하게 된다.
로컬 유틸리티(110)가 미디어 플레이어인 몇몇 실시예에서, 모듈(124)은 기설정된 미디어 옵션들을 사용자에게 제공하지 않고, 그보다는 미디어 플레이어의 현재 상태에 대한 윈도우로서 역할한다. 예컨대, 웹페이지가 명시한 노래, 앨범, 또는 재생목록을 보여주는 대신, 모듈(124)은 사용자의 현재 선택한 재생목록과 "현재 재생중"인 정보를 보여준다. 따라서, 모듈(124)은 사용자에 대한 편의로서 웹페이지(600)에 의해 단순히 제공될 수 있어, 사용자는 자신의 미디어 플레이어를 제어하기 위해 웹페이지(600)로부터 나가 네비게이션할 필요가 없게 된다.
도 6b는 몇몇 실시예에 따른 모듈(124)과 웹페이지(610)를 도시한 블록도이다. 웹페이지(600)와 마찬가지로, 웹페이지(610)는 현재 재생 윈도우(606), 재생목록 정보(604), 및 플레이백 컨트롤(602)을 포함한 로컬 유틸리티 컨트롤(120)을 포함한 모듈(124)을 포함한다. (상술한 바와 같이, 로컬 유틸리티 컨트롤(120)의 다른 많은 조합들이 모듈(124)에 포함될 수 있다.) 웹페이지(610)는 또한 다수의 모듈생성링크들(612)을 포함한다. 몇몇 실시예에서, 모듈생성링크들(612)은 모듈생성링크들(612)이 실행될 경우 모듈서버(122)로부터 고객 링크를 요청할 코드(가령, 스크립트)과 연결된다. 몇몇 실시예에서, (웹브라우저(108)가 모듈서버(122)에 문자열을 포함한 http 요청을 하게 하며) 모듈생성링크들(612)이 선택되면, 모듈서버(122)는 요청에 포함된 정보에 따라 모듈을 생성한다. 모듈은 그런 후 사용자에 디스플레이를 위해 웹페이지(610)에 포함될 수 있다.
몇몇 실시예에서, 모듈생성링크들(612)은 다른 사람들 또는 엔티티들에 의해 공유된 정보와 연결된다. 몇몇 실시예에서, 모듈생성링크들(612)은 소셜 네트워크에 의해 제공된 정보와 연결될 수 있다. 예컨대, 웹페이지(610)는 사용자가 (미디어 액세스 히스토리, 저장된 재생목록, 좋아하는 노래 등을 포함한)사용자들의 미디어 소비에 대한 정보와 같이 정보를 공유할 수 있는 소셜 네트워크와 연결될 수 있다. 몇몇 실시예에서, 사용자는 웹페이지에 정보를 포스팅 및/또는 자신의 개인정보에 소셜 네트워크에 의한 엑세싱을 하게 함으로써(가령, 사용자의 미디어 플레이어 또는 사용자가 가입한 미디어 서비스로부터 정보를 검색함으로써) 이런 정보를 공유한다.
웹페이지(610) 또는 웹페이지 공급자는 이런 정보를 이용해 사용자 정보를 기초로 한 모듈생성링크(612)를 생성 및/또는 제공할 수 있다. 모듈생성링크(612)는 그런 후 다른 사용자들에 소개될 수 있어 사용자들이 이 정보를 기초로 모듈을 생성할 수 있다. (프라이버시를 보호하기 위해, 한 사용자의 정보를 기초로 한 모듈생성링크(612)는 사용자가 이런 공유를 승인한 다른 이들에게만 제공될 수 있다.) 도 6b에 도시된 바와 같이, 모듈생성링크(612)는 사용자가 또 다른 사용자의 톱 트랙, 또 다른 사용자의 좋아하는 재생목록, 및/또는 또 다른 사용자가 현재 재생중인 것을 기초로 모듈을 생성하게 할 수 있다. 모듈생성링크(612)는 또한 사용자가 또 다른 사용자"인 것 같은" 라디오 방송국을 시작하게 할 수 있다.
사용자의 "상위" 또는 "좋아하는" 노래들 또는 재생목록들은 가장 자주 재생되고, 가장 최근에 재생되며, 가장 높은 순위를 차지하는 등의 것들을 포함할 수 있다. 도 6b에 도시돈 예시적인 모듈생성링크(612)가 "트랙" 및 "재생목록"을 언급하고 있으나, 이들 링크들은 노래, 재생목록, 앨범, 아티스트, 장르, 라디오 방송국, 음악 주제 등과 같은 임의의 미디어 정보 또는 분류를 바탕으로 할 수 있다.
몇몇 실시예에서, 또 다른 사용자가 "현재 재생중"인 것은 상기 사용자에 대해 최근에 생성된 모듈을 기초로 한다. 예컨대, 몇몇 웹페이지들은 모듈을 요청 및/또는 디스플레이할 수 있으나, 생성된 후 모듈(또는 로컬 유틸리티)의 실시간 상태를 식별할 수 없다. 따라서, 노래 또는 재생목록이 실제로 어떤 주어진 사용자에 활성화된 것으로 확실히 판단할 수 없다면, 웹페이지 및/또는 웹페이지 공급자는 어떤 주어진 사용자를 위해 어떤 모듈이 최근에 생성되었는지에 대한 기록을 가질 수 있다.
몇몇 실시예에서, 모듈생성링크(612)는 모듈(124)에 포함할 노래, 아티스트, 장르 등을 판단하기 위한 음악선택 알고리즘을 이용할 수 있다. 예컨대, 사용자가 특정 사용자일 것 같은 라디오 방송국을 시작하도록 구성된 모듈생성링크를 선택하면, 상기 사용자가 "좋아할 것 같은" 것 (즉, 사용자의 취향 및/또는 선호를 기초로 한 음악적 핑거프린트)을 판단하고 그런 후 설명과 일치하는 노래를 선택하는 것이 필요할 수 있다. 몇몇 실시예에서, 사용자의 음악적 핑거프린트는 가장 자주 재생되거나, 가장 최근에 재생되거나, 가장 높은 순위의 노래, 아티스트, 장르, 등을 기초로 한다. 음악적 핑거프린트는 그런 후 모듈(124)에 포함하기 위해 음악(가령, 노래 식별자)을 제공하는 음악 선택 알고리즘을 살포하는데 이용된다. 몇몇 실시예에서, 음악 선택 알고리즘은 웹서버(104), 모듈서버(122), 웹페이지(610)의 공급자, 또는 임의의 다른 원격소스에 의해 제공된다.
도 7은 몇몇 실시예에 따른 로컬 유틸리티를 제어하기 위한 방법(700)을 나타낸 흐름도이다. 상기 방법(700)은 적어도 하나의 프로세서와 메모리를 갖는 클라이언트 컴퓨터(가령, 클라이언트 컴퓨터(102))에서 수행되며, 메모리는 프로세서가 실행하기 위한 명령어를 저장한다. 몇몇 실시예에서, 상기 방법(700)은 로컬 유틸리티(110), 로컬 웹서버(112), 및/또는 웹브라우저(108) 중 어느 하나를 포함한 로컬 컴퓨터(102)에서 수행된다.
클라이언트 컴퓨터에서 로컬 유틸리티는 애플리케이션에서 발생하고 제 1 토큰을 포함한 제 1 요청을 수신하고, 애플리케이션은 제 1 서버로부터 제 1 토큰과 복수의 링크들을 포함한 웹페이지를 수신한다. 복수의 링크들은 제 2 서버로부터 애플리케이션에 의해 수신된다(702).
몇몇 실시예에서, 로컬 유틸리티는 클라이언트 컴퓨터에 의해 저장되고 실행되는 소프트웨어이다. 몇몇 실시예에서, 애플리케이션은 웹브라우저(108)와 같이 원격 서버로부터 수신된 정보를 디스플레이 및/또는 렌더링할 수 있다.
몇몇 실시예에서, 웹페이지는 하이퍼텍스트 마크업 언어(HTML) 및/또는 프로그래밍 언어, 스크립터, 실행가능 기능들의 다른 타입들, 표준 또는 스타일 등에 코딩된다. 몇몇 실시예에서, 복수의 링크들과 제 1 토큰이 웹페이지에 있는 모듈에 있다. 몇몇 실시예에서, 모듈은 아이프레임이다. 상술한 바와 같이, 복수의 링크들은 URLs 일 수 있고, 하이퍼텍스트 전송규약, 또는 하이퍼텍스트 전송규약 보안을 포함한 임의의 적절한 프로토콜을 명시할 수 있다. 몇몇 실시예에서, 복수의 링크들 중 하나 이상이 루프백 네트워크 어드레스로 바뀌는 도메인(가령, 127.0.0.1, *.loopdomain.com, 등)과 연결된다.
몇몇 실시예에서, 웹페이지는 하나 이상의 복수의 링크들과 각각 연결된 하나 이상의 로컬 유틸리티 컨트롤 요소들을 포함한다. 로컬 유틸리티 컨트롤 요소들의 예를 상술하였다. 몇몇 실시예에서, 사용자에 의해 로컬 유틸리티 컨트롤 요소들(가령, 컨트롤 버튼)이 선택될 수 있다; 몇몇 실시예에서, 이들은 선택될 수 없고, 이들은 단지 상태정보 또는 사용자에 다른 출력(가령, 상태 윈도우)을 제공한다. 로컬 유틸리티가 미디어 플레이어인 실시예에서, 로컬 유틸리티 컨트롤 요소는 미디어 재생 컨트롤 요소들일 수 있고, 로컬 유틸리티가 미디어 파일 재생; 미디어 파일 중지, 미디어 파일 잠깐 멈춤, 미디어 파일 빨리 감기, 미디어 파일 되감기, 미디어 파일 건너뛰기, 재생목록의 플레이백 순서 변경, 재생목록에 미디어 파일 추가, 미디어 파일 구매, 로컬 라이브러리에 미디어 파일 추가, 및 재생목록에서 미디어 파일 삭제 중 하나 이상을 수행하게 할 수 있다.
몇몇 실시예에서, 로컬 유틸리티는 음악 및/또는 비디오와 같은 미디어를 저장, 재생 및/또는 편집할 수 있는 미디어 플레이어이다. 몇몇 실시예에서, 로컬 유틸리티는 다운로드 매니저이다. 몇몇 실시예에서, 로컬 유틸리티는 로컬 유틸리티와 결합되고 통신되는 웹서버(가령, 로컬 웹서버(112))를 포함한다. 몇몇 실시예에서, 제 1 토큰을 포함한 제 1 요청이 웹서버에서 수신되며, 상기 웹서버는 제 1 토큰을 로컬 유틸리티로 보낸다.
도 7로 다시 돌아가, 상기 방법(700)은 제 1 토큰을 제 3 서버로 보내는 단계를 포함한 제 1 토큰을 인증하는 단계(706)를 더 포함한다. 몇몇 실시예에서, 제 1 토큰을 인증하는 단계는 로컬 유틸리티에서 제 3 서버로 제 1 토큰을 보내는 단계(707), 및 로컬 유틸리티에서, 제 3 서버로부터 인증 메시지를 수신하는 단계(708)를 포함한다. 몇몇 실시예에서, 인증 메시지는 제 1 토큰이 제 2 서버에 의해 발행된 것을 나타낸다. 몇몇 실시예에서, 제 1 토큰은 로컬 유틸리티로부터 제 3 서버로 보내진다.
상기 방법(700)은 제 1 토큰을 인증하는 단계에 응답해 로컬 유틸리티(700)에서 제 2 토큰을 발생하는 단계를 더 포함한다(710). 제 2 토큰은 애플리케이션으로부터 연이은 요청들에 포함하을 위해 애플리케이션에 보내진다(712). 몇몇 실시예에서, 제 2 토큰은 로컬 유틸리티의 로컬 웹서버에 의해 애플리케이션에 보내진다.
몇몇 실시예에서, 상기 방법은 제 3 토큰을 포함한 제 2 요청을 수신하는 단계를 포함한다(714). 몇몇 실시예에서, 제 2 요청은 애플리케이션(가령, 웹브라우저(108))으로부터 보내지고, 로컬 유틸리티(가령, 로컬 유틸리티(110) 및/또는 로컬 웹서버(112)에 의해 수신된다. 몇몇 실시예에서, 제 2 요청은 제 3 토큰 및 하나 이상의 로컬 유틸리티 컨트롤 명령, 하나 이상의 로컬 유틸리티 상태 요청, 또는 이들의 임의의 조합을 포함한 html 요청이다. 몇몇 실시예에서, 요청은 로컬 유틸리티 및/또는 로컬 웹서버에 의해 인식될 수 있고 상기 로컬 유틸리티 및/또는 로컬 웹서버가 어떤 동작을 취하게 하는 문자열이다. 몇몇 실시예에서, 페이로드는 파일 또는 다른 데이터 구조이다.
몇몇 실시예에서, 상기 방법은 제 3 토큰이 제 2 토큰과 일치하는 것을 검증하는 단계를 포함한다(716). 제 2 및 제 3 토큰이 일치하면, 제 2 요청의 컨텐츠를 기초로 하나 이상의 동작들이 취해진다(718). 제 2 및 제 3 토큰이 일치하지 않으면, 제 2 요청의 컨텐츠를 기초로 어떠한 동작도 취해지지 않는다(720). 제 3 토큰이 제 2 토큰과 일치하는 것(즉, 동일한 토큰임)을 검증함으로써, 로컬 유틸리티는 (도 5를 참조로 상술한 바와 같이) 제 1 토큰을 이용해 이전에 인증된 동일한 모듈에 의해 제 2 요청이 발행된 것을 검증한다.
상기 방법(700)은 제 1 요청 및 제 2 요청을 수신하는 단계를 포함할 수 있다. 몇몇 실시예에서, 애플리케이션에서 복수의 링크들 중 하나를 실행하는데 응답해 제 1 요청 또는 제 2 요청 중 적어도 하나가 애플리케이션으로부터 로컬 유틸리티로 보내진다. 예컨대, 제 1 요청 및 제 2 요청 중 어느 하나 또는 모두가 링크와 연결된 컨트롤 요소의 사용자 선택에 응답하거나, 프로세싱, 디스플레잉, 또는 웹페이지 렌더링과 결부해 링크를 실행하는 애플리케이션(가령, 웹브라우저)에 응답해 애플리케이션에 의해 보내질 수 있다.
실행된 링크가 사용자 선택가능한 실시예에서, 애플리케이션은 링크를 실행하기 전에 링크의 사용자 선택을 수신하고 사용자 선택에 대한 응답으로 애플리케이션으로부터 적어도 하나의 제 1 요청 또는 제 2 요청을 로컬 유틸리티로 보낼 수 있다. 몇몇 실시예에서, 상술한 바와 같이 로컬 유틸리티는 컨트롤 중 하나를 선택함으로써, 사용자가 링크를 선택한다. 실행된 링크가 사용자가 선택할 수 없는 실시예에서, 클라이언트 컴퓨터는 웹페이지를 프로세스할 수 있고, 웹페이지의 프로세싱에 응답해 애플리케이션으로부터 적어도 하나의 제 1 요청 또는 제 2 요청을 로컬 유틸리티로 보낼 수 있다.
도 8은 몇몇 실시예에 따른 클라이언트 컴퓨터(102)를 도시한 블록도이다. 클라이언트 컴퓨터(102)는 일반적으로 프로그램을 실행하기 위한 하나 이상의 처리유닛들(CPUs, 때로 프로세서라고 함)(802), 하나 이상의 네트워크 또는 기타 통신 인터페이스(804), 사용자 인터페이스(805), 메모리(810), 및 이들 구성부품들을 상호연결시키기 위한 하나 이상의 통신버스들(810)을 포함한다. 통신버스(801)는 시스템 구성부품들 간에 통신을 상호연결시키고 컨트롤하는 회로(때로 칩셋이라고 함)를 포함할 수 있다. 몇몇 실시예에서, 사용자 인터페이스(805)는 디스플레이(806)와 입력 디바이스(들)(807)(가령, 키보드, 마우스, 터치스크린, 키패드 등)을 포함한다.
메모리(810)는 DRAM, SRAM, DDR RAM 또는 기타 랜덤 액세스 고체상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고; 대표적으로 하나 이상의 자기디스크 저장장치, 광디스크 저장장치, 플래시 메모리 디바이스, 또는 기타 비휘발성 고체상태 저장장치와 같은 비휘발성 메모리를 포함한다. 메모리(810)는 선택적으로 CPU(s)(802)로부터 원격에 위치된 하나 이상의 저장장치를 포함한다. 메모리(810) 또는 대안으로 메모리(810) 내에 있는 비휘발성 메모리 디바이스(들)은 비일시적 컴퓨터 판독가능 저장매체를 포함한다. 몇몇 수단에서, 메모리(810) 또는 메모리(810)의 컴퓨터 판독가능 저장매체는 하기의 프로그램들, 모듈들 및 데이터 구조들 또는 그 서브세트를 저장한다:
· 다양한 기본 시스템 서비스들을 다루고 하드웨어 종속 태스크를 수행하기 위한 절차들을 포함하는 운영시스템(812);
· 하나 이상의 (유무선) 통신 인터페이스(804) 및 인터넷, 기타 WAN((Wide Area Network), LAN(Local Area Network), MAN(Metropolitan Area Networks) 등과 같은 하나 이상의 통신 네트워크(106)를 통해 클라이언트 컴퓨터(102)를 다른 컴퓨터들(가령, 웹서버(104), 모듈서버(122), 토큰서버(502), 및/또는 DNS 서버(114))에 연결하는데 이용되는 통신모듈(814);
·입력장치(들)(807)을 통해 사용자로부터 명령을 수신하고 디스플레이 디바이스(806)에 사용자 인터페이스 객체를 발생하는 사용자 인터페이스 모듈(816)
· 정보 자원을 수신하고 디스플레이하며, 웹서버(가령, 웹서버(104), 모듈서버(122), DNS서버(114) 및/또는 로컬 웹서버(112))와 통신하도록 구성된 웹브라우저(108);
· 하나 이상의 컴퓨터 기반의 기능들을 사용자에 제공하는 로컬 유틸리티(110); 및
· 웹브라우저(108)와 같이, 로컬 유틸리티(110) 및/또는 다른 소스들과 통신하는 로컬 웹서버(112).
몇몇 실시예에서, 웹브라우저(108)는 임의의 프로그램, 소프트웨어, 또는 정보 자원을 수신 및/또는 디스플레이할 수 있는 애플리케이션이다. 몇몇 실시예에서, 정보자원은 웹페이지이다. 몇몇 실시예에서, 웹페이지는 하이퍼텍스트 마크업 언어로 작성되거나 이를 포함하나, 웹페이지는 또한 추가 및/또는 다른 언어들을 포함하거나 작성될 수 있다.
몇몇 실시예에서, 로컬 유틸리티(110)는 임의의 프로그램, 소프트웨어, 또는하나 이상의 컴퓨터 기반의 기능들을 사용자에게 제공하는 애플리케이션이다. 몇몇 실시예에서, 로컬 유틸리티는 미디어 플레이어이다. 몇몇 실시예에서, 로컬 유틸리티는 다운로드 매니저이다. 몇몇 실시예에서, 로컬 유틸리티는 카메라 또는 프린터 컨트롤 소프트웨어이다. 몇몇 실시예에서, 로컬 유틸리티는 미디어 편집기이다. 로컬 유틸리티(110)는 로컬 웹서버(112) 뿐만 아니라 다른 것들 가운데 웹서버(104), 모듈서버(122), 토큰서버(502), 및 인증모듈(504)과 같은 다른 컴퓨터, 서버, 및 시스템과 통신할 수 있다.
몇몇 실시예에서, 로컬 웹서버(112)는 웹브라우저(108)로부터 정보를 수신하고, 정보를 로컬 유틸리티(110)에 보낸다. 웹브라우저(108)로부터 수신된 정보는 상기에 설명되어 있다. 몇몇 실시예에서, 정보는 하나 이상의 http 요청이다.
몇몇 실시예에서, 상기 식별된 프로그램 또는 모듈은 도 1-6을 참조로 설명된 것들을 포함한 상술한 기능 또는 방법을 수행하기 위한 명령어 세트에 해당한다. 명령어 세트는 하나 이상의 프로세서(가령, CPU 802)에 의해 실행될 수 있다. 상기 식별된 모듈 또는 프로그램(즉, 명령어 세트)은 별개의 소프트웨어 프로그램, 절차, 또는 모듈로서 실행될 필요가 없으며, 따라서, 이들 프로그램 또는 모듈의 다양한 서브세트들이 조합될 수 있거나 그렇지 않으면 다양한 실행에서 재배열될 수 있다. 몇몇 실행에서, 메모리(810)는 상기 식별된 모듈 및 데이터 구조들의 서브세트를 저장한다. 더욱이, 메모리(810)는 상술하지 않은 추가 모듈 및 데이터 구조를 저장할 수 있다.
도 9는 몇몇 실시예에 따른 모듈서버(122)를 도시한 블록도이다. 모듈서버(122)는 일반적으로 프로그램(가령, 메모리(910)에 저장된 프로그램)을 실행하기 위한 하나 이상의 프로세서 유닛(CPUs, 때로 프로세서라고 함)(902), 하나 이상의 네트워크 또는 기타 통신 인터페이스(904), 선택적 사용자 인터페이스(905), 메모리(910), 및 이들 구성요소들을 상호연결하기 위한 하나 이상의 통신버스(901)를 포함한다. 통신버스(901)는 시스템 구성요소들 간에 통신을 상호연결하고 제어하는 회로(때로 칩셋이라고 함)를 포함할 수 있다. 몇몇 실시예에서, 사용자 인터페이스(905)는 디스플레이(906)와 입력장치(들)(907)(가령, 키보드, 마우스, 터치스크린, 키패드 등)을 포함한다.
메모리(910)는 DRAM, SRAM, DDR RAM 또는 기타 랜덤 액세스 고체상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고; 대표적으로 하나 이상의 자기디스크 저장장치, 광디스크 저장장치, 플래시 메모리 디바이스, 또는 기타 비휘발성 고체상태 저장장치와 같은 비휘발성 메모리를 포함한다. 메모리(910)는 선택적으로 CPU(s)(902)로부터 원격에 위치된 하나 이상의 저장장치를 포함한다. 메모리(910) 또는 대안으로 메모리(910) 내에 있는 비휘발성 메모리 디바이스(들)은 비일시적 컴퓨터 판독가능 저장매체를 포함한다. 몇몇 수단에서, 메모리(910) 또는 메모리(910)의 컴퓨터 판독가능 저장매체는 하기의 프로그램들, 모듈들 및 데이터 구조들 또는 그 서브세트를 저장한다:
· 다양한 기본 시스템 서비스들을 다루고 하드웨어 종속 태스크를 수행하기 위한 절차들을 포함하는 운영시스템(912);
· 하나 이상의 (유무선) 통신 인터페이스(904) 및 인터넷, 기타 WAN((Wide Area Network), LAN(Local Area Network), MAN(Metropolitan Area Networks) 등과 같은 하나 이상의 통신 네트워크(106)를 통해 모듈서버(122)를 다른 컴퓨터들(가령, 클라이언트 컴퓨터(102), 웹서버(104), 토큰서버(502), 및/또는 DNS 서버(114))에 연결하는데 이용되는 통신모듈(914);
·입력장치(들)(907)을 통해 사용자로부터 명령을 수신하고 디스플레이 디바이스(906)에 사용자 인터페이스 객체를 발생하는 선택적 사용자 인터페이스 모듈(916); 및
· 웹페이지에 포함을 위해 모듈을 발생하는 모듈생성모듈(918).
몇몇 실시예에서, 모듈생성모듈(918)은 모듈의 컨텐츠가 별도의 컴퓨터에 제공되게 하는 사양을 수신한다. 예컨대, 모듈생성모듈(918)은 (상술한 바와 같이) 웹페이지 생성자 또는 웹페이지 그 자체로부터 모듈사양을 수신할 수 있다. 몇몇 실시예에서, 모듈은 미디어 플레이어 위젯이고, 사양은 노래 식별자, 재생목록 식별자, 앨범 식별자, 라디오 방송국 식별자, 디스플레이 파라미터, 및/또는 임의의 다른 정보를 포함한다.
몇몇 실시예에서, 모듈생성모듈(918)은 사양에 따라 모듈을 생성하고, 모듈 식별자에 따라 모듈을 저정한다. (가령, 모듈 식별자를 포함한 http 요청에 의해) 모듈이 요구되면, 모듈서버(122)는 저장된 모듈을 요청 장치(가령, 클라이언트 컴퓨터(102))로 보낼 수 있다.
다른 실시예에서, 모듈생성모듈(918)은 모듈 사양의 수신시 모듈을 생성하고 저장하는게 아니라, 그보다는 모듈 식별자를 사양에 할당한다. (가령, 모듈 식별자를 포함한 http 요청에 의해) 모듈이 요구되면, 모듈생성모듈(918)은 실시간으로 모듈을 생성하고, 상기 모듈을 요청 장치(가령, 클라이언트 컴퓨터(102))로 보낸다.
몇몇 실시예에서, 상기 식별된 프로그램 또는 모듈은 도 1-6을 참조로 상술한 것을 포함한 상술한 기능 또는 방법을 수행하기 위한 세트 명령어에 해당한다. 명령어 세트는 하나 이상의 프로세스들(가령, CPUs(902))에 의해 실행될 수 있다. 상기 식별된 모듈 또는 프로그램들(즉, 명령어 세트)는 별도의 소프트웨어 프로그램, 절차 또는 모듈로서 실행될 필요가 없으며, 따라서 이들 프로그램들 또는 모듈들의 다양한 서브세트가 조합될 수 있거나 그렇지 않으면 다양한 실행에서 재배열될 수 있다. 몇몇 실시예에서, 메모리(910)는 상기 식별된 모듈 또는 데이터 구조의 서브세트를 저장한다. 더욱이, 메모리(910)는 상술하지 않은 추가 모듈 또는 데이터 구조를 저장할 수 있다.
도 10은 몇몇 실시예에 따른 인증서버(504)를 도시한 블록도이다. 인증서버(504)는 일반적으로 프로그램(가령, 메모리(1010)에 저장된 프로그램)을 실행하기 위한 하나 이상의 처리유닛들(CPUs, 때로 프로세서라고 함)(1002), 하나 이상의 네트워크 또는 기타 통신 인터페이스(1004), 선택적 사용자 인터페이스(1005), 메모리(1010), 및 이들 구성요소들을 상호연결하기 위한 하나 이상의 통신버스(1001)를 포함한다. 통신버스(1001)는 시스템 구성요소들 간에 통신을 상호연결하고 제어하는 회로(때로 칩셋이라고 함)를 포함할 수 있다. 몇몇 실시예에서, 사용자 인터페이스(1005)는 디스플레이(1006)와 입력장치(들)(1007)(가령, 키보드, 마우스, 터치스크린, 키패드 등)을 포함한다.
메모리(1010)는 DRAM, SRAM, DDR RAM 또는 기타 랜덤 액세스 고체상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고; 대표적으로 하나 이상의 자기디스크 저장장치, 광디스크 저장장치, 플래시 메모리 디바이스, 또는 기타 비휘발성 고체상태 저장장치와 같은 비휘발성 메모리를 포함한다. 메모리(1010)는 선택적으로 CPU(s)(1002)로부터 원격에 위치된 하나 이상의 저장장치를 포함한다. 메모리(1010) 또는 대안으로 메모리(1010) 내에 있는 비휘발성 메모리 디바이스(들)은 비일시적 컴퓨터 판독가능 저장매체를 포함한다. 몇몇 수단에서, 메모리(1010) 또는 메모리(1010)의 컴퓨터 판독가능 저장매체는 하기의 프로그램들, 모듈들 및 데이터 구조들 또는 그 서브세트를 저장한다:
· 다양한 기본 시스템 서비스들을 다루고 하드웨어 종속 태스크를 수행하기 위한 절차들을 포함하는 운영시스템(1012);
· 하나 이상의 (유무선) 통신 인터페이스(1004) 및 인터넷, 기타 WAN((Wide Area Network), LAN(Local Area Network), MAN(Metropolitan Area Networks) 등과 같은 하나 이상의 통신 네트워크(106)를 통해 인증서버(504)를 다른 컴퓨터들(가령, 클라이언트 컴퓨터(102), 웹서버(104), 토큰서버(502), 및/또는 DNS 서버(114))에 연결하는데 이용되는 통신모듈(1014);
·입력장치(들)(1007)을 통해 사용자로부터 명령을 수신하고 디스플레이 디바이스(1006)에 사용자 인터페이스 객체를 발생하는 선택적 사용자 인터페이스 모듈(1016); 및
· 통신 및/또는 토큰을 인증하는 인증모듈(1018).
몇몇 실시예에서, 인증모듈(1018)은 통신이 통신에 포함된 정보를 기초로 신뢰할 수 있는 것인지 확인한다. 몇몇 실시예에서, 인증모듈(1018)은 통신을 인증하기 위한 요청을 수신하고, 요청은 토큰을 포함한다. 몇몇 실시예에서, 인증모듈(1018)은 토큰인 진짜인지(가령, 하나 이상의 통신들을 인증하기 위해 토큰이 이전에 발행되었는지) 판단하고, 토큰이 진짜인지 여부를 나타내는 요청 장치에 리턴 메시지를 보낸다. 인증서버(504)가 제공할 수 있는 기능들 중 일부는 도 5를 참조로 상기에서 더 상세히 설명되어 있다.
몇몇 실시예에서, 상기 식별된 프로그램 또는 모듈은 도 1-6을 참조로 상술한 것을 포함한 상술한 기능 또는 방법을 수행하기 위한 세트 명령어에 해당한다. 명령어 세트는 하나 이상의 프로세스들(가령, CPU(1002))에 의해 실행될 수 있다. 상기 식별된 모듈 또는 프로그램(즉, 명령어 세트)은 별도의 소프트웨어 프로그램, 절차, 또는 모듈로서 실행될 필요가 없으며, 따라서, 이들 프로그램 또는 모듈의 다양한 서브세트들이 조합될 수 있거나 그렇지 않으면 다양한 실행에서 재배열될 수 있다. 몇몇 실행에서, 메모리(1010)는 상기 식별된 모듈 및 데이터 구조들의 서브세트를 저장한다. 더욱이, 메모리(1010)는 상술하지 않은 추가 모듈 및 데이터 구조를 저장할 수 있다.
도 8-10은 클라이언트 및 서버 컴퓨터를 도시한 것이나, 이들 도면은 상술한 수단의 구조적 도식들로서보다는 이들 컴퓨터들에 있을 수 있는 다양한 특징들의 기능적 설명들로서 더 의도되어 있다. 실행시, 그리고 당업자가 인식하는 바와 같이, 별개로 도시된 아이템들은 조합될 수 있고 몇몇 아이템들은 별도일 수 있다. 예컨대, 도 8-10에 별개로 도시된 몇몇 아이템들은 단일 모듈에 또는 데이터 구조에 실행될 수 있다.
복수의 인스턴스들이 단일 인스턴스로서 본 명세서에 기술된 구성부품들, 기능들 또는 구조들에 제공될 수 있다. 마지막으로, 다양한 구성요소, 기능, 및 데이터 스토어 간의 경계는 다소 임의적이며, 특정 기능들이 특정 예시적인 구성들과 관련해 예시되어 있다. 기능의 다른 할당들이 고려되며 실행의 범위 내에 있을 수 있다. 일반적으로, 예시적인 구성으로 별개의 구성요소들로서 소개된 구조 및 기능은 조합된 구조 또는 구성요소로서 실행될 수 있다. 마찬가지로 단일 구성요소로 소개된 구조 및 기능은 별개의 구성요소들로서 실행될 수 있다. 이들 및 다른 변형, 변경, 추가 및 개선은 기술된 실행들의 범위 내에 있다.
설명을 위한 상기 명세서는 특정 실시예를 참조로 기술하였다. 그러나, 상기 예시적인 논의는 배타적이거나 개시된 아이디어를 개시된 정확한 형태로 국한시키려는 의도가 아니다. 많은 변형 및 변경들이 상기 교시를 고려해 가능하다. 개시된 아이디어의 원리 및 실제 적용을 가장 설명하기 위해 실시예들을 선택하고 기술하였으므로, 당업자들이 고려된 특정 사용에 맞는 것으로 다양한 변형으로 다양한 실시예에 이들을 가장 잘 이용할 수 있다.
더욱이, 앞서의 설명에서, 수많은 특정 세부내용들은 소개된 아이디어의 완전한 이해를 제공하기 위해 나타낸 것이다. 그러나, 이들 아이디어는 이들 특정 세부내용 없이도 실시될 수 있음이 당업자에 명백할 것이다. 다른 예로, 당업자에 잘 알려진 방법, 절차, 구성요소 및 네트워크는 본 명세서에 소개된 아이디어의 태양들을 불명료하게 하는 것을 막기 위해 상세히 설명하지 않았다.
또한, "제 1", "제 2" 등의 용어가 다양한 요소들을 설명하기 위해 본 명세서에 이용될 수 있으나, 이들 요소들은 이들 용어들에 국한되지 않아야 하는 것을 알 것이다. 이들 용어들은 단지 한 요소를 또 다른 요소와 구별하는데 이용된다. 예컨대, 나타난 모든 "제 1 서버"가 일관되게 재명명되고 나타난 모든 "제 2 서버"가 일관되게 재명명되는 한, 설명의 의미를 바꾸지 않고도, 제 1 서버는 제 2 서버로 불릴 수 있고, 마찬가지로, 제 2 서버는 제 1 서버로 불릴 수 있다.
또한, 본 명세서에 사용된 용어는 단지 특정 실시예를 설명하기 위한 것이며 특허청구범위를 제한하는 것으로 의도되어 있지 않다. 실행 및 특허청구범위의 설명에 사용된 바와 같이, 단수형태 "한", "하나", 및 "그"는 문맥이 명확히 나타내지 않는 한 또한 복수의 형태를 포함하도록 되어 있다. 본 명세서에 사용된 바와 같이 "및/또는" 이라는 용어는 관련된 열거된 아이템들 중 하나 이상의 임의의 및 모든 가능한 조합을 말하고 포함한다. 본 명세서에 이용된 "포함하다" 및 "포함하는"이라는 용어는 진술된 특징, 정수, 단계, 기능, 요소, 및/또는 구성요소의 존재를 명시하나, 하나 이상의 다른 특징, 정수, 단계, 기능, 요소, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다.
마지막으로, 본 명세서에 사용된 바와 같이, "경우"라는 용어는 문맥에 따라 앞서 진술된 상태가 사실인 "때" 또는 "시" 또는 "판단에 응답해" 또는 "판단에 따라" 또는 "검출에 응답해"를 의미하는 것으로 해석될 수 있다. 마찬가지로, "(앞서 진술된 상태가 사실인 것이) 판단되면" 또는 "(앞서 진술된 상태가 사실인) 경우", 또는 "(앞서 진술된 상태가 사실일) 때"라는 구는 문맥에 따라 앞서 진술된 상태가 사실인 "판단시" 또는 "판단에 응답해", 또는 "판단에 따라", 또는 "검출시", 또는 "검출에 응답해"를 의미하는 것으로 해석될 수 있다.

Claims (19)

  1. 프로세서와 프로세서가 실행하기 위한 명령어를 저장한 메모리를 갖는 클라이언트 컴퓨터에서:
    클라이언트 컴퓨터 상에서 실행되는 웹 애플리케이션에서:
    웹 페이지를 로딩하면, 로컬 웹 서버로부터의 리턴 메시지를 필요로 하지 않는 제1 오픈-엔드 메시지를 제1 통신 채널을 통해 로컬 웹 서버로 전송하는 단계; 및
    제1-오픈 엔드 메시지에 대한 응답을 수신하면 이에 응답하여, 제1 통신 채널과 별개의 제2 통신 채널을 사용하여 로컬 웹 서버로의 리턴 메시지를 필요로 하지 않는 제2 오픈-엔드 메시지를 전송함으로써 로컬 웹 서버와 통신을 유지하는 단계;
    로컬 웹 서버에서:
    제1 통신 채널을 통해, 제1 오픈 엔드 메시지를 수신하는 단계;
    로컬 유틸리티가 웹 애플리케이션으로 제공될 정보가 있다고 결정할 때까지 대기하는 단계; 및
    웹 애플리케이션으로 제공될 정보가 있다고 결정하는데 응답하여, 제1 통신 채널을 통해, 상기 정보를 포함하는 제1 리턴 메시지를 웹 애플리케이션으로 전송하는 단계를 포함하고,
    웹 애플리케이션은 루프백 네트워크 어드레스로 바뀌는 도메인을 통해 로컬 웹 서버에 연결되고, 루프백 네트워크 어드레스는 클라이언트 컴퓨터에서 로컬 웹 서버를 위한 자기참조 어드레스이고, 로컬 웹 서버는 웹 애플리케이션과 별개의 클라이언트 컴퓨터 상에서 실행되는 로컬 유틸리티와 연결되는 컴퓨터 구현 방법.
  2. 청구항 1에 있어서,
    도메인은 다수의 서브도메인으로 분할되고;
    각 서브도메인은 루프백 네트워크 어드레스와 연관되고;
    제1 오픈-엔드 메시지 및 제2 오픈-엔드 메시지는 도메인의 상이한 서브도메인으로 전송되는 컴퓨터 구현 방법.
  3. 청구항 1에 있어서,
    도메인의 이름은 루프백 네트워크 어드레스와 별개인 컴퓨터 구현 방법.
  4. 청구항 1에 있어서,
    웹 애플리케이션에 의해 전송된 오픈-엔드 메시지의 시퀀스를 통해 웹 애플리케이션 및 로컬 웹 서버 간의 양방향 통신을 유지하는 것을 포함하는 컴퓨터 구현 방법.
  5. 청구항 1에 있어서,
    상기 정보는 청하지 않은 정보인 컴퓨터 구현 방법.
  6. 청구항 1에 있어서,
    제1 오픈-엔드 메시지는 기정의된 카테고리의 정보에 대한 요청인 컴퓨터 구현 방법.
  7. 청구항 6에 있어서,
    기정의된 카테고리의 정보는 웹 애플리케이션에 의해 재생중인 미디어 파일과 연관되고;
    제1 오픈-엔드 메시지는 미디어 파일을 제어하는 요청을 포함하지 않는 컴퓨터 구현 방법.
  8. 청구항 1에 있어서,
    웹 애플리케이션에서:
    로컬 유틸리티를 위한 컨트롤을 디스플레이하는 단계;
    컨트롤을 선택하는 사용자 입력 요청을 수신하는 단계;
    컨트롤을 선택하는 사용자 입력 요청에 응답하여, 로컬 웹 서버로, 로컬 웹 서버로부터의 리턴 메시지를 요구하는 요청을 전송하는 단계;
    로컬 웹 서버에서:
    리턴 메시지를 요구하는 사용자 입력 요청을 수신하는 단계;
    사용자 입력 요청에 응답하여, 로컬 유틸리티에 요청의 명령 부분을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  9. 청구항 8에 있어서,
    로컬 웹 서버와 연결된 로컬 유틸리티에서:
    로컬 웹 서버로부터 요청의 명령 부분을 수신하는데 응답하여, 로컬 웹 서버로부터, 요청의 명령 부분에 기반하여 하나 이상의 실행을 취하는 단계를 더 포함하고,
    하나 이상의 실행은:
    미디어 파일 재생;
    미디어 파일 중지;
    미디어 파일 잠깐 멈춤;
    미디어 파일 빨리 감기;
    미디어 파일 되감기;
    미디어 파일 건너뛰기;
    재생목록의 플레이백 순서 바꾸기;
    미디어 파일을 재생목록에 추가하기; 및
    미디어 파일을 재생목록에서 삭제하기 중 하나 이상을 포함하는 컴퓨터 구현 방법.
  10. 청구항 8에 있어서,
    웹 애플리케이션은 로컬 유틸리티를 위한 컨트롤을 포함하는 모듈을 포함하는 컴퓨터 구현 방법.
  11. 청구항 10에 있어서,
    모듈은 웹 페이지의 인라인 프레임 내에 포함되는 컴퓨터 구현 방법.
  12. 청구항 8에 있어서,
    컨트롤은 URL(uniform resource locator)을 위한 링크를 포함하는 컴퓨터 구현 방법.
  13. 청구항 8에 있어서,
    컨트롤은 HTTPS(HTTP Secure) 프로토콜을 명시하는 링크를 포함하는 컴퓨터 구현 방법.
  14. 청구항 1에 있어서,
    제1 오픈-엔드 메시지는 HTTP(hypertext transfer protocol) 요청인 컴퓨터 구현 방법.
  15. 청구항 1에 있어서,
    루프백 네트워크 어드레스는 IP(internet protocol) 어드레스인 컴퓨터 구현 방법.
  16. 청구항 1에 있어서,
    로컬 웹 서버 및 로컬 유틸리티는 동일한 소프트웨어 애플리케이션의 일부인 컴퓨터 구현 방법.
  17. 청구항 1에 있어서,
    로컬 유틸리티 및 로컬 유틸리티와 연관된 로컬 웹 서버의 개시는 웹 애플리케이션과의 통신을 확립하기 위한 로컬 유틸리티를 띄우는 것을 포함하는 컴퓨터 구현 방법.
  18. 하나 이상의 프로세서; 및
    로컬 웹 서버 및 로컬 웹 서버와 별개의 웹 애플리케이션을 포함하여 둘 이상의 프로그램을 저장하는 메모리를 포함하고,
    둘 이상의 프로그램은 메모리에 저장되고 하나 이상의 프로세서에 의해 실행되도록 구성되고, 둘 이상의 프로세서는:
    클라이언트 컴퓨터 상에서 실행되는 웹 애플리케이션에서:
    웹 페이지를 로딩하면, 로컬 웹 서버로부터의 리턴 메시지를 필요로 하지 않는 제1 오픈-엔드 메시지를 제1 통신 채널을 통해 로컬 웹 서버로 전송하는 단계; 및
    제1-오픈 엔드 메시지에 대한 응답을 수신하면 이에 응답하여, 제1 통신 채널과 별개의 제2 통신 채널을 사용하여 로컬 웹 서버로의 리턴 메시지를 필요로 하지 않는 제2 오픈-엔드 메시지를 전송함으로써 로컬 웹 서버와 통신을 유지하는 단계;
    로컬 웹 서버에서:
    제1 통신 채널을 통해, 제1 오픈 엔드 메시지를 수신하는 단계;
    로컬 유틸리티가 웹 애플리케이션으로 제공될 정보가 있다고 결정할 때까지 대기하는 단계; 및
    웹 애플리케이션으로 제공될 정보가 있다고 결정하는데 응답하여, 제1 통신 채널을 통해, 상기 정보를 포함하는 제1 리턴 메시지를 웹 애플리케이션으로 전송하는 단계를 위한 명령어를 포함하고,
    웹 애플리케이션은 루프백 네트워크 어드레스로 바뀌는 도메인을 통해 로컬 웹 서버에 연결되고, 루프백 네트워크 어드레스는 클라이언트 컴퓨터에서 로컬 웹 서버를 위한 자기참조 어드레스이고, 로컬 웹 서버는 웹 애플리케이션과 별개의 클라이언트 컴퓨터 상에서 실행되는 로컬 유틸리티와 연결되는 클라이언트 컴퓨터.
  19. 클라이언트에 의해 실행가능한 명령어를 포함하는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독가능한 저장 매체로서, 명령어는:
    클라이언트 컴퓨터 상에서 실행되는 웹 애플리케이션에서:
    웹 페이지를 로딩하면, 로컬 웹 서버로부터의 리턴 메시지를 필요로 하지 않는 제1 오픈-엔드 메시지를 제1 통신 채널을 통해 로컬 웹 서버로 전송하는 단계; 및
    제1-오픈 엔드 메시지에 대한 응답을 수신하면 이에 응답하여, 제1 통신 채널과 별개의 제2 통신 채널을 사용하여 로컬 웹 서버로의 리턴 메시지를 필요로 하지 않는 제2 오픈-엔드 메시지를 전송함으로써 로컬 웹 서버와 통신을 유지하는 단계;
    로컬 웹 서버에서:
    제1 통신 채널을 통해, 제1 오픈 엔드 메시지를 수신하는 단계;
    로컬 유틸리티가 웹 애플리케이션으로 제공될 정보가 있다고 결정할 때까지 대기하는 단계; 및
    웹 애플리케이션으로 제공될 정보가 있다고 결정하는데 응답하여, 제1 통신 채널을 통해, 상기 정보를 포함하는 제1 리턴 메시지를 웹 애플리케이션으로 전송하는 단계를 위한 것이고,
    웹 애플리케이션은 루프백 네트워크 어드레스로 바뀌는 도메인을 통해 로컬 웹 서버에 연결되고, 루프백 네트워크 어드레스는 클라이언트 컴퓨터에서 로컬 웹 서버를 위한 자기참조 어드레스이고, 로컬 웹 서버는 웹 애플리케이션과 별개의 클라이언트 컴퓨터 상에서 실행되는 로컬 유틸리티와 연결되는 비일시적 컴퓨터 판독가능한 저장 매체.
KR1020197035646A 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법 KR102123369B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/443,781 2012-04-10
US13/443,781 US8898766B2 (en) 2012-04-10 2012-04-10 Systems and methods for controlling a local application through a web page
PCT/IB2013/001034 WO2013153449A2 (en) 2012-04-10 2013-04-05 Systems and methods for controlling a local application through a web page

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147031523A Division KR102053739B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207016389A Division KR102243343B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20190137178A KR20190137178A (ko) 2019-12-10
KR102123369B1 true KR102123369B1 (ko) 2020-06-16

Family

ID=48808396

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020207016389A KR102243343B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법
KR1020147031523A KR102053739B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법
KR1020197035646A KR102123369B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020207016389A KR102243343B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법
KR1020147031523A KR102053739B1 (ko) 2012-04-10 2013-04-05 웹페이지를 통해 로컬 애플리케이션을 제어하는 시스템 및 방법

Country Status (7)

Country Link
US (6) US8898766B2 (ko)
EP (3) EP2836909B1 (ko)
JP (2) JP6018292B2 (ko)
KR (3) KR102243343B1 (ko)
CN (1) CN104364762B (ko)
HK (1) HK1207440A1 (ko)
WO (1) WO2013153449A2 (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2757290C (en) 2008-04-01 2020-12-15 Leap Marketing Technologies Inc. Systems and methods for implementing and tracking identification tests
US9842204B2 (en) 2008-04-01 2017-12-12 Nudata Security Inc. Systems and methods for assessing security risk
US9716691B2 (en) * 2012-06-07 2017-07-25 Early Warning Services, Llc Enhanced 2CHK authentication security with query transactions
US20140164924A1 (en) * 2012-11-30 2014-06-12 Senzari, Inc. Self Service Portal and Methods for Using Same
US9510055B2 (en) 2013-01-23 2016-11-29 Sonos, Inc. System and method for a media experience social interface
US9038142B2 (en) * 2013-02-05 2015-05-19 Google Inc. Authorization flow initiation using short-term wireless communication
US11669584B2 (en) 2013-02-10 2023-06-06 Wix.Com Ltd. System and method for third party application activity data collection
JP6124687B2 (ja) * 2013-05-29 2017-05-10 キヤノン株式会社 画像形成装置、サーバー装置、情報処理方法及びプログラム
US9319395B2 (en) * 2013-07-03 2016-04-19 Sailpoint Technologies, Inc. System and method for securing authentication information in a networked environment
US9106642B1 (en) * 2013-09-11 2015-08-11 Amazon Technologies, Inc. Synchronizing authentication sessions between applications
CN103544008B (zh) * 2013-10-12 2017-02-01 北京奇虎科技有限公司 浏览器中播放音频的方法和装置
US9397990B1 (en) * 2013-11-08 2016-07-19 Google Inc. Methods and systems of generating and using authentication credentials for decentralized authorization in the cloud
IL292474A (en) * 2013-12-04 2022-06-01 Wix Com Ltd A system and method for collecting activity information in third-party applications
US10671030B2 (en) 2013-12-06 2020-06-02 Siemens Schweiz Ag Web-based interaction with building automation
US20150220498A1 (en) 2014-02-05 2015-08-06 Sonos, Inc. Remote Creation of a Playback Queue for a Future Event
US9679054B2 (en) 2014-03-05 2017-06-13 Sonos, Inc. Webpage media playback
JP6303730B2 (ja) * 2014-03-31 2018-04-04 富士通株式会社 情報処理装置、情報処理システム、プログラムおよび処理方法
US20150324552A1 (en) 2014-05-12 2015-11-12 Sonos, Inc. Share Restriction for Media Items
US9686226B1 (en) * 2014-05-15 2017-06-20 Sprint Communications Company L.P. Domain name system (DNS) query response providing loop-back internet protocol (IP) address to non-activated mobile communication device
US20150356084A1 (en) 2014-06-05 2015-12-10 Sonos, Inc. Social Queue
GB2528721A (en) * 2014-07-30 2016-02-03 Pierbridge Ltd Data processing systems and methods
US9874997B2 (en) 2014-08-08 2018-01-23 Sonos, Inc. Social playback queues
US9948610B2 (en) * 2014-08-29 2018-04-17 Citrix Systems, Inc. Method and apparatus for accessing third-party resources
CN104202674B (zh) * 2014-08-29 2018-12-14 深圳市云来网络科技有限公司 网页中音频与视频共存时的音频视频交互方法及系统
EP3114625A1 (en) 2014-09-24 2017-01-11 Sonos, Inc. Social media connection recommendations based on playback information
US10645130B2 (en) 2014-09-24 2020-05-05 Sonos, Inc. Playback updates
US9723038B2 (en) 2014-09-24 2017-08-01 Sonos, Inc. Social media connection recommendations based on playback information
US9959087B2 (en) 2014-09-24 2018-05-01 Sonos, Inc. Media item context from social media
US9690540B2 (en) 2014-09-24 2017-06-27 Sonos, Inc. Social media queue
US9860286B2 (en) 2014-09-24 2018-01-02 Sonos, Inc. Associating a captured image with a media item
US9667679B2 (en) 2014-09-24 2017-05-30 Sonos, Inc. Indicating an association between a social-media account and a media playback system
US10757107B2 (en) * 2015-02-27 2020-08-25 Dropbox, Inc. Application-assisted login for a web browser
US9350556B1 (en) 2015-04-20 2016-05-24 Google Inc. Security model for identification and authentication in encrypted communications using delegate certificate chain bound to third party key
US10044718B2 (en) 2015-05-27 2018-08-07 Google Llc Authorization in a distributed system using access control lists and groups
CN105159787B (zh) * 2015-08-17 2018-08-14 北京京东尚科信息技术有限公司 一种网页动作处理方法和装置
US9979747B2 (en) 2015-09-05 2018-05-22 Mastercard Technologies Canada ULC Systems and methods for detecting and preventing spoofing
CN105159875A (zh) * 2015-09-11 2015-12-16 北京恒华伟业科技股份有限公司 文件编辑方法及装置
US9721551B2 (en) 2015-09-29 2017-08-01 Amper Music, Inc. Machines, systems, processes for automated music composition and generation employing linguistic and/or graphical icon based musical experience descriptions
US10854180B2 (en) 2015-09-29 2020-12-01 Amper Music, Inc. Method of and system for controlling the qualities of musical energy embodied in and expressed by digital music to be automatically composed and generated by an automated music composition and generation engine
JP6828014B2 (ja) * 2015-10-07 2021-02-10 株式会社ワコム 1つまたは複数の署名デバイスに通信可能に接続されたローカルコンピューヒング装置によって実行されるコンピュータ実装方法
US10601831B2 (en) * 2015-11-17 2020-03-24 Avaya Inc. Accessing local information based on a browser session
CN106919413A (zh) * 2015-12-25 2017-07-04 北京奇虎科技有限公司 一种通过网页调用应用程序app的方法和装置
US9886234B2 (en) 2016-01-28 2018-02-06 Sonos, Inc. Systems and methods of distributing audio to one or more playback devices
WO2017131892A1 (en) 2016-01-29 2017-08-03 Google Inc. Device access revocation
US10075424B2 (en) 2016-03-28 2018-09-11 Airwatch Llc Application authentication wrapper
CN106202537A (zh) * 2016-07-26 2016-12-07 江苏神州信源系统工程有限公司 一种实现跨浏览器前端与终端本地交互的方法
US20180063152A1 (en) * 2016-08-29 2018-03-01 Matt Erich Device-agnostic user authentication and token provisioning
CN107015870B (zh) 2016-09-19 2020-11-03 创新先进技术有限公司 实现web页面与本地应用通信的方法、装置和电子设备
WO2018101011A1 (ja) * 2016-11-30 2018-06-07 キヤノン電子株式会社 情報処理装置およびその制御方法、プログラムおよび情報処理システム
KR20180111395A (ko) * 2017-04-02 2018-10-11 주식회사 키페어 생체 인증을 위한 로컬 웹 서버 기능을 구비하는 단말기 및 이를 이용한 사용자 인증 시스템 및 방법
US10127373B1 (en) 2017-05-05 2018-11-13 Mastercard Technologies Canada ULC Systems and methods for distinguishing among human users and software robots
US9990487B1 (en) 2017-05-05 2018-06-05 Mastercard Technologies Canada ULC Systems and methods for distinguishing among human users and software robots
US10007776B1 (en) 2017-05-05 2018-06-26 Mastercard Technologies Canada ULC Systems and methods for distinguishing among human users and software robots
JP6969919B2 (ja) * 2017-07-14 2021-11-24 株式会社東芝 センサループ精度試験管理システム及びセンサループ精度試験管理方法
US11409893B2 (en) * 2017-12-28 2022-08-09 Teradata Us, Inc. Security for diverse computing environments
JP6381837B1 (ja) * 2018-01-17 2018-08-29 株式会社Cygames 通信を行うためのシステム、プログラム、方法及びサーバ
JP2019133283A (ja) * 2018-01-29 2019-08-08 株式会社リコー 情報処理装置、プログラム、通信システム、画像処理方法
US11095459B2 (en) * 2018-05-31 2021-08-17 Microsoft Technology Licensing, Llc Automatic generation of app-specific client certification
US10558504B1 (en) * 2018-09-28 2020-02-11 Atlassian Pty Ltd Systems and methods for automatically detecting desktop applications
JP7270876B2 (ja) * 2018-11-19 2023-05-11 治 寺田 プログラム
US11172013B2 (en) * 2019-01-31 2021-11-09 Open Text Corporation System and method for launching and connecting to a local server from a webpage
US11675563B2 (en) * 2019-06-01 2023-06-13 Apple Inc. User interfaces for content applications
US11245537B2 (en) * 2019-06-07 2022-02-08 Open Text Corporation System and method for a local server with self-signed certificates
MX2022001440A (es) * 2019-08-06 2022-05-06 Boxine Gmbh Servidor para proporcionar archivos multimedia para que los descargue un usuario, asi como un sistema y un metodo.
US11601288B1 (en) * 2019-08-21 2023-03-07 Cox Communications, Inc. On-demand security certificates for improved home router security
US11531747B2 (en) * 2019-09-16 2022-12-20 Beijing Didi Infinity Technology And Development Co., Ltd. Method for exchanging data between a web browser and an application
US11024275B2 (en) 2019-10-15 2021-06-01 Shutterstock, Inc. Method of digitally performing a music composition using virtual musical instruments having performance logic executing within a virtual musical instrument (VMI) library management system
US11037538B2 (en) 2019-10-15 2021-06-15 Shutterstock, Inc. Method of and system for automated musical arrangement and musical instrument performance style transformation supported within an automated music performance system
US10964299B1 (en) 2019-10-15 2021-03-30 Shutterstock, Inc. Method of and system for automatically generating digital performances of music compositions using notes selected from virtual musical instruments based on the music-theoretic states of the music compositions
US11595798B2 (en) 2019-11-01 2023-02-28 Hach Company Dynamic wireless information transmission
US11777881B2 (en) 2021-01-29 2023-10-03 Apple Inc. User interfaces and associated systems and processes for sharing portions of content items
US11528257B1 (en) * 2021-08-19 2022-12-13 NortonLifeLock Inc. Identifying and removing a tracking capability from an external domain that performs a tracking activity on a host web page

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000060503A1 (en) 1999-04-07 2000-10-12 Critical Path Inc. Apparatus and methods for use of access tokens in an internet document management system
US6216101B1 (en) 1996-04-01 2001-04-10 Openconnect Systems Incorporated Server and terminal emulator for persistent connection to a legacy host system with client token authentication
US20080263650A1 (en) 2007-04-23 2008-10-23 Sap Ag Enhanced cross-site attack prevention
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
JP2011124652A (ja) 2009-12-08 2011-06-23 Sharp Corp 複合機、複合機制御システム、プログラムおよび記録媒体

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754830A (en) * 1996-04-01 1998-05-19 Openconnect Systems, Incorporated Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation
US7441045B2 (en) * 1999-12-13 2008-10-21 F5 Networks, Inc. Method and system for balancing load distribution on a wide area network
US20030051142A1 (en) * 2001-05-16 2003-03-13 Hidalgo Lluis Mora Firewalls for providing security in HTTP networks and applications
EP1510031A4 (en) * 2002-05-06 2009-02-04 Syncronation Inc LOCALIZED AUDIO NETWORKS AND ASSOCIATED DIGITAL TOOLS
US7756984B2 (en) 2004-09-27 2010-07-13 Citrix Systems, Inc. Systems and methods for virtual host name roaming
US9294334B2 (en) 2005-12-12 2016-03-22 Google Inc. Controlling communication within a container document
WO2008006115A2 (en) * 2006-07-07 2008-01-10 Meebo, Inc. A method and system for embedded personalized communication
JP4935274B2 (ja) * 2006-09-27 2012-05-23 大日本印刷株式会社 サーバ及びプログラム
US8079076B2 (en) * 2006-11-02 2011-12-13 Cisco Technology, Inc. Detecting stolen authentication cookie attacks
WO2008111067A1 (en) * 2007-03-12 2008-09-18 Joliper Ltd. Method of providing a service over a hybrid network and system thereof
CN101952823B (zh) * 2007-07-10 2013-05-22 拜特移动网络公司 用于媒体发现的方法
WO2009054047A1 (ja) * 2007-10-23 2009-04-30 Netstar, Inc. ウェブサイトの閲覧を管理するシステム
US8724600B2 (en) * 2008-01-07 2014-05-13 Tymphany Hong Kong Limited Systems and methods for providing a media playback in a networked environment
TWI353767B (en) * 2008-03-21 2011-12-01 Wistron Corp Method of digital resource management and related
WO2009120301A2 (en) * 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
US7945774B2 (en) * 2008-04-07 2011-05-17 Safemashups Inc. Efficient security for mashups
WO2009126152A1 (en) 2008-04-09 2009-10-15 The Nielsen Company (U.S.), Inc. Methods and apparatus to play and control playing of media content in a web page
EP2141860B1 (en) * 2008-07-04 2016-02-24 Alcatel Lucent Method for monitoring events in a communication network
US8719572B2 (en) * 2008-07-16 2014-05-06 Disney Enterprises, Inc. System and method for managing authentication cookie encryption keys
US8020193B2 (en) * 2008-10-20 2011-09-13 International Business Machines Corporation Systems and methods for protecting web based applications from cross site request forgery attacks
US8516080B2 (en) * 2008-12-03 2013-08-20 Mobophiles, Inc. System and method for providing virtual web access
US8539234B2 (en) * 2010-03-30 2013-09-17 Salesforce.Com, Inc. Secure client-side communication between multiple domains
US9369437B2 (en) * 2010-04-01 2016-06-14 Cloudflare, Inc. Internet-based proxy service to modify internet responses
US8954596B2 (en) * 2010-04-02 2015-02-10 Netflix, Inc. Dynamic virtual chunking of streaming media content
WO2011153539A1 (en) * 2010-06-04 2011-12-08 Northwestern University Pseudonymous public keys based authentication
USH2279H1 (en) * 2010-08-31 2013-07-02 Cpanel, Inc. Method for prevention of cross site request forgery attack
US9071616B2 (en) * 2010-11-18 2015-06-30 Microsoft Technology Licensing, Llc Securing partner-enabled web service
US8848025B2 (en) * 2011-04-21 2014-09-30 Shah Talukder Flow-control based switched group video chat and real-time interactive broadcast
US9032497B2 (en) * 2011-06-15 2015-05-12 Cbs Interactive Inc. System and method for securing embedded media
US9384101B2 (en) * 2011-07-26 2016-07-05 Apple Inc. Web application architecture
US8214691B1 (en) * 2011-09-30 2012-07-03 Google Inc. System and method for testing internet functionality of a computing device in a simulated internet environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216101B1 (en) 1996-04-01 2001-04-10 Openconnect Systems Incorporated Server and terminal emulator for persistent connection to a legacy host system with client token authentication
WO2000060503A1 (en) 1999-04-07 2000-10-12 Critical Path Inc. Apparatus and methods for use of access tokens in an internet document management system
US20080263650A1 (en) 2007-04-23 2008-10-23 Sap Ag Enhanced cross-site attack prevention
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
JP2011124652A (ja) 2009-12-08 2011-06-23 Sharp Corp 複合機、複合機制御システム、プログラムおよび記録媒体

Also Published As

Publication number Publication date
JP6367883B2 (ja) 2018-08-01
CN104364762B (zh) 2018-01-30
US20180332024A1 (en) 2018-11-15
US20200059463A1 (en) 2020-02-20
KR20140147130A (ko) 2014-12-29
US20170118192A1 (en) 2017-04-27
KR102243343B1 (ko) 2021-04-22
KR102053739B1 (ko) 2019-12-09
US10397219B2 (en) 2019-08-27
JP2015518607A (ja) 2015-07-02
US11775355B2 (en) 2023-10-03
US20140337959A1 (en) 2014-11-13
KR20190137178A (ko) 2019-12-10
JP2017021843A (ja) 2017-01-26
EP3800552A1 (en) 2021-04-07
WO2013153449A3 (en) 2014-02-20
HK1207440A1 (en) 2016-01-29
US20210294670A1 (en) 2021-09-23
EP3557420A1 (en) 2019-10-23
KR20200068761A (ko) 2020-06-15
EP2836909A2 (en) 2015-02-18
US9438582B2 (en) 2016-09-06
WO2013153449A2 (en) 2013-10-17
US9935944B2 (en) 2018-04-03
EP3557420B1 (en) 2020-12-23
CN104364762A (zh) 2015-02-18
US8898766B2 (en) 2014-11-25
US20130269019A1 (en) 2013-10-10
JP6018292B2 (ja) 2016-11-02
EP2836909B1 (en) 2019-07-24
US10999271B2 (en) 2021-05-04

Similar Documents

Publication Publication Date Title
US11775355B2 (en) Systems and methods for controlling a local application through a web page
US11658979B2 (en) Systems and methods for efficient and secure temporary anonymous access to media content
CA2940643C (en) Transferring authorization from an authenticated device to an unauthenticated device
US10757107B2 (en) Application-assisted login for a web browser
US9729410B2 (en) Method and system for capturing web content from a web server
US10148660B2 (en) Delivering author specific content

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant