KR20220149638A - 통제된 액세스 자원들에 대한 위치―기반 액세스 - Google Patents

통제된 액세스 자원들에 대한 위치―기반 액세스 Download PDF

Info

Publication number
KR20220149638A
KR20220149638A KR1020227037972A KR20227037972A KR20220149638A KR 20220149638 A KR20220149638 A KR 20220149638A KR 1020227037972 A KR1020227037972 A KR 1020227037972A KR 20227037972 A KR20227037972 A KR 20227037972A KR 20220149638 A KR20220149638 A KR 20220149638A
Authority
KR
South Korea
Prior art keywords
resource
token
client device
link
request
Prior art date
Application number
KR1020227037972A
Other languages
English (en)
Other versions
KR102595830B1 (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 KR20220149638A publication Critical patent/KR20220149638A/ko
Application granted granted Critical
Publication of KR102595830B1 publication Critical patent/KR102595830B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • 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/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/107Network architectures or network communication protocols for network security for controlling access to devices or network resources wherein the security policies are location-dependent, e.g. entities privileges depend on current location or allowing specific operations only from locally connected terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/108Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • 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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)

Abstract

시스템들 및 방법들은 인식된 위치들 외부에서 위치-제한 자원들에 대한 액세스를 제공한다. 예로서, 방법은 클라이언트 디바이스로부터 통제된 액세스 자원에 대한 요청을 수신하는 단계, 및 요청이 인식된 위치와 연관되지 않지만 클라이언트 디바이스 식별자에 대한 상태 데이터가 존재한다고 결정하는 단계를 포함한다. 상태 데이터를 식별한 것에 대한 응답으로, 방법은, 서버에서 통제된 액세스 자원에 액세스하기 위한 링크를 생성하는 단계, 상태 데이터로부터의 타임스탬프, 난수 및 허가된 자원 정보를 포함하는 암호화된 토큰을 생성하는 단계, 암호화된 토큰을 링크에 포함시키는 단계, 및 링크를 클라이언트 디바이스에 제공하는 단계를 포함한다. 클라이언트 디바이스는 서버로부터 통제된 액세스 자원을 요청하기 위해 링크를 사용하고, 서버는 요청이 토큰을 포함한다고 결정하고, 토큰이 만료되지 않았다고 결정하고, 통제된 액세스 자원을 클라이언트 디바이스에 제공한다.

Description

통제된 액세스 자원들에 대한 위치―기반 액세스{LOCATION-BASED ACCESS TO CONTROLLED ACCESS RESOURCES}
[0001] 본 출원은, 2018년 8월 13일에 출원된 미국 가출원 제62/718,309호를 우선권으로 또한 주장하는, 2018년 9월 5일에 출원된 미국 출원 제16/122,294호의 계속 출원이고 그 출원을 우선권으로 주장하며, 그 출원들의 개시내용들은 그들 전체가 인용에 의해 본원에 포함된다.
[0002] 일부 시스템들은 IP 어드레스들(예컨대, 프록시 서버들, VPN들 등), 물리적 위치 등과 같이 인식된 위치에 기반하여 자원들에 대한 액세스를 제어한다. 예컨대, 대학은 캠퍼스 내 컴퓨터(on-campus computer) 또는 캠퍼스 내 WiFi 네트워크를 사용하는 누구에게나 특정 게시자에 의해 관리되는 논문들 중 일부 또는 모두에 대한 액세스를 제공하는 해당 게시자와의 합의를 할 수 있다. 또 다른 예로서, 고용인들(employees)은, (예컨대, VPN 또는 프록시 서버를 통해) 기업 소프트웨어를 사용할 때, 회사 내부 웹 페이지들에 액세스할 수 있다. 이러한 자원들에 대한 액세스는, 예컨대, 인식된 위치(들)와 매칭하지 않는 IP 어드레스들과 연관된 요청들에 대해, 인식된 위치들 외부에서는 차단된다.
[0003] 구현들은, 개인적으로 식별 가능한 정보를 사용하거나 로그인 절차를 요구하지 않고서, 여전히 자원 소유자/관리자가 액세스를 모니터링하고 잠재적인 남용들(potential abuses)을 처리하는 것을 가능하게 하면서, 인식된 위치들 외부에서 통제된 액세스 자원에 대한 안전하고 끊김없는 액세스를 가능하게 한다. 구현들은, 예컨대, 캠퍼스 내 WiFi를 사용하거나 VPN(Virtual Private Network)를 통해 로그인하여, 클라이언트 디바이스가 인식된 위치로부터 통제된 액세스 자원에 액세스할 때, 클라이언트 디바이스에 대한 상태 데이터를 생성한다. 상태 데이터는 타임스탬프, 디바이스 식별자 및 허가된 자원 정보(licensed resource information)를 포함할 수 있다. 허가된 자원 정보는, 인식된 위치를 통해 사용자에게 이용가능한 자원들을 식별하는 데 사용되는 임의의 정보일 수 있다. 달리 말하면, 허가된 자원 정보는, 클라이언트 디바이스의 연계(affiliation) 및 인식된 위치와 연관된 기관에 기반하여 클라이언트에 이용가능한 자원들을 나타낸다. 디바이스 식별자는 인식된 위치(예컨대, 캠퍼스 또는 도서관 웹사이트 또는 프록시 서버)와 연관된 서버 또는 다른 컴퓨터에서 생성된 쿠키(cookie)일 수 있거나 모바일 번호 또는 사용자 계정 식별자와 같은 다른 식별자일 수 있다. 일부 구현들에서, 이러한 식별자들은 상태 데이터 기록에서 해싱될 수 있다. 상태 데이터는, 예컨대, 상태 데이터의 생성 후 일부 미리 결정된 시간이 경과한 후에 만료된다.
[0004] 구현들은, 클라이언트 디바이스가 인식된 위치 외부에서 통제된 액세스 자원들에 나중에 액세스하는 것을 가능하게 하기 위해 상태 데이터를 사용한다. 예컨대, 일단 학생이 캠퍼스를 떠나면, 구현들은, 마치 학생이 여전히 캠퍼스 내에 있는 것처럼, 학생이 제한된 시간 동안 자원들에 액세스하는 것을 가능하게 한다. 따라서, 구현들은 끊김없는 액세스를 제공한다. 시스템이 인식된 위치 외부에서 발생하는, 통제된 액세스 자원에 대한 요청을 수신할 때, 시스템은 디바이스의 만료되지 않은 상태 데이터를 확인한다. 만료되지 않은 상태 데이터의 위치에 대한 응답으로, 시스템은 통제된 액세스 자원에 대한 URL과 같은 링크에, 링크에 포함된, 예컨대, URL에 첨부된 암호화된 토큰을 제공한다. 자원 소유자/관리자는 요청에서 토큰의 존재를 인식하고, 토큰을 암호해제하고, 암호화되지 않은 토큰 데이터를 사용하여 하나 이상의 검증 테스트들을 수행한다. 테스트들은, 토큰이 만료되었는지 여부, 토큰이 얼마나 여러 번 제공되었는지 그리고/또는 토큰을 생성한 요청 위치로부터 너무 멀리 떨어진 클라이언트 디바이스에 의해 토큰이 제공되었는지 여부를 포함할 수 있다. 이러한 테스트들은, 예컨대, URL들의 공유를 통한 다른 클라이언트 디바이스에 의한 액세스를 차단(discourage)할 수 있다.
[0005] 하나의 일반적인 양상에서, 방법은 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 요청을 수신하는 단계 ― 요청은 클라이언트 디바이스 식별자를 포함함 ―, 요청이 인식된 위치와 연관되지 않는다고 결정하는 단계, 클라이언트 디바이스 식별자에 대한 상태 데이터를 식별하는 단계, 서버에서 통제된 액세스 자원에 액세스하기 위한 링크를 생성하는 단계, 암호화된 토큰을 생성하는 단계 ― 암호화된 토큰은 상태 데이터로부터 타임스탬프, 난수(random number) 및 허가된 자원 정보를 포함함 ―, 암호화된 토큰을 링크에 포함시키는 단계, 및 링크를 클라이언트 디바이스에 제공하는 단계를 포함한다. 링크는 통제된 액세스 자원을 요청하기 위해 사용자 디바이스에 의해 사용되도록 구성된다. 즉, 클라이언트 디바이스는 통제된 액세스 자원을 요청하기 위해 링크를 사용한다.
[0006] 요청은 제1 요청일 수 있고, 통제된 액세스 자원은 제1 통제된 액세스 자원일 수 있고, 제1 요청을 수신하기 전에, 방법은, 클라이언트 디바이스로부터 제2 통제된 액세스 자원에 대한 제2 요청을 수신하는 단계 ― 제2 요청은 클라이언트 디바이스 식별자를 포함함 ―, 제2 요청이 인식된 위치와 연관된다고 결정하는 단계, 클라이언트 디바이스에 대한 상태 데이터를 생성하는 단계, 및 상태 데이터를 메모리에 저장하는 단계를 더 포함할 수 있다.
[0007] 상태 데이터는 타임스탬프, 클라이언트 디바이스 식별자 및 허가된 자원 정보를 포함할 수 있다.
[0008] 허가된 자원 정보는 인식된 위치를 나타낼 수 있다.
[0009] 허가된 자원 정보는 인식된 위치 및 인식된 위치에서 이용가능한 통제된 자원들을 나타낼 수 있다.
[0010] 인식된 위치는 도메인 이름일 수 있다.
[0011] 인식된 위치는 IP(Internet Protocol) 어드레스일 수 있다.
[0012] 요청은 질의일 수 있고, 통제된 액세스 자원은 질의에 응답하는 자원일 수 있다.
[0013] 클라이언트 디바이스 식별자는 사용자 계정일 수 있다.
[0014] 클라이언트 디바이스는 통제된 액세스 자원을 요청하기 위해 링크를 사용할 수 있고, 링크를 사용하는 것은 요청으로 링크를 통제된 자원 서버에 전송하는 것을 포함한다.
[0015] 방법은, 통제된 자원 서버에서, 통제된 액세스 자원에 대한 요청으로 링크를 수신하는 단계, 링크에서 토큰을 식별하는 단계, 토큰을 암호해독하는 단계, 타임스탬프에 기반하여 토큰이 만료되지 않았다고 결정하고 허가된 자원 정보에 기반하여 통제된 액세스 자원이 이용가능하다고 결정함으로써 토큰을 검증하는 단계, 및 토큰이 검증된 것에 대한 응답으로, 통제된 액세스 자원을 클라이언트 디바이스에 제공하는 단계를 더 포함할 수 있다.
[0016] 토큰을 검증하는 단계는 토큰 내에 포함된 IP 서브넷이 요청이 수신된 IP 어드레스의 IP 서브넷과 매칭한다고 결정하는 단계를 더 포함할 수 있다. 즉, 클라이언트 디바이스의 IP 어드레스는 통제된 자원 서버에 의해 결정될 수 있고, 그리고 IP 서브넷이 결정되고, 토큰에 포함된 IP 서브넷과 비교될 수 있다. 이는 다른 것들에 대한 토큰의 분배를 방지할 수 있다.
[0017] 위에 설명된 방법은 하나 이상의 서버들 및/또는 하나 이상의 클라이언트 디바이스들을 포함하는 시스템에서 구현될 수 있다.
[0018] 하나의 일반적인 양상에서, 시스템은 적어도 하나의 프로세서, 클라이언트 디바이스들에 대한 상태 데이터 기록들을 저장하는 데이터 저장소, 및 명령들을 저장하는 메모리를 포함하고, 명령들은, 적어도 하나의 프로세서에 의해 실행될 때, 시스템으로 하여금 동작들을 수행하게 한다. 동작들은 클라이언트 디바이스로부터 질의를 수신하는 동작 ― 클라이언트 디바이스는 디바이스 식별자를 가짐 ―, 및 질의에 응답하는 적어도 하나의 자원이 통제된 액세스 자원이라고 결정하는 동작을 포함한다. 질의가 통제된 액세스 자원에 대한 인식된 위치와 연관된다는 결정에 대한 응답으로, 동작들은 통제된 액세스 자원에 대한 링크를 생성하는 동작, 및 데이터 저장소의 클라이언트 디바이스에 대해 상태 데이터 기록을 생성하는 동작을 포함하고, 상태 데이터는 클라이언트 디바이스 식별자, 타임스탬프, 및 인식된 위치와의 연관성을 포함한다. 질의가 인식된 위치와 연관되지 않는다는 결정에 대한 응답으로, 동작들은 데이터 저장소에서 클라이언트 디바이스 식별자에 대해 만료되지 않은 상태 데이터 기록을 식별하는 동작, 및 만료되지 않은 상태 데이터 기록을 식별하는 것에 대한 응답으로, 토큰을 생성하고 통제된 액세스 자원에 대한 링크에 토큰을 포함시키는 동작을 포함하고, 토큰은 상태 데이터 기록으로부터 난수, 타임스탬프 및 허가된 자원 정보를 포함한다. 데이터 저장소에서 클라이언트 디바이스 식별자에 대한 상태 데이터 기록을 식별하는 데 실패한 것에 대한 응답으로, 동작들은 토큰이 없는 링크를 생성하는 동작, 및 질의에 대한 검색 결과를 클라이언트 디바이스에 반환하는 동작을 포함하고, 검색 결과는 자원에 대한 링크를 포함하고, 클라이언트 디바이스는 통제된 액세스 서버로부터의 자원을 요청하기 위해 자원에 대한 링크를 사용하고, 통제된 액세스 서버는 인식된 위치들과 연관된 요청들로부터의 자원들에 대한 액세스를 제공하도록 구성된다.
[0019] 인식된 위치들과 연관된 요청들로부터의 자원들에 대한 액세스를 제공할 때, 통제된 액세스 서버는: 특정 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 링크를 수신하고 ― 링크는 연관된 위치를 가짐 ―; 위치가 인식된 위치인지 여부를 결정하고; 위치가 인식된 위치라는 결정에 대한 응답으로, 통제된 액세스 자원을 제공하고; 그리고 위치가 인식된 위치가 아니라는 결정에 대한 응답으로: 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로; 통제된 액세스 자원을 제공하고, 그리고 링크에 토큰이 없거나 링크에 포함된 토큰이 만료되었다는 결정에 대한 응답으로, 통제된 액세스 자원에 대한 액세스를 거부하도록 구성될 수 있다.
[0020] 토큰은 요청에 대한 IP 어드레스의 IP 서브넷을 더 포함할 수 있고, 통제된 액세스 서버는, 위치가 인식된 위치가 아니고 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로, 추가로: 특정 클라이언트 디바이스의 IP 서브넷이 토큰 내의 IP 서브넷과 매칭하는지 여부를 결정하고; 그리고 IP 서브넷이 매칭하지 않는다는 결정에 대한 응답으로, 통제된 액세스 자원에 대한 액세스를 거부하도록 구성된다.
[0021] 인식된 위치는 지오로케이션(geolocation)을 나타낼 수 있다.
[0022] 인식된 위치는 IP 어드레스일 수 있다.
[0023] 토큰은 링크에 포함되기 전에 암호화될 수 있다.
[0024] 하나의 일반적인 양상에서, 방법은 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 요청을 수신하는 단계 ― 요청은 위치를 가짐 ―, 위치가 인식된 위치가 아니라고 결정하는 단계, 요청이 토큰을 포함한다고 결정하는 단계 ― 토큰은 타임스탬프, 난수 및 허가된 자원 정보를 포함함 ―, 타임스탬프에 기반하여 토큰이 만료되지 않았다고 결정하는 단계, 허가된 자원 정보에 의해 식별된 자원이 요청된 자원과 매칭한다고 결정하는 단계, 및 통제된 액세스 자원을 클라이언트 디바이스에 제공하는 단계를 포함하고, 그렇지 않은 경우, 클라이언트 디바이스는 통제된 액세스 자원에 대한 액세스가 거부될 것이다.
[0025] 토큰은 암호화되고, 방법은 토큰을 암호해독하는 단계를 더 포함할 수 있다.
[0026] 토큰은 IP 서브넷을 더 포함할 수 있고, 방법은 클라이언트 디바이스에 대한 IP 어드레스가 토큰에 포함된 IP 서브넷과 매칭하는 IP 서브넷을 갖는다고 결정하는 단계를 더 포함할 수 있다.
[0027] 방법은: 토큰에 대한 카운터를 증분시키는 단계 ― 토큰은 난수에 의해 식별됨 ―; 및 토큰에 대한 카운터가 임계치에 도달하지 않았다고 결정하는 단계를 더 포함할 수 있다.
[0028] 일 양상의 선택적인 특징들은 적절한 경우 다른 양상과 결합될 수 있다.
[0029] 하나의 일반적인 양상에서, 컴퓨터-판독 가능한 저장 디바이스 상에 포함된 컴퓨터 프로그램 제품은 명령들을 포함하고, 명령들은, 기판에 형성된 적어도 하나의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 개시된 방법들, 동작들 또는 프로세스들 중 임의의 것을 수행하게 한다. 다른 일반적인 양상은, 실질적으로 도면들 중 적어도 하나에 도시되고 그리고/또는 그와 관련하여 설명되고, 그리고 청구항들에 제시된 바와 같이, 위치 데이터에 기반하여 통제된 액세스 자원들의 끊김없는 액세스를 위한 사용이 제한된 토큰들의 생성을 트리거하는 클라이언트 디바이스들에 대한 상태 데이터를 생성 및 유지하기 위한 시스템 및/또는 방법을 포함한다.
[0030] 본원에 설명된 주제의 구현들 중 하나 이상은 다음의 장점들 중 하나 이상을 실현하도록 구현될 수 있다. 하나의 예로서, 구현들은, 자원에 액세스하기 위한 각각의 링크가 개인적으로 식별 가능한 정보가 없는 고유한 토큰을 갖기 때문에, 사용자 프라이버시를 보호하고, 이는 네트워크/ISP 레벨 모니터링이 토큰들을 사용하여 사용자에 의한 다수의 액세스들을 함께 묶는 것을 방지한다. 또 다른 예로서, 상태 데이터 및 토큰에 클라이언트 디바이스의 IP 어드레스보다는 허가된 자원 정보(예컨대, 가입 정보, 기관 식별자 등)를 기록하는 것은 특정 디바이스 위치들을 기록하는 것을 피하고, 이는 사용자 프라이버시를 추가로 더욱 보호한다. 또 다른 예로서, 일부 구현들은, 토큰을 암호화함으로써 악의적인 사람들(bad actors)이 특정 사용자/클라이언트 디바이스와 기관 사이의 연계를 발견하는 것을 방지한다. 또 다른 예로서, 일부 구현들은, 상태 데이터가 위치가 아닌 자원 또는 자원들의 콜렉션을 식별하는 정보를 포함하기 때문에, 악의적인 사람들이 특정 사용자/클라이언트 디바이스와 기관 간의 연계를 발견하는 것을 방지한다. 또 다른 예로서, 개시된 구현들은, 인식된 위치들 외부에서 이루어진 요청들에 대한 로그인 절차에 대한 필요성을 제거함으로써 클라이언트 디바이스들 상의 프로세싱 사이클들 및 대역폭 소비를 감소시킨다. 로그인 절차들은 프로세싱 사이클들 및 대역폭을 소비하며, 타임-아웃(예컨대, 특정 기간 동안 비활성)으로 인해 종종 반복되어야 한다. 대역폭의 사용 및 프로세싱 사이클들을 감소시키는 것은, 예컨대, 클라이언트 디바이스가 모바일 폰 또는 태블릿인 모바일 환경에서 특히 중요한데, 왜냐하면 그렇게 하면 배터리 수명을 보전하기 때문이다. 로그인 절차를 제거하는 것은 또한 액세스가 끊기지 않게 함으로써 사용자 경험을 개선하고, 즉, 통제된 자원들에 액세스하기 위해 추가적인 프로세스를 설정하거나 추가적인 입력을 제공하도록 사용자에게 요구되지 않는다. 따라서, 구현들은 사용자가 인식된 위치 외부에서 통제된 자원에 액세스하는 데 소요되는 시간 및 컴퓨팅 자원들을 감소시킨다. 끊김없는 액세스는 또한 자원들의 사용(즉, 수요)을 증가시키고, 이는 기관들 및 자원 소유자들이 그러한 서비스들을 제공하기 위한 인센티브들을 증가시킨다.
[0031] 하나 이상의 구현들의 세부사항들은 첨부된 도면들 및 이하의 설명에서 제시된다. 다른 특징들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
[0032] 도 1a 및 1b는 개시된 주제에 따른 예시적인 시스템들을 예시하는 블록도들이다.
[0033] 도 2는 개시된 주제에 따라 사용되는 예시적인 데이터 구조들을 예시한다.
[0034] 도 3은 개시된 구현들에 따른, 인식된 위치들 외부에서 통제된 자원들에 액세스하기 위한 예시적인 프로세스의 흐름도를 예시한다.
[0035] 도 4는 설명된 기법들을 구현하는 데 사용될 수 있는 컴퓨터 디바이스의 예를 도시한다.
[0036] 도 5는 설명된 기법들을 구현하는 데 사용될 수 있는 분산형 컴퓨터 디바이스의 예를 도시한다.
[0037] 다양한 도면들 내의 유사한 참조 심볼들은 유사한 엘리먼트들을 나타낸다.
[0038] 도 1은 예시적인 구현에 따른 통제된 액세스 시스템의 블록도이다. 시스템(100)은, 클라이언트 디바이스가 제한된 시간 동안 인식된 위치 외부에서 위치-기반 통제된 액세스 자원들에 끊김없이 액세스하는 것을 가능하게 하는데 사용될 수 있다. 클라이언트 디바이스의 사용자가 인식된 위치뿐만 아니라 인식된 위치 외부에서 동일한 방식으로 자원들에 액세스하기 때문에, 액세스가 끊기지 않는다. 다시 말해서, 제한된 시간 기간 내에 수행되는 한, 인식된 위치로부터 통제된 액세스 자원에 액세스하는 것과 인식된 위치 외부로부터 이 자원에 액세스하는 것 사이에는, 사용자에게 어떠한 차이도 없다. 액세스는, 사용자가 인식된 위치에 여전히 연계되는 것을 보장하기 위해 시간이 제한된다. 시스템(100)은 개인적으로 식별 가능한 정보를 사용하지 않고서 액세스를 그랜트할 수 있고, 이는 사용자 프라이버시를 보호한다. 시스템(100)은, 디바이스가 인식된 위치를 통해 통제된 자원들에 액세스할 때 디바이스에 대한 상태 데이터를 기록한다. 상태 데이터는 클라이언트 디바이스와 인식된 위치 사이의 연계를 통해 이용가능한 허가된 자원들을 식별하는 데 사용되는 정보를 기록한다. 상태 데이터는 일정 시간 기간 후에 만료되고, 예컨대, 제한된 시간 동안 유효하다. 클라이언트 디바이스가 인식된 위치를 통해 자원에 액세스할 때마다, 상태 데이터가 업데이트되고, 예컨대, 새로운 기록이 기입(write)되거나 클라이언트 디바이스에 대한 기록이 업데이트된다. 클라이언트 디바이스가 인식된 위치 외부에서 통제된 자원에 액세스하려고 시도하면, 시스템(100)은 클라이언트 디바이스에 대한 상태 데이터를 인식하고, 토큰을 생성하기 위해 상태 데이터의 허가된 자원 정보를 사용하고, 토큰은 자원의 소유자에게 전달된다. 소유자는 토큰을 인식하고, 자원에 대한 액세스를 허용할 수 있다. 토큰은 오용(misuse)을 차단하기 위해 매우 짧은 시간 기간 동안 유효할 수 있으며, 프라이버시를 보호하고 남용에 대한 기회들을 추가로 제한하기 위해 암호화될 수 있다. 도 1의 시스템(100)은 자원 액세스 서버(110) 및 통제된 자원 서버(180)를 포함하는 시스템으로 예시된다. 그러나, 자원 액세스 서버(110)의 사용이 요구되지는 않고, 자원 액세스 서버(110)에 의해 수행되는 것으로 설명된 기능들은 통제된 자원 서버(180)에서 수행될 수 있다. 따라서, 구현들은 예시된 바로 그 구성으로 제한되지 않는다.
[0039] 인식된 위치(160)는 도서관, 교육 기관, 기업, 병원, 기업 시스템 등과 같은 특정 기관과 연관된 물리적 위치 또는 IP 어드레스일 수 있다. 기관은, 예컨대, 가입 합의, 고용 합의 또는 다른 계약 협의를 통해서 인식된 위치(160)를 통해 통제된 액세스 아이템들에 대한 액세스를 제공할 수 있다. 일부 구현들에서, 기관은 통제된 자원 서버(180)의 소유자/관리자/운영자일 수 있다. 설명의 편의를 위해, 본원에 사용되는 통제된 자원 서버(180)의 소유자에 대한 언급은 또한 자원들의 관리자 및/또는 통제된 자원 서버(180)의 운영자를 지칭한다. 일부 구현들에서, 기관은 통제된 자원 서버(180)의 소유자와 합의할 수 있다. 어느 경우에도, 기관은 인식된 위치(160)를 통해 통제된 액세스 아이템들에 대한 액세스를 사용자들에게 제공할 수 있다. 인식된 위치(160)는 연관된 위치 정보를 갖는다. 일부 구현들에서, 인식된 위치 정보는 IP(Internet protocol) 어드레스 또는 그 일부일 수 있다. 이는 전체 IP 어드레스, IP 서브넷, 도메인(예컨대, institution.net), 서브-도메인(예컨대, subscription.institution.net 또는 www.institution.net/subscription), 이메일 도메인 등일 수 있다. 일부 구현들에서, 위치 정보는 물리적 위치 정보일 수 있다. 예컨대, IP 어드레스 또는 그의 일부 부분은 물리적 위치에 맵핑될 수 있다. 다른 예로서, 클라이언트의 브라우저는 지오로케이션 API를 포함할 수 있고, 이 정보는 위치 정보로서 사용될 수 있다. 다른 유사한 타입들의 정보는 인식된 위치(160)를 식별하는 데 사용되는 위치 정보에 사용될 수 있다.
[0040] 통제된 액세스 시스템(100)은 자원 액세스 서버(110)를 포함할 수 있는데, 이는 다수의 다른 디바이스들의 형태, 예컨대, 표준 서버, 이러한 서버들의 그룹 또는 랙 서버 시스템의 형태를 취하는 컴퓨팅 디바이스 또는 디바이스들일 수 있다. 예컨대, 자원 액세스 서버(110)는 다수의 컴퓨팅 디바이스들에 걸쳐 분산형 방식으로 구현될 수 있다. 게다가, 서버(110)는 개인용 컴퓨터로 구현되거나 몇몇의 개인용 컴퓨터들에 걸쳐 분산될 수 있다. 자원 액세스 서버(110)는 도 4에 도시된 컴퓨터 디바이스(400), 또는 도 5에 도시된 컴퓨터 디바이스(500)의 예일 수 있다. 자원 액세스 서버(110)는 하나 이상의 머신 실행 가능한 명령들 또는 소프트웨어, 펌웨어 조각들, 또는 이들의 조합을 실행하도록 구성된, 기판에 형성된 하나 이상의 프로세서들을 포함할 수 있다. 프로세서들은 반도체 기반일 수 있고, 즉, 프로세서들은 디지털 로직을 수행할 수 있는 반도체 재료를 포함할 수 있다.
[0041] 자원 액세스 서버(110)는 또한 하나 이상의 컴퓨터 메모리들을 포함할 수 있다. 메모리들, 예컨대, 메인 메모리는 일시적으로, 영구적으로, 반-영구적으로 또는 이들의 조합으로 하나 이상의 데이터 조각들을 저장하도록 구성될 수 있다. 메모리들은, 하나 이상의 프로세서들에 의해 판독 및/또는 실행될 수 있는 포맷의 정보를 저장하는 임의의 타입의 저장 디바이스를 포함할 수 있다. 메모리들은 휘발성 메모리, 비-휘발성 메모리 또는 이들의 조합을 포함할 수 있으며, 하나 이상의 프로세서들에 의해 실행될 때 특정 동작들을 수행하는 모듈들 또는 엔진들을 저장할 수 있다. 일부 구현들에서, 모듈들은 외부 저장 디바이스에 저장되고 서버(110)의 메모리에 로딩될 수 있다. 일부 구현들에서, 모듈들은 액세스 엔진(120) 및 검증 엔진(122)을 포함할 수 있다. 액세스 엔진(120)은 다양한 자원들을 검색하고 이들에 대한 액세스를 제공하는 데 사용되는 웹 사이트 또는 포털을 나타낸다. 일부 구현들에서, 액세스 엔진(120)은 검색 엔진일 수 있고, 질의들에 대한 응답으로 검색 결과들을 제공하기 위해 인덱스(112)를 사용할 수 있다. 인덱스(112)는 질의에 응답하는 자원들을 찾는 데 사용되는 임의의 타입의 인덱스일 수 있다. 인덱스(112)는 몇몇의 상이한 서버들로부터의 자원들, 예컨대, 인터넷을 통해 이용가능한 자원들을 포함할 수 있다. 인덱스(112)는 복수(도시되지 않음)의 통제된 자원 서버들(180)로부터의 자원들을 포함할 수 있다. 인덱스(112)는 복수의 통제된 자원 서버들(180) 및 통제되지 않은 자원들을 갖는 다른 서버들(도시되지 않음)로부터의 자원들을 포함할 수 있다. 일부 구현들에서, 인덱스(112)는 인터넷을 통해 이용가능한 하나 이상의 자원들의 인덱스일 수 있다. 일부 구현들에서, 인덱스(112)는 인트라넷을 통해 제공되는 자원들의 인덱스일 수 있다. 일부 구현들에서, 인덱스(112)는, 자원들의 하나 이상의 특정 카테고리들, 예컨대, 전자책들, 노래들, 비디오들, 학술 논문들, 백서들 등의 인덱스일 수 있다. 인덱스(112)는 자원 액세스 서버(110)의 메모리에 저장될 수 있다. 인덱스(112)는, 총괄적으로 자원 액세스 서버(110)로 간주되는 복수의 컴퓨팅 디바이스들의 메모리에 걸쳐 분산될 수 있다. 인덱스(112) 중 일부 또는 전부는 자원 액세스 서버(110)와는 별개이지만 이에 액세스 가능한 메모리에 저장될 수 있다.
[0042] 자원 액세스 서버(110)는 또한 액세스 데이터베이스(116)를 포함할 수 있다. 액세스 데이터베이스(116)는 자원 액세스 서버(110)의 메모리에 저장될 수 있다. 액세스 데이터베이스(116)는 자원 액세스 서버(110)에 액세스 가능한 메모리에 저장될 수 있다. 액세스 데이터베이스(116)는, 특정 통제된 액세스 자원 및/또는 특정 통제된 자원 서버에 대해 어떤 위치가 인식되었는지를 나타내는 정보를 포함할 수 있다. 예컨대, 액세스 데이터베이스(116)는, 각각의 통제된 액세스 자원에 대해, 어떤 위치들이 인식되었는지를 나타낼 수 있다. 다른 예로서, 액세스 데이터베이스(116)는, 각각의 위치에 대해, 그 위치가 액세스할 수 있는 통제된 액세스 자원들을 나타낼 수 있다. 다른 예로서, 액세스 데이터베이스(116)는, 통제된 액세스 자원들의 카테고리에 대해, 어떤 위치들이 인식된 위치들인지를 나타낼 수 있다. 다른 예로서, 액세스 데이터베이스(116)는, 특정 통제된 자원 서버(180)에 대해 어떤 위치들이 인식되었는지를 나타내는 정보를 포함할 수 있다. 예컨대, 액세스 데이터베이스(116)는, 각각의 통제된 자원 서버(180)에 대해, 해당 서버에 대해 인식된 위치들인 위치들을 나타낼 수 있고, 서버는 서버(180)에서 모든 통제된 액세스 자원들에 대한 액세스를 그랜트한다. 다른 유사한 결합들이 가능하다. 일부 구현들에서, 액세스 데이터베이스(116)는 인덱스(112)에 통합된다. 예컨대, 인덱스의 각각의 자원에 대해, 인덱스 엔트리는 해당 자원에 대해 인식된 위치들로 간주되는 위치와의 연관성을 포함할 수 있다. 일부 구현들에서, 자원이 질의에 응답하는 것으로 결정되면, 자원 액세스 서버(110)는, 질의가 해당 자원에 대해 인식된 위치와 연관되고 그리고/또는 그로부터 왔을 때, 검색 결과에 자원(즉, 자원에 대한 URL 또는 다른 링크)을 포함시킨다. 일부 구현들에서, 자원 액세스 서버(110)는, 요청이 인식된 위치와 연관될 때(예컨대, 이로부터 왔을 때) 자원에 대한 하나의 링크, 및 요청이 인식된 위치와 연관되지 않을 때 상이한 링크를 포함한다.
[0043] 검증 엔진(122)은 질의에 대한 응답으로 인덱스(112)에 액세스 데이터베이스(116)를 적용할 수 있다. 예컨대, 검증 엔진(122)은, 질의가 인식된 위치에서 발생하는지, 그와 연관되는지 또는 그와 관련되지 않는지를 결정할 수 있다. 질의가 질의에 응답하는 통제된 액세스 자원에 대한 인식된 위치에서 발생한 경우, 액세스 엔진(120)은 검색 결과에 포함될 통제된 액세스 자원에 대한 링크를 생성할 수 있다. 질의가 인식된 위치와 연관되지만 이로부터 발생하지 않는 경우, 액세스 엔진(120)은 암호화된 토큰을 생성하고, 검색 결과에 링크와 함께 암호화된 토큰을 포함시킬 수 있다. 일부 구현들에서, 암호화된 토큰이 링크에 첨부될 수 있다. 일부 구현들에서, 암호화된 토큰이 링크에 삽입될 수 있다. 일부 구현들에서, 암호화된 토큰을 갖는 링크는, 암호화된 토큰을 포함하지 않는 경우에, 인식된 위치에서 발생하는 요청에 대한 링크와 동일하다. 검증 엔진(122)은 암호화 키(118)를 사용하여 토큰을 암호화할 수 있다. 암호화 키(118)는 통제된 자원 서버(180)와 공유되어, 통제된 자원 서버(180)는 암호화된 토큰을 포함하는 링크를 수용하고 검증할 수 있다. 검증 엔진(122)은, 인식된 위치에서 발생하지 않은 질의가 인식된 위치와 연관되는지 여부를 결정하기 위해 상태 데이터(114)를 사용할 수 있다.
[0044] 상태 데이터(114)는 특정 클라이언트 디바이스와 인식된 위치 사이의 연계를 허가된 자원 정보로서 기록하는 정보이다. 검증 엔진(122)은, 클라이언트 디바이스(170)가 인식된 위치(160)를 통해 자원 액세스 서버(110)에 액세스할 때, 클라이언트 디바이스(170)에 대한 상태 데이터(114)를 기입(write)할 수 있다. 예컨대, 학생은 대학(인식된 위치(160))의 WiFi를 사용하여 질의를 자원 액세스 서버(110)에 전송할 수 있다. 자원 액세스 서버(110)는, 액세스 데이터베이스(116)에서 인식된 위치들 중 하나인 WiFi IP 어드레스에서 질의가 발생한다는 것을 인식할 수 있다. 질의가 인식된 위치(예컨대, 대학 WiFi)를 통해 이루어졌다고 인식하는 것에 대한 응답으로, 액세스 엔진(120)은 모바일 폰과 WiFi IP 어드레스 간의 연관성을 상태 데이터(114)에 기록할 수 있다. 상태 데이터(114)는 자원 액세스 서버(110)에서 임의의 타입의 메모리에 저장될 수 있다. 상태 데이터(114)는 자원 액세스 서버(110)에 액세스 가능한 메모리에 저장될 수 있다. 상태 데이터(114)는, 특정 클라이언트 디바이스(170)에 대해, 하나 이상의 허가된 자원 식별자들을 저장한다. 허가된 자원 식별자들은, 기관과의 연계에 기반하여 클라이언트 디바이스(170)가 액세스하는 자원들(예컨대, 하나 이상의 자원들)의 리스트와 클라이언트 디바이스(170) 간의 연관성을 나타낸다.
[0045] 도 2는 상태 데이터를 저장하는 데 사용되는 예시적인 데이터 구조를 예시한다. 상태 데이터(205) 데이터 구조는 상태 데이터(114)의 기록의 예이다. 도 2의 예에서, 상태 데이터(205)는 타임스탬프(210)를 포함한다. 타임스탬프(210)는 연계에 대한 시간 제한을 강제하는 데 사용된다. 상태 데이터(205)는 일부 설정된 시간 기간(예컨대, 30 일, 7 일, 1 일 등) 동안 유효할 수 있다. 시간 제한은, 예컨대, 인식된 위치와 연관된 기관, 통제된 액세스 자원들의 소유자 또는 이들의 조합에 의해 계약상으로(contractually) 지정될 수 있다. 예컨대, 특정 대학은, 학생들이, 예컨대, 캠퍼스를 방문하고 학생들의 디바이스로 캠퍼스 WiFi를 사용함으로써, 적어도 매주 또는 매월 상태 데이터를 리프레시(refresh)하도록 요구할 수 있다. 타임스탬프(210)는, 상태 데이터가 만료되는 시간일 수 있다. 타임스탬프(210)는, 상태 데이터가 생성 및/또는 업데이트되는 시간일 수 있고, 상태 데이터(205)는 일부 미리 결정된 시간이 경과한 후에 만료된다. 상태 데이터(205)는 또한 디바이스 식별자(215)를 포함한다. 디바이스 식별자(215)는 요청을 하는 클라이언트 디바이스, 예컨대, 클라이언트 디바이스(170)를 식별한다. 일부 구현들에서, 디바이스 식별자(215)는 쿠키로부터의 값일 수 있다. 쿠키는 종래의 방법을 사용하여 기관에 의해 클라이언트 디바이스(170)에 제공될 수 있다. 일부 구현들에서, 디바이스 식별자(215)는 사용자 계정일 수 있다. 이러한 구현들에서, 상태 데이터(205)는 사용자 계정의 속성으로 간주될 수 있다. 디바이스 식별자(215)는 클라이언트 디바이스를 고유하게 식별하는 데 사용되는 임의의 정보일 수 있다. 상태 데이터(205)는 또한 허가된 자원 정보(220)를 포함할 수 있다. 허가된 자원 정보(220)는, 예컨대, 클라이언트 디바이스가 인식된 위치를 통해 요청을 하는 것에 기반하여, 클라이언트 디바이스에 이용가능한 자원들을 식별하는 데 사용된다. 예컨대, 허가된 자원 정보(220)는, 예컨대, 캠퍼스 WiFi에 대한 IP 어드레스, 도서관 웹사이트의 도메인, 회사 프록시, 또는 인식된 위치에 대한 가입자 식별자 또는 위치 코드 등일 수 있다.
[0046] 자원 액세스 서버(110)는, 자원 액세스 서버(110)가 인식된 위치를 통해 클라이언트 디바이스로부터 요청을 수신할 때마다, 클라이언트 디바이스에 대한 상태 데이터를 생성 또는 업데이트할 수 있다. 상태 데이터를 생성하는 것은 클라이언트 디바이스 및 인식된 위치에 대한 새로운 기록을 기입하는 것을 포함한다. 상태 데이터를 업데이트하는 것은, 클라이언트 디바이스 및 인식된 위치에 대한 상태 데이터(114)의 기존의 기록의 타임스탬프를 업데이트하는 것을 포함한다. 상태 데이터(114)의 만료는, 인식된 위치와 활성이고 진행중인 연계를 갖는 사람들에게, 인식된 위치 외부에서 자원들에 대한 액세스가 그랜트되는 것을 보장한다. 일부 구현들에서, 상태 데이터(114)는 서버에서 쿠키 정보와 함께 저장될 수 있다. 일부 구현들에서, 상태 데이터(114)는 사용자 계정과 연관될 수 있다. 예컨대, 사용자는 자원 액세스 서버(110)에 계정을 가질 수 있고, 상태 데이터는 사용자 계정과 연관될 수 있다. 예컨대, 사용자는, 도서관에서 도서관 포털을 사용하는 동안 자원 액세스 서버(110)에서 자신들의 계정에 로그인할 수 있다. 일부 구현들에서, 도서관의 인식된 위치와의 연관성은 사용자의 계정의 일부로서 저장될 수 있다. 일부 구현들에서, 도서관의 인식된 위치와 사용자 계정 간의 연관성은 자원 액세스 서버에서의 별개의 데이터 저장소에 기록된다.
[0047] 통제된 액세스 자원이 인식된 위치에서 발생하지 않지만 만료되지 않은 상태 데이터와 연관된 질의에 응답하는 경우, 액세스 엔진(120)은 자원에 대한 토큰을 생성할 수 있다. 일부 구현들에서, 각각의 자원은 개개의 토큰을 갖는다. 도 2는 예시적인 토큰(250)을 예시한다. 토큰(250)은 타임스탬프(225)를 포함한다. 타임스탬프(225)는 토큰이 생성된 시간을 나타낼 수 있거나, 타임스탬프(255)는 토큰이 만료되는 시간을 나타낼 수 있다. 어느 경우에서든, 시스템은, 타임스탬프(225)를 사용하여 토큰이 만료되지 않았다고 검증할 수 있다. 토큰이 유효한 윈도우는 짧을 수 있다(예컨대, 1 시간 또는 몇 시간). 토큰(250)은 또한 난수(230)를 포함할 수 있다. 난수는 토큰이 고유하다는 것을 보장한다. 고유성은, 통제된 자원 서버(180)의 검증 엔진(186)이 토큰이 너무 많이 사용되지 않도록 보장할 수 있게 한다. 일부 구현들에서, 토큰들은, 예컨대, URL에 의해 식별되는 특정 자원에 대해 제한된 사용을 위해 의도되고, 한 시간 정도만 유효할 수 있다. 예컨대, 새로운 토큰을 생성하지 않고, 브라우저 "뒤로" 버튼 또는 "앞으로" 버튼을 통해 제한된 수의 액세스들이 허용될 수 있지만, 너무 많은 액세스들은 링크 공유의 표시일 수 있다. 난수(230)는 고유성을 보장하기 위해 환경에 적합한 크기를 가질 수 있다. 일부 구현들에서, 이것은 64-비트 수일 수 있지만, 구현 환경에 의존하여 더 크거나 더 작을 수 있다. 토큰(250)은 또한 허가된 자원 정보(235)를 포함할 수 있다. 허가된 자원 정보(235)는 클라이언트 디바이스에 이용가능한 자원들을 식별하는 데 사용된다. 허가된 자원 정보(235)는 인식된 위치에 대한 식별자를 포함할 수 있다. 허가된 자원 정보(235)는 자원에 대한 식별자를 포함할 수 있다. 허가된 자원 정보(235)는 통제된 자원 서버로부터 이용가능한 자원들의 콜렉션에 대한 콜렉션 식별자를 포함할 수 있다. 허가된 자원 정보(235)는 물리적 위치 식별자를 포함할 수 있다. 허가된 자원 정보(235)는, 인식된 위치로부터의 요청에 대해 수행되는 것처럼, 요청자가 요청된 자원에 액세스하는지 여부를 통제된 자원 서버(180)가 결정할 수 있게 하는 임의의 정보이다. 일부 구현들에서, 예컨대, 다른 서버 또는 프로세스가 URL 및/또는 토큰을 생성하기 전에 요청자가 액세스한다고 이미 검증하였다면, 허가된 자원 정보는 선택적일 수 있다. 토큰(250)은 또한 토큰의 생성을 트리거한 클라이언트 디바이스의 IP 서브넷(245)을 포함할 수 있다. IP 서브넷(245)은 통제된 자원 서버(180)가 남용을 식별할 수 있게 한다. 예컨대, IP 서브넷(245)은 지하철로 이동하는 사용자가 상이한 셀 타워로 스위칭한 후 자원에 액세스하도록 허용할 수 있지만, 디바이스가 IP 서브넷 외부에서 이동하는 경우 자원에 대한 액세스를 허용하지 않을 것이다. 이것은, 토큰의 만료와 함께 그리고 일정 임계수를 초과하지 않는 몇 번의 프리젠테이션을 허용하여, 다른 것들에 대한 토큰의 분배를 방지한다.
[0048] 일단 생성되면, 각각의 토큰은 암호화 키(118)를 사용하여 암호화될 수 있고, 응답 제어 액세스 자원에 대한 링크(예컨대, URL)에 포함될 수 있다. 링크는 질의 요청자, 예컨대, 클라이언트 디바이스(170)의 사용자가 통제된 자원 서버(180)로부터 자원을 요청할 수 있도록 한다.
[0049] 통제된 액세스 시스템(100)은 통제된 자원 서버(180)를 포함할 수 있는데, 이는 또한 다수의 다른 디바이스들의 형태, 예컨대, 표준 서버, 이러한 서버들의 그룹 또는 랙 서버 시스템의 형태를 취하는 컴퓨팅 디바이스 또는 디바이스들일 수 있다. 예컨대, 통제된 자원 서버(180)는 다수의 컴퓨팅 디바이스들에 걸쳐 분산형 방식으로, 개인용 컴퓨터에서 구현되거나, 또는 다수의 개인용 컴퓨팅 디바이스들에 분산될 수 있다. 통제된 자원 서버(180)는 도 4에 도시된 컴퓨터 디바이스(400), 또는 도 5에 도시된 컴퓨터 디바이스(500)의 예일 수 있다. 통제된 자원 서버(180)는 하나 이상의 머신 실행 가능한 명령들 또는 소프트웨어, 펌웨어 조각들, 또는 이들의 조합을 실행하도록 구성된, 기판에 형성된 하나 이상의 프로세서들을 포함할 수 있다. 프로세서들은 반도체 기반일 수 있고, 즉, 프로세서들은 디지털 로직을 수행할 수 있는 반도체 재료를 포함할 수 있다.
[0050] 통제된 자원 서버(180)는 하나 이상의 컴퓨터 메모리들을 포함할 수 있다. 메모리들, 예컨대, 메인 메모리, 캐시 메모리, 디스크 메모리 등은 일시적으로, 영구적으로, 반-영구적으로 또는 이들의 조합으로 하나 이상의 데이터 조각들을 저장하도록 구성될 수 있다. 메모리들은, 하나 이상의 프로세서들에 의해 판독 및/또는 실행될 수 있는 포맷의 정보를 저장하는 임의의 타입의 저장 디바이스를 포함할 수 있다. 메모리들은 휘발성 메모리, 비-휘발성 메모리 또는 이들의 조합을 포함할 수 있으며, 하나 이상의 프로세서들에 의해 실행될 때 특정 동작들을 수행하는 데이터 및/또는 모듈들 또는 엔진들을 저장할 수 있다. 일부 구현들에서, 데이터 및/또는 모듈들은 외부 저장 디바이스에 저장될 수 있고, 통제된 자원 서버(180)의 메모리에 로딩될 수 있다. 통제된 자원 서버(180)는, 하나 이상의 메모리들에 저장되는 통제된 액세스 자원들(182)을 포함할 수 있다. 통제된 액세스 자원(182)은 임의의 종류의 자원의 저장소, 예컨대, 문서, 오디오 파일(예컨대, 음악 또는 오디오 북), 비디오 파일, 이미지, 웹 페이지, 애플리케이션 또는 다른 실행 가능한 파일, 제품들 등, 또는 이들 중 임의의 것의 콜렉션, 이를테면, 노래들의 앨범, 제품들의 카탈로그 또는 논문들의 저널일 수 있다. 일부 구현들에서, 통제된 액세스 자원(182)은 다수의 컴퓨팅 디바이스들에 걸쳐 분산될 수 있다.
[0051] 통제된 자원 서버(180)는 메모리들 중 하나 이상의 메모리에 모듈로서 저장된 검증 엔진(186)을 포함할 수 있다. 검증 엔진(186)은 통제된 액세스 자원(182)에 대한 액세스를 제어한다. 예컨대, 검증 엔진(186)은, 인식된 위치들로부터의 요청들에 대한 응답으로, 통제된 액세스 자원들(182)을 제공할 수 있다. 인식된 위치는, 통제된 액세스 자원들(182) 중 하나 이상에 액세스하는 것으로, 통제된 자원 서버(180)에 의해 인식된 임의의 정보이다. 기관이 통제된 자원 서버(180)의 소유자 또는 운영자와 합의(예컨대, 허가(license), 가입)를 했기 때문에, 위치가 인식될 수 있다. 예컨대, 대학은 특정 저널들, 저널 논문들, 책들 등에 액세스하기 위해 게시자로부터 가입권(subscription)을 받을 수 있다. 게시자는 캠퍼스 내 IP 어드레스들에서 오는 요청을 인식된 위치에서 오는 것으로 인식할 수 있다. 또 다른 예로서, 도서관은 특정 오디오 북 제목들 또는 전자 책들에 대한 액세스를 위해 오디오 북 제공자 또는 다른 게시자와 합의를 할 수 있다. 오디오 북 제공자는 도서관의 도메인에서 발생하는 요청들을 인식된 위치로서 인식할 수 있다. 다른 예로서, 회사는 특정 VPN(virtual private network), 기업 서버 또는 프록시 서버를 사용하는 고용인에게 특정 웹 페이지들 또는 내부 문서들에 대한 액세스를 그랜트할 수 있다. 회사는 VPN에서 오는 요청들을 인식된 위치에서 오는 것으로 인식할 수 있다. 또 다른 예로서, 회사는, 프록시 서버에서 오는 요청에 기반하여, 고객 관계 관리 시스템(CRM), 계류중인 작업/티켓 관리 시스템, 재고 관리 시스템 등과 같은 아웃소싱 서비스에 대한 액세스를 그랜트할 수 있다. 이 리스트는 완전한 것이 아니며 비-제한적인 예들로만 의도된다.
[0052] 검증 엔진(186)은 자원에 대한 들어오는 요청에 대해 일련의 테스트들을 수행할 수 있다. 하나의 테스트는, 인식된 위치가 요청된 자원에 액세스하는지 여부일 수 있다. 위에 표시된 바와 같이, 통제된 액세스 자원들(182)의 모든 자원들이 특정 인식된 위치에서 이용가능한 것은 아닐 수 있다. 이러한 구현들에서, 검증 엔진(186)은, 요청된 자원이 인식된 위치로부터 액세스 가능하지 않다는 결정에 대한 응답으로, 요청에 대한 액세스를 거부할 수 있다. 일부 구현들에서, 검증 엔진(186)은, 요청이 인식된 위치로부터의 것인지 여부를 결정할 수 있다. 요청이 인식된 위치로부터 오는 경우, 일부 구현들에서, 검증 엔진(186)은 통제된 액세스 자원들(182)로부터 요청된 자원을 요청자에게 제공할 수 있다. 요청된 자원은 링크, 예컨대, URL에 의해 식별되는 자원이다. 일부 구현들에서, 통제된 자원 서버(180)는 추가적인 검증들, 예컨대, 알려진 프로세스들을 사용하여 급증(spiky) 또는 악의적인 거동(abusive behavior)의 모니터링을 수행할 수 있다.
[0053] 요청이 인식된 위치로부터 오는 것이 아니라면, 검증 엔진(186)은 요청이 토큰을 포함하는지 여부를 결정할 수 있다. 토큰은 암호화될 수 있고, 마치 요청이 인식된 위치에서 오는 것처럼, 제한된 시간 동안, 통제된 액세스 자원들(182)에 대한 액세스를 제공하기 위해 시스템에 의해 사용된다. 검증 엔진(186)은 암호화 키(188)를 사용하여 토큰을 암호해독할 수 있다. 암호화 키(188)는 클라이언트 디바이스, 예컨대, 자원 액세스 서버(110)에 대한 상태 데이터를 추적하고 유지하는 서버와 통제된 자원 서버(180) 간에 공유된다. 토큰(250)과 관련하여 위에서 논의된 바와 같이, 토큰은, 검증 엔진(186)이 요청의 추가적인 검증을 수행하기 위해 사용하는 데이터를 포함할 수 있다. 토큰을 갖는 요청이 검증 요청들을 통과하면, 검증 엔진(186)은, 마치 요청이 인식된 위치에서 나온 것처럼 요청된 자원을 제공한다.
[0054] 통제된 액세스 시스템(100)은 클라이언트 디바이스(170)를 포함할 수 있다. 클라이언트 디바이스(170)는, 인식된 위치(160)뿐만 아니라 다른 위치들을 통해 자원들을 요청할 수 있는, 스마트 폰 또는 다른 핸드헬드 컴퓨팅 디바이스, 태블릿, 웨어러블 컴퓨팅 디바이스, 랩톱 컴퓨터, 넷북, e-리더, 개인용 컴퓨터, 스마트 스피커, 프로세서를 갖는 텔레비전 등과 같이, 사용자에게 속한 임의의 컴퓨팅 디바이스일 수 있다. 클라이언트 디바이스(170)는 도 4에 도시된 바와 같이 컴퓨터 디바이스(400 또는 450)의 예일 수 있다.
[0055] 클라이언트 디바이스(170)는 하나 이상의 머신 실행 가능한 명령들 또는 소프트웨어, 펌웨어 조각들, 또는 이들의 조합을 실행하도록 구성된, 기판에 형성된 하나 이상의 프로세서들을 포함할 수 있다. 프로세서들은 반도체 기반일 수 있고, 즉, 프로세서들은 디지털 로직을 수행할 수 있는 반도체 재료를 포함할 수 있다. 따라서, 클라이언트 디바이스(170)는 일시적으로, 영구적으로, 반-영구적으로 또는 이들의 조합으로 하나 이상의 데이터 조각들을 저장하도록 구성된 하나 이상의 컴퓨터 메모리들을 포함할 수 있다. 클라이언트 디바이스(170)는 식별자(175)와 연관될 수 있다. 식별자(175)는, 예컨대, 쿠키를 통해, 자원 액세스 서버(110)에 의해 제공될 수 있다. 식별자(175)는 사용자 계정에 대한 사용자 식별자, 예컨대, 고유한 사용자 이름일 수 있다. 클라이언트 디바이스(170)는 소프트웨어, 펌웨어, 또는 이들의 조합의 형태로 머신 실행 가능한 명령들을 나타내는, 브라우저와 같은 애플리케이션들(도시되지 않음)을 포함할 수 있다. 클라이언트 디바이스(170)는 애플리케이션들을 사용하여 자원들을 요청하고 액세스할 수 있다. 일부 구현들에서, 애플리케이션들은 모바일 애플리케이션들일 수 있다.
[0056] 클라이언트 디바이스(170), 자원 액세스 서버(110) 및/또는 통제된 자원 서버(180)는 하나 이상의 네트워크들을 통해 서로 그리고 다른 클라이언트 디바이스들 및 서버들과 통신할 수 있다. 네트워크들(도시되지 않음)은, 예컨대, 게이트웨이 디바이스들, 브리지들, 스위치들, 케이블들, 라우터들 등을 사용하여 구현되는, 예컨대, 인터넷, 유선 또는 무선 LAN(Local Area Network), WiFi 연결, 이더넷 연결, WAN(Wide Area Network), 셀룰러 데이터 네트워크 및/또는 통신 네트워크 등일 수 있다.
[0057] 도 1a의 예에서, 클라이언트 디바이스(170)는 인식된 위치(160)를 통해 자원 액세스 서버(110)에 연결된다. 연결은 WiFi, 이더넷, 인트라넷 또는 다른 유사한 타입의 연결일 수 있다. 연결은 또한, 예컨대, 로그인을 통한 VPN 또는 인터넷 연결일 수 있다. 클라이언트 디바이스(170)는 인식된 위치(160)를 통해 자원을 요청한다(예컨대, 화살표 1). 자원 액세스 서버(110)는 검색 엔진 웹사이트, 도서관 포털, 병원 포털 등과 같은 공통 액세스 포털을 나타낸다. 요청(예컨대, 화살표 1)은 일반적인 질의 또는 특정 자원에 대한 질의 형태일 수 있다. 자원 액세스 서버(110)는, 질의에 응답하는 자원에 대한 하나 이상의 링크들을 포함하는 응답(예컨대, 화살표 2)을 생성한다. 요청이 일반적인 질의인 경우, 자원 액세스 서버(110)는, 하나 이상의 통제된 액세스 자원들을 포함할 수 있는 응답 자원들에 대한 링크들을 제공할 수 있다. 요청이 특정 자원에 대한 것인 경우, 응답은 해당 자원에 대한 단일 링크일 수 있다. 자원 액세스 서버(110)는 또한, 클라이언트 디바이스(170)가 클라이언트 디바이스(170)와 인식된 위치 간의 연관성을 기록하는 상태 데이터를 생성한다. 따라서, 응답(예컨대, 화살표 2)은 통제된 액세스 자원에 대한 링크, 예컨대, URL(또는 일반적인 질의에 응답하는 둘 이상의 자원들에 대한 URL들)이다. 이 요청이 인식된 위치를 통해 이루어졌기 때문에, 링크는, 예컨대, 토큰이 없는 통상적인 링크일 수 있다. 검색 결과들은 클라이언트 디바이스(도시되지 않음)의 사용자에게 디스플레이될 수 있고, 사용자는 통제된 액세스 자원들 중 하나에 대한 링크를 선택함으로써 특정 자원을 요청할 수 있다(예컨대, 화살표 3). 요청은 인식된 위치(160)를 통해 통제된 자원 서버(180)로 대해 이루어진다. 통제된 자원 서버(180)는 요청(예컨대, 화살표 3)을 인식된 위치에서 오는 것으로 인식하고, (허가된 자원 정보의 검증을 조건으로) 인식된 위치(160)를 통해 클라이언트 디바이스(170)에 자원을 제공한다(예컨대, 화살표 4).
[0058] 나중에, 클라이언트 디바이스(170)는 인식된 위치(160) 외부에서 통제된 액세스 자원들에 대한 다른 요청을 할 수 있다(예컨대, 화살표 5). 예컨대, 도서관 고객(patron)은 집에 있을 수 있으며, 공통 액세스 포털로부터 오디오 북에 대한 액세스를 요청할 수 있다. 요청은 또한 질의 형태일 수 있다. 자원 액세스 서버(110)는, 자원이 액세스 통제된 자원이고 요청이 자원에 대해 인식된 위치 외부에 있는 것으로 결정할 수 있다. 이에 대한 응답으로, 자원 액세스 서버(110)는 클라이언트 디바이스(170)에 대한 상태 데이터를 로케이팅하고, 이에 대한 응답으로, 암호화된 토큰을 생성하고, 클라이언트 디바이스에 대한 자원에 대한 링크에 암호화된 토큰을 포함시킬 수 있다(예컨대, 화살표 6). 클라이언트 디바이스(170)는 링크를 사용하여, 통제된 자원 서버(180)로부터 자원을 요청할 수 있다(예컨대, 화살표 7). 통제된 자원 서버(180)는 링크에서 토큰을 식별할 수 있고, 토큰 내의 정보가 추가적인 확인들을 통과하는 조건으로, 클라이언트 디바이스(170)에 자원에 대한 액세스를 제공할 수 있다(예컨대, 화살표 8). 자원 액세스 서버(110)가 클라이언트 디바이스(170)에 대한 만료되지 않은 상태 데이터를 식별하는 데 실패하면, 토큰이 생성되지 않고, 클라이언트 디바이스(170)는 통제된 자원 서버(180)로부터 자원을 성공적으로 요청할 수 없을 것이다. 유사하게, 토큰 내의 정보가 추가적인 확인들을 통과하지 못한 경우, 자원은 통제된 자원 서버(180)에 의해 제공되지 않을 수 있다.
[0059] 통제된 액세스 시스템(100)은 하나의 예시적인 구성을 나타내고, 구현들은 다른 구성들을 포함할 수 있다. 예컨대, 일부 구현들은 자원 액세스 서버(110) 및 통제된 자원 서버(180)의 컴포넌트들 중 하나 이상을 결합할 수 있거나, 액세스 엔진(120), 검증 엔진(122) 및 검증 엔진(186)의 하나 이상의 컴포넌트들을 단일 모듈 또는 엔진으로 결합할 수 있다. 유사하게, 일부 구현들에서, 인덱스(112), 상태 데이터(114), 액세스 데이터베이스(116) 및/또는 통제된 액세스 자원들(182)은 단일 데이터 저장소로 결합될 수 있거나, 다수의 컴퓨팅 디바이스들에 걸쳐 분산될 수 있거나, 다른 액세스 가능한 컴퓨팅 디바이스에 저장될 수 있다.
[0060] 도 1b는 시스템(100)의 대안적인 구성(100')의 또 다른 예이다. 시스템(100')의 예에서, 통제된 자원 서버(180')는 자원 액세스 서버(110)와 관련하여 위에 설명된 기능들을 포함한다. 다시 말해서, 통제된 자원 서버(180')는 상태 데이터(114) 및 액세스 엔진(120)을 포함할 수 있고, 검증 엔진(186)은 검증 엔진(122)에 의해 수행되는 것으로 설명된 기능들을 포함할 수 있다. 이 예에서, 클라이언트 디바이스(170)는 통제된 자원 서버(180')로부터 인식된 위치(160)를 통해 자원을 요청한다(예컨대, 화살표 1). 위치가 인식되었기 때문에, 통제된 자원 서버(180')는 요청된 자원에 대한 링크를 제공할 뿐만 아니라(예컨대, 화살표 2), 클라이언트 디바이스(170)에 대한 상태 데이터(114), 예컨대, 본원에 설명된 바와 같이, 인식된 위치와의 연계로 인해 클라이언트에게 이용가능한 자원들을 식별하는 데 사용되는 기록 정보를 생성한다. 자원에 대한 링크는 클라이언트 디바이스(170)에 제공된다. 클라이언트 디바이스(170)의 사용자는 링크를 선택하고(예컨대, 화살표 3), 인식된 위치(160)를 통해 자원에 액세스할 수 있고, 예컨대, 자원은 인식된 위치(160)를 통해 클라이언트 디바이스(170)에 제공된다(화살표 4). 나중에, 클라이언트 디바이스(170)는 인식된 위치(160) 외부의 위치를 통해 통제된 자원 서버(180')로부터 자원을 요청할 수 있다(예컨대, 화살표 5). 요청이 인식된 위치를 통하지 않는다고 결정하고 클라이언트 디바이스(170)에 대한 만료되지 않은 상태 데이터(114)를 통제된 자원 서버(180')가 식별하는 것에 대한 응답으로, 통제된 자원 서버(180')는 자원에 대한 링크를 제공할 수 있다(화살표 6). 링크는 단일 링크일 수 있거나, 검색 결과에 포함된 다수의 링크들일 수 있다. 클라이언트 디바이스(170)의 사용자는 토큰을 포함하는 링크를 선택할 수 있고, 토큰은 자원에 대한 요청을 통제된 자원 서버에 전송할 수 있다(화살표 7). 토큰 내의 정보가 추가적인 검증 테스트들을 통과하면, 자원이 클라이언트 디바이스(170)에 제공된다(화살표 8). 일부 구현들에서, 통제된 자원 서버(180')가 상태 데이터(114)를 유지하기 때문에, 토큰의 사용은 선택적이고, 통제된 자원 서버(180')는 상태 데이터(114)에 기반하여 본원에 설명된 토큰 검증 테스트들을 수행할 수 있다. 도 1a 및 1b는 단지 예들로서 사용되며, 구현들은 다른 구성들을 포함한다.
[0061] 도 3은 개시된 구현들에 따른, 인식된 위치들 외부에서 통제된 자원들에 액세스하기 위한 예시적인 프로세스(300)의 흐름도를 예시한다. 프로세스(300)는 도 1a의 시스템(100) 또는 도 1b의 (100')과 같은 통제된 액세스 시스템에 의해 수행될 수 있다. 프로세스(300)는 인식된 위치들로부터 통제된 자원들에 액세스하는 복수의 클라이언트 디바이스들에 대한 상태 데이터를 생성하고, 특정 상황들 하에서 인식된 위치 외부에서 통제된 자원들에 액세스하기 위한 일시적인 암호화된 토큰들을 생성하기 위해 상태 데이터를 사용하는 데 사용될 수 있다. 프로세스(300)는 클라이언트 디바이스들의 사용자들에게 어떠한 영향도 주지 않고서 구현될 수 있다. 다시 말해서, 클라이언트 디바이스들의 사용자들은 인식된 위치들 외부에서 자원들에 액세스하기 위해 임의의 추가의 단계들을 수행하거나 임의의 추가적인 입력을 제공할 필요가 없다. 이는 사용자 경험을 개선하고 클라이언트 디바이스들 상에서 자원들을 보존한다. 프로세스(300)는 인식된 위치를 통해 이루어진 자원에 대한 요청으로 시작할 수 있다(305). 예컨대, 클라이언트 디바이스, 예컨대, 도 1a의 클라이언트 디바이스(170)는, 프록시, 보안 연결(예컨대, VPN) 또는 이더넷 또는 WiFi 연결, 브라우저 지오로케이션 API 등에 의해 식별되는 물리적 위치 ― 이는 인식된 위치, 즉 특정 자원들에 액세스하는 것으로 인식된 위치임 ― 를 사용하여 요청들을 전송할 수 있다. 일부 구현들에서, 이 요청은 자원 액세스 서버, 예컨대, 검색 엔진, 자원 포털, 또는 다른 자원 액세스 사이트에 의해 수신될 수 있다(310). 액세스 서버는, 요청이 통제된 액세스 자원에 대한 것이며, 예컨대, 하나 이상의 데이터 저장소들을 사용하여 인식된 위치에서 오는 것으로 결정한다. 일부 구현들에서, 요청은 질의일 수 있고, 자원은 질의에 응답할 수 있다. 액세스 서버는 요청과 함께 수신된 클라이언트 식별자를 사용하여 클라이언트에 대한 상태 데이터를 생성한다(315). 예컨대, 요청은 디바이스에 대한 쿠키 값을 포함할 수 있다. 다른 예로서, 요청은 전화 번호와 같이 디바이스에 고유한 번호를 포함할 수 있다. 다른 예로서, 요청은 액세스 서버에 의해 인식된 사용자 계정(예컨대, 소셜 미디어 계정)과 연관된 디바이스로부터 이루어질 수 있다. 다시 말해서, 사용자는 디바이스 상에서 계정에 로그인할 수 있으며, 액세스 서버는 로그인 상태를 인식할 수 있다. 사용자 계정, 예컨대, 사용자 이름은 또한 디바이스 식별자로 간주된다. 클라이언트 디바이스에 대해 생성된 상태 데이터는 디바이스 식별자, 타임스탬프 및 허가된 자원 정보를 포함한다. 일부 구현들에서, 상태 데이터 내의 디바이스 식별자는 해싱될 수 있다. 허가된 자원 정보는, 예컨대, 클라이언트 디바이스의 사용자와 인식된 위치 간의 연계에 기반하여, 클라이언트 디바이스가 액세스할 수 있는 자원들을 나타내는 임의의 정보이다. 비제한적인 예들은 자원 콜렉션 식별자, 인식된 위치의 IP 어드레스, 인식된 위치와 연관된 기관 코드, 가입 정보 등을 포함한다. 상태 데이터를 생성하는 것은 클라이언트 디바이스에 대한 기존의 상태 데이터 기록의 타임스탬프 및 허가된 자원 정보를 업데이트하는 것을 포함할 수 있다. 상태 데이터를 생성하는 것은 클라이언트 디바이스에 대한 새로운 상태 데이터 기록을 기입하는 것을 포함할 수 있다. 상태 데이터 기록은 타임스탬프에 기반하여 만료된다. 따라서, 인식된 위치 외부의 액세스는 일시적이다. 상태 데이터가 활성인(즉, 만료되지 않은) 시간 기간의 길이는 통제된 자원들의 소유자와의 계약 합의 및/또는 인식된 위치와 연관된 기관에 기반할 수 있다. 시간 기간의 길이는 며칠, 1 주, 2 주, 1 개월 등일 수 있다. 인식된 위치 외부에서 액세스를 끊김없이 유지하기 위해, 클라이언트 디바이스는, 상태 데이터가 만료되기 전에, 인식된 위치를 통해 자원들에 액세스할 수 있다. 예컨대, 상태 데이터가 2 주 후에 만료되는 경우, 학생은 2 주 기간이 끝나기 전에 캠퍼스를 방문하고, 자원들에 액세스하기 위해 캠퍼스 WiFi를 사용할 수 있다. 이렇게 하면 2 주 기간이 다시 시작된다. 만료는, 클라이언트 디바이스의 사용자가 인식된 위치가 나타내는 기관과의 활성 연관성을 유지하는 것을 보장한다.
[0062] 자원 액세스 서버(110)는, 통제된 액세스 자원에 대한 링크를 포함하는, 요청에 대한 응답을 생성한다(320). 요청이 일반적인 질의인 경우, 응답을 생성하는 것은, 어떤 자원들이 질의에 응답하는지를 결정하는 것 및 그러한 응답하는 자원들 중에서, 인식된 위치를 통해 액세스 가능한 응답 자원에 대한 개개의 링크를 생성하는 것을 포함할 수 있다. 따라서, 링크들은 검색 결과의 일부로서 제공될 수 있다. 요청된 자원에 대한 링크는 또한 개별적으로 제공될 수 있다. 링크는 인식된 위치를 통해 클라이언트 디바이스에 제공될 수 있으며, 클라이언트 디바이스의 사용자는 자원에 액세스하기 위한 링크를 선택할 수 있다(325). 링크를 통해 자원에 액세스하기 위한 요청은, 예컨대, 330에서, 통제된 자원 서버에 의해 처리될 수 있다. 도 3에 도시된 바와 같이 통제된 자원 서버에 의해 수행되는 테스트들의 순서는 일 예로서 제공되며, 구현들은 도 3에 도시된 일련의 테스트들에 제한되지 않는다. 통제된 자원 서버는 요청이 토큰을 포함하는지를 결정할 수 있다(330). 다른 말로 하자면, 통제된 자원 서버는 토큰에 대한 URL을 룩 인(look in)할 수 있다. 토큰이 발견되지 않으면(330, 아니오), 통제된 자원 서버는, 요청자가 요청된 자원에 액세스하는지를 결정할 수 있다(350). 토큰을 포함하지 않는 요청에 대해, 통제된 액세스 서버는, 요청자가 요청된 자원에 액세스하는지 여부를 결정하기 위해 요청이 발생되는 위치를 사용할 수 있다. 일부 구현들에서, 위치는 IP 어드레스 또는 도메인일 수 있다. 일부 구현들에서, 위치는 IP 어드레스 또는 도메인과 같은 위치 및 요청된 자원의 결합일 수 있다. 일부 구현들에서, 위치는 인식된 위치에 대한 식별자일 수 있다. 다른 말로 하면, 통제된 자원 서버(180)는, 요청된 자원이 요청과 연관된 위치에 액세스 가능한지 여부를 결정하기 위해 데이터베이스를 사용할 수 있다. 예컨대, 게시자는, 특정 기관이 액세스하는 자원들에 관해 별개의 기관들과 별개로 합의할 수 있다. 뉴욕에 있는 대학은 의학 저널들에 액세스할 수 있는 반면에, 뉴 멕시코에 있는 대학은 엔지니어링 저널들에 액세스할 수 있다. 따라서, 반드시 모든 위치들이 통제된 자원 서버의 모든 자원들에 대해 인식된 위치일 수 있는 것은 아니다. 따라서, 통제된 자원 서버는, 요청의 위치가 요청되는 특정 자원에 대해 인식된 위치인지 여부를 결정할 수 있다. 통제된 자원 서버는 또한 다른 테스트들, 이를테면, 위치가 인식되었는지 여부를 결정하는 것의 일부로서 특정 위치로부터의 요청들의 수를 결정하는 것을 수행할 수 있다.
[0063] 요청자가 요청된 자원에 액세스하면(350, 예), 통제된 자원 서버는 요청된 자원들을 요청자에게 제공한다(355). 클라이언트 디바이스는 인식된 위치를 통해 자원에 대한 액세스를 수신한다(365). 요청자가 요청된 자원에 액세스하지 않는다면(350, 아니오), 통제된 자원 서버는 요청된 아이템에 대한 액세스를 거부한다(360). 이것은, 에러 메시지를 제공하는 것, 구매 액세스를 위한 링크와 자원의 요약을 제공하는 것 등을 포함할 수 있다. 클라이언트 디바이스는 인식된 위치를 통해 거부를 수신한다(365).
[0064] 클라이언트 디바이스는 또한 인식된 위치 외부에서 통제된 액세스 자원에 대한 액세스를 요청할 수 있다(370). 요청은 액세스 서버에 대한 질의 형태일 수 있다. 액세스 서버는, 클라이언트 디바이스가 만료되지 않은, 즉, 활성의 상태 데이터를 가지고 있는지를 결정할 수 있다(375). 상태 데이터는, 예컨대, 315에서, 클라이언트 디바이스가 인식된 위치를 통해 액세스 서버에 액세스할 때, 생성된다. 이러한 의미에서, 인식된 위치는, 특정 자원에 관계없이, 통제된 자원 서버가 인식하는 임의의 위치이다. 상태 데이터의 생성 이래로, 만료 시간 기간이 경과되지 않은 경우, 상태 데이터는 만료되지 않는다. 상태 데이터는, 상태 데이터가 생성될 때 설정된 타임스탬프를 포함한다. 타임스탬프는, 상태 데이터가 만료되는 시간을 나타낼 수 있다. 타임스탬프는, 상태 데이터가 생성된 시간 및 상태 데이터가 만료 기간 후에 만료되는 시간을 나타낼 수 있다. 위에 표시된 바와 같이, 만료 기간은 사전에 고정되지만, 기관 또는 통제된 자원 소유자에 의해 변할 수 있다. 클라이언트 디바이스에 대한 상태 데이터가 발견될 수 없거나 만료된 경우(375, 아니오), 액세스 서버는 자원에 대한 액세스를 거부할 수 있다(390). 액세스를 거부하는 것은, 자원이 질의에 응답할지라도, 검색 결과에 자원에 대한 링크를 제공하지 않는 것을 포함할 수 있다. 액세스를 거부하는 것은, 이에 응답하지만 토큰 없이, 자원에 대한 링크를 제공하는 것을 포함할 수 있다. 이는 실제로, 요청이 인식된 위치에서 온 것이 아니라고 통제된 자원 서버가 결정하기 때문에 액세스를 거부한다. 액세스를 거부하는 것은 일부 다른 링크, 예컨대, 스니펫(snippet)을 갖는 검색 결과, 및 사용자가 자원에 대한 액세스를 구매하기 위해 가입하는 것을 가능하게 하는 프로세스에 대한 링크를 제공하는 것을 포함할 수 있다.
[0065] 클라이언트 디바이스에 대한 상태 데이터가 존재하고 만료되지 않은 경우(375, 예), 액세스 서버는 자원에 대한 토큰을 생성한다(380). 토큰은, 통제된 자원 서버가 인식된 위치와 연관된 것으로 요청을 검증할 수 있는 데이터를 포함한다. 일부 구현들에서, 예컨대, 요청이 질의인 경우, 액세스 서버는, 질의에 응답하는 각각의 통제된 액세스 자원에 대한 토큰을 생성할 수 있다. 일부 구현들에서, 토큰은 악의적인 사람들을 저지(deter)하기 위해 암호화될 수 있다. 토큰은 타임스탬프를 포함한다. 타임스탬프는, 토큰이 짧은 기간 동안 유효하다는 것을 보장한다. 짧은 기간은, 예컨대, 브라우저 상의 "뒤로" 또는 "앞으로" 버튼을 사용하여 클라이언트 디바이스가 자원을 재요청하는 것을 수용할 수 있다. 짧은 기간은 전형적으로 상태 데이터의 만료 시간 기간보다 훨씬 더 짧다. 예컨대, 토큰이 유효한 기간은 1 시간 이하일 수 있다. 이 시간 기간은 자원들의 소유자에 의해 설정될 수 있다. 상태 데이터와 같이, 토큰의 타임스탬프는, 구현에 의존하여, 토큰이 생성된 시간일 수 있거나 토큰이 만료되는 시간일 수 있다. 토큰은 또한 난수를 포함한다. 난수는 토큰의 고유성을 보장한다. 따라서, 난수는 고유성을 보장하기에 충분히 길 수 있다. 예컨대, 난수는 64 비트일 수 있다. 토큰은 또한 허가된 자원 정보를 포함할 수 있다. 허가된 자원 정보는, 클라이언트 디바이스가 어떤 자원들에 액세스하는지를 통제된 자원 서버가 결정하는 데 사용하는 정보이다. 이것은 액세스 또는 가입 데이터베이스에 대한 키일 수 있고, 키-값 쌍일 수 있고, 인식된 위치에 대한 식별자일 수 있고, 이러한 식일 수 있다. 일부 구현들에서, 토큰은 또한 토큰의 생성 시에 클라이언트 디바이스에 의해 사용되는 IP 서브넷을 포함할 수 있다. IP 서브넷은, 본원에서 더 상세히 설명되는 바와 같이, 사기(fraudulent)(예컨대, 공유된, 복사된) 요청들을 식별하는 데 사용될 수 있다. 일부 구현들에서, 토큰은 암호화될 수 있다. 암호화 키는 통제된 액세스 서버에 의해 알려지거나 이와 공유되는 키일 수 있다. 토큰의 암호화는 남용의 기회, 예컨대, 토큰의 스푸핑(spoofing)을 제한한다. 토큰, 예컨대, 암호화된 토큰은 개개의 자원에 대한 링크에 포함되고, 클라이언트 디바이스에 제공된다. 이어서, 클라이언트 디바이스는, 인식된 위치 외부에서 자원에 액세스하기 위해 토큰을 갖는 링크를 사용할 수 있다(395).
[0066] 통제된 자원 서버는 토큰을 갖는 URL을 통해 요청을 수신하고, 토큰을 인식하고(330, 예), 암호화 키를 사용하여 토큰을 암호해독한다(335). 통제된 자원 서버는 토큰으로부터의 데이터에 대해 일련의 검사들 또는 테스트들을 수행한다. 예컨대, 통제된 자원 서버는, 토큰이 만료되었는지 여부를 결정할 수 있다(340). 위에 표시된 바와 같이, 토큰은 짧은 기간(예컨대, 1 시간) 동안 유효할 수 있다. 짧은 시간 기간은 남용의 기회들, 예컨대, 다른 사람들과의 링크 공유를 차단하고 제한한다. 토큰이 너무 여러 번 보이게 되면, 토큰이 또한 만료된 것으로 간주될 수 있다. 난수는 토큰을 고유하게 만든다. 일부 구현들에서, 통제된 자원 서버는 토큰이 제시된 횟수를 카운팅할 수 있다. 토큰이 너무 여러 번 제시되면, 토큰은 만료된 것으로 간주될 수 있다. 이러한 타입의 만료는 또한 남용의 기회들을 제한한다. 토큰이 제시될 수 있는 횟수는 적을 수 있고, 예컨대, 3 또는 4 회일 수 있으며, 이는 사용자가 제한된 횟수만큼 브라우저에서 "뒤로" 및 "앞으로" 기능들을 사용하도록 허용한다. 이러한 횟수를 초과하여 제시된 토큰들은 거부될 수 있고, 예컨대, 만료된 것으로 간주될 수 있다. 토큰이 만료된 경우(340, 예), 통제된 자원 서버는 요청된 아이템에 대한 액세스를 거부한다(360). 예컨대, 365에서, 자원이 인식된 위치를 통해 액세스되어야 함을 나타내는 메시지가 디스플레이될 수 있거나, 액세스를 구매하기 위한 링크, 로그인 스크린에 대한 링크 등과 함께 메시지가 디스플레이될 수 있다.
[0067] 토큰이 만료되지 않은 경우(340, 아니오), 통제된 자원 서버는, 토큰의 IP 서브넷이 요청이 수신된 IP 어드레스의 IP 서브넷과 매칭하는지 여부를 결정할 수 있다(345). 이러한 테스트는, 토큰이 IP 서브넷 정보를 포함하는 경우 발생한다. 이러한 테스트는, 유효한 사용자가 동일한 영역에서 상이한 셀 타워 또는 WiFi 라우터로 스위칭하도록 허용하면서, 토큰 분배를 제한함으로써 남용의 기회들을 제한한다. 그러나, 링크가 공유되면, IP 서브넷 외부의 IP 어드레스들에서 오는 링크를 사용하는 요청들이 차단된다. 따라서, 토큰의 IP 서브넷이 요청의 IP 서브넷과 매칭하지 않으면(345, 아니오), 통제된 자원 서버는 자원에 대한 액세스를 거부한다(360). IP 서브넷들이 매칭하지 않는 경우 또는 토큰에 IP 서브넷 데이터가 없는 경우, 통제된 자원 서버는, 요청자가 요청된 자원에 액세스하는지 여부를 결정할 수 있다(350). 토큰을 갖는 링크들에 대해, 통제된 액세스 서버는 이러한 테스트를 위해 토큰 내 허가된 자원 정보를 사용할 수 있다. 토큰 내의 허가된 자원 정보는 클라이언트 디바이스에 대한 상태 데이터로부터 취해지고, 통제된 자원 서버가 클라이언트 디바이스를 인식된 위치와 연계된 것으로 인식하기 위해 사용하고, 예컨대, 인식된 위치와의 연계로 인해 이용가능한 자원, 자원들의 콜렉션, 이러한 콜렉션에 대한 가입 등을 식별하는 임의의 정보일 수 있다. 통제된 자원 서버는, 요청자가 요청된 자원에 액세스하는지 여부를 결정하기 위해 토큰의 허가된 자원 정보를 사용한다. 허가된 자원 정보가 요청된 자원과 매칭하지 않는 경우(350, 아니오), 시스템은 자원에 대한 액세스를 거부한다(360). 허가된 자원 정보가 요청된 자원과 매칭하면(350, 예), 시스템은 위에서 설명된 바와 같이 요청된 자원을 제공하고, 토큰 액세스들의 수를 증분시킬 수 있다(355). 토큰 액세스들을 추적하는 것은, 통제된 자원 서버가 토큰이 성공적으로 제시될 수 있는 횟수를 제한하는 것을 가능하게 한다. 토큰 테스트들, 예컨대, 단계들(340 내지 350)은 선택적이고, 임의의 순서로 완료될 수 있다. 일부 구현들은 테스트들 중 임의의 것을 수행하지 않을 수 있다. 일부 구현들은 추가적인 테스트들을 수행할 수 있다. 프로세스(300)가 복수의 상이한 클라이언트 디바이스들 및 상이한 인식된 위치들에 대해 동시에 반복될 수 있음이 이해된다. 일부 구현들에서, 액세스 서버에 의해 수행되는 것으로 설명된 특정 단계들이 통제된 자원 서버에 의해 수행될 수 있음이 또한 이해된다. 따라서, 구현들은 도 3에 의해 표현된 바로 그 구성으로 제한되지 않는다.
[0068] 도 4는 일반 컴퓨터 디바이스(400)의 예를 도시하고, 일반 컴퓨터 디바이스(400)는 본원에 설명된 기법들과 함께 사용될 수 있는 도 1a의 서버(110), 서버(160), 서버(180) 및/또는 클라이언트 디바이스(170)로서 동작될 수 있다. 컴퓨팅 디바이스(400)는 랩톱들, 데스크톱들, 워크스테이션들, 개인 휴대 정보 단말기들, 셀룰러 전화기들, 스마트폰들, 태블릿들, 서버들, 및 웨어러블 디바이스들을 포함하는 다른 컴퓨팅 디바이스들과 같은 다양한 예시적인 형태들의 컴퓨팅 디바이스들을 나타내도록 의도된다. 본원에 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예시적인 것으로만 의도되며, 본 문헌에 설명되고 그리고/또는 청구되는 본 발명들의 구현들을 제한하도록 의도되지 않는다.
[0069] 컴퓨팅 디바이스(400)는 인터페이스(408)를 통해 연결된 프로세서(402), 메모리(404), 저장 디바이스(406) 및 확장 포트들(410)을 포함한다. 일부 구현들에서, 컴퓨팅 디바이스(400)는 인터페이스(408)를 통해 연결된, 다른 컴포넌트들 중에서도, 트랜시버(446), 통신 인터페이스(444) 및 GPS(Global Positioning System) 수신기 모듈(448)을 포함할 수 있다. 디바이스(400)는, 통신 인터페이스(444)를 통해 무선으로 통신할 수 있으며, 이는, 필요할 경우, 디지털 신호 프로세싱 회로를 포함할 수 있다. 컴포넌트들(402, 404, 406, 408, 410, 440, 444, 446 및 448) 각각은 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다.
[0070] 프로세서(402)는, 디스플레이(416)와 같은 외부 입력/출력 디바이스 상에서의 GUI를 위한 그래픽 정보를 디스플레이하기 위해, 메모리(404)에 또는 저장 디바이스(406) 상에 저장된 명령들을 포함하는, 컴퓨팅 디바이스(400) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 디스플레이(416)는 모니터 또는 플랫 터치스크린 디스플레이일 수 있다. 일부 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수의 타입들의 메모리와 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(400)이 연결될 수 있으며, 각각의 디바이스는 필요한 동작들의 부분들을 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템으로서) 제공한다.
[0071] 메모리(404)는 컴퓨팅 디바이스(400) 내에 정보를 저장한다. 일 구현에서, 메모리(404)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현에서, 메모리(404)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(404)는 또한, 자기 또는 광학 디스크와 같은 다른 형태의 컴퓨터-판독 가능한 매체일 수 있다. 일부 구현들에서, 메모리(404)는 확장 인터페이스를 통해 제공되는 확장 메모리를 포함할 수 있다.
[0072] 저장 디바이스(406)는, 컴퓨팅 디바이스(400)에 대한 대용량 저장소를 제공할 수 있다. 일 구현에서, 저장 디바이스(406)는, 저장 영역 네트워크 또는 다른 구성들 내의 디바이스들을 포함하여, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 디바이스들의 어레이와 같은 컴퓨터-판독 가능한 매체이거나 이를 포함할 수 있다. 컴퓨터 프로그램 제품은 이러한 컴퓨터 판독 가능한 매체에 유형적으로 포함될 수 있다. 컴퓨터 프로그램 제품은 또한, 실행될 경우, 위에서 설명된 방법들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함할 수 있다. 컴퓨터- 또는 머신-판독 가능한 매체는 메모리(404), 저장 디바이스(406) 또는 프로세서(402) 상의 메모리와 같은 저장 디바이스이다.
[0073] 인터페이스(408)는 컴퓨팅 디바이스(400)에 대한 대역폭-집약 동작들을 관리하는 고속 제어기 또는 더 낮은 대역폭-집약 동작들을 관리하는 저속 제어기, 또는 이러한 제어기들의 조합일 수 있다. 외부 인터페이스(440)는 다른 디바이스들과 디바이스(400)의 근거리 통신을 가능하게 하도록 제공될 수 있다. 일부 구현들에서, 제어기(408)는 저장 디바이스(406) 및 확장 포트(414)에 커플링될 수 있다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 확장 포트는, 예컨대, 네트워크 어댑터를 통해 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스(이를테면, 스위치 또는 라우터)와 같은 하나 이상의 입력/출력 디바이스들에 커플링될 수 있다.
[0074] 컴퓨팅 디바이스(400)는, 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 이것은 표준 서버(430)로서, 또는 이러한 서버들의 그룹에서 여러 번 구현될 수 있다. 이것은 또한, 랙(rack) 서버 시스템의 일부로서 구현될 수 있다. 또한, 랩톱 컴퓨터(432), 개인용 컴퓨터(434), 또는 태블릿/스마트폰(436)과 같은 컴퓨팅 디바이스에서 구현될 수 있다. 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(400)로 이루어질 수 있다. 다른 구성들이 가능하다.
[0075] 도 5는, 본원에서 설명된 기법들과 함께 사용될 수 있는, 도 1a의 서버(110), 서버(160) 또는 서버(180)일 수 있는 일반적인 컴퓨터 디바이스(500)의 예를 도시한다. 컴퓨팅 디바이스(500)는 서버들, 블레이드 서버들, 데이터센터들, 메인프레임들 및 다른 대규모 컴퓨팅 디바이스들과 같은 대규모 데이터 프로세싱 디바이스들의 다양한 예시적 형태들을 나타내도록 의도된다. 컴퓨팅 디바이스(500)는 가능하게는, 하나 이상의 통신 네트워크들에 의해 상호연결되는 네트워크 부착 저장 노드들을 포함하는 다수의 프로세서들을 갖는 분산형 시스템일 수 있다. 본원에 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예들인 것으로만 의도되며, 본 문헌에 설명되고 그리고/또는 청구되는 본 발명들의 구현들을 제한하도록 의도되지 않는다.
[0076] 분산형 컴퓨팅 시스템(500)은 임의의 수의 컴퓨팅 디바이스들(580)을 포함할 수 있다. 컴퓨팅 디바이스들(580)은 로컬 또는 광역 네트워크, 전용 광 링크들, 모뎀들, 브리지들, 라우터들, 스위치들, 유선 또는 무선 네트워크들 등을 통해 통신하는 서버 또는 랙 서버들, 메인 프레임들 등을 포함할 수 있다.
[0077] 일부 구현들에서, 각각의 컴퓨팅 디바이스는 다수의 랙들을 포함할 수 있다. 예컨대, 컴퓨팅 디바이스(580a)는 다수의 랙들(558a-558n)을 포함한다. 각각의 랙은 프로세서들(552a-552n 및 562a-562n)과 같은 하나 이상의 프로세서들을 포함할 수 있다. 프로세서들은 데이터 프로세서들, 네트워크 부착 저장 디바이스들 및 다른 컴퓨터 제어 디바이스들을 포함할 수 있다. 일부 구현들에서, 하나의 프로세서는 마스터 프로세서로서 동작하고, 스케줄링 및 데이터 분산 작업들을 제어할 수 있다. 프로세서들은 하나 이상의 랙 스위치들(558)을 통해 상호 연결될 수 있고, 하나 이상의 랙들은 스위치(578)를 통해 연결될 수 있다. 스위치(578)는 다수의 연결된 컴퓨팅 디바이스들(500) 간의 통신들을 처리할 수 있다.
[0078] 각각의 랙은 메모리(554) 및 메모리(564)와 같은 메모리 및 저장소(이를테면, 556 및 566)를 포함할 수 있다. 저장소(556 및 566)는 대용량 저장소를 제공할 수 있으며, 저장 영역 네트워크 또는 다른 구성 내의 디바이스들을 포함하여, 네트워크 부착 디스크들, 플로피 디스크들, 하드 디스크들, 광 디스크들, 테이프들, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스들, 또는 디바이스들의 어레이와 같은 휘발성 또는 비휘발성 저장소를 포함할 수 있다. 저장소(556 또는 566)는 다수의 프로세서들, 다수의 랙들 또는 다수의 컴퓨팅 디바이스들 간에 공유될 수 있으며, 프로세서들 중 하나 이상에 의해 실행 가능한 명령들을 저장하는 컴퓨터 판독 가능한 매체를 포함할 수 있다. 메모리(554 및 564)는, 예컨대, 휘발성 메모리 유닛 또는 유닛들, 비휘발성 메모리 유닛 또는 유닛들 및/또는 자기 또는 광학 디스크들, 플래시 메모리, 캐시, RAM(Random Access Memory), ROM(Read Only Memory) 및 이들의 조합들과 같은 다른 형태들의 컴퓨터 판독 가능한 매체들을 포함할 수 있다. 메모리(554)와 같은 메모리는 또한 프로세서들(552a-552n) 사이에서 공유될 수 있다. 인덱스와 같은 데이터 구조들은, 예컨대, 저장소(556) 및 메모리(554)에 걸쳐 저장될 수 있다. 컴퓨팅 디바이스(500)는 제어기들, 버스들, 입력/출력 디바이스들, 통신 모듈들 등과 같은 도시되지 않은 다른 컴포넌트들을 포함할 수 있다.
[0079] 시스템(100, 100' 또는 100")과 같은 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(500)로 구성될 수 있다. 예컨대, 디바이스(580a)는 디바이스들(580b, 580c, 및 580d)과 통신할 수 있으며, 이들은 총괄적으로 서버(110), 서버(160) 또는 서버(180)로서 알려질 수 있다. 다른 예로서, 도 1의 시스템(100)은 하나 이상의 컴퓨팅 디바이스들(500)을 포함할 수 있다. 컴퓨팅 디바이스들의 일부는 서로 지리적으로 근접하게 위치될 수 있고, 다른 것들은 지리적으로 멀리 위치될 수 있다. 시스템(500)의 레이아웃은 단지 예일 뿐이며, 시스템은 다른 레이아웃들 또는 구성들을 가질 수 있다.
[0080] 본 개시내용의 특정 양상들에 따라, 방법은 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 요청을 수신하는 단계 ― 요청은 클라이언트 디바이스 식별자를 포함함 ―, 요청이 인식된 위치와 연관되지 않는다고 결정하는 단계, 클라이언트 디바이스 식별자에 대한 상태 데이터를 식별하는 단계, 서버에서 통제된 액세스 자원에 액세스하기 위한 링크를 생성하는 단계, 암호화된 토큰을 생성하는 단계 ― 암호화된 토큰은 상태 데이터로부터 타임스탬프, 난수 및 허가된 자원 정보를 포함함 ―, 암호화된 토큰을 링크에 포함시키는 단계, 및 링크를 클라이언트 디바이스에 제공하는 단계를 포함하고, 클라이언트 디바이스는 통제된 액세스 자원을 요청하기 위해 링크를 사용한다.
[0081] 이러한 그리고 다른 양상들은 다음의 특징들 중 하나 이상을 단독으로 또는 결합하여 포함할 수 있다. 예컨대, 요청은 제1 요청일 수 있고, 그리고 통제된 액세스 자원은 제1 통제된 액세스 자원일 수 있고, 그리고 제1 요청을 수신하기 전에, 방법은 클라이언트 디바이스로부터 제2 통제된 액세스 자원에 대한 제2 요청을 수신하는 단계 ― 제2 요청은 클라이언트 디바이스 식별자를 포함함 -, 제2 요청이 인식된 위치와 연관된다고 결정하는 단계, 클라이언트 디바이스에 대한 상태 데이터를 생성하는 단계, 및 상태 데이터를 메모리에 저장하는 단계를 더 포함한다. 다른 예로서, 상태 데이터는 타임스탬프, 클라이언트 디바이스 식별자 및 허가된 자원 정보를 포함할 수 있다. 다른 예로서, 허가된 자원 정보는 인식된 위치를 나타낼 수 있다. 일부 구현들에서, 허가된 자원 정보는 인식된 위치 및 인식된 위치에서 이용가능한 통제된 자원을 나타낸다. 다른 예로서, 인식된 위치는 도메인 이름, 지오로케이션, 및/또는 IP(Internet Protocol) 어드레스일 수 있다. 다른 예로서, 요청은 질의일 수 있고, 통제된 액세스 자원은 질의에 응답하는 자원이다. 다른 예로서, 클라이언트 디바이스 식별자는 사용자 계정일 수 있다. 다른 예로서, 클라이언트 디바이스가 통제된 액세스 자원을 요청하기 위해 링크를 사용하는 단계는, 통제된 자원 서버에서, 통제된 액세스 자원에 대한 요청으로 링크를 수신하는 단계, 링크에서 토큰을 식별하는 단계, 토큰을 암호해독하는 단계, 타임스탬프에 기반하여 토큰이 만료되지 않았다고 결정하고 허가된 자원 정보에 기반하여 통제된 액세스 자원이 이용가능하다고 결정함으로써 토큰을 검증하는 단계, 및 토큰이 검증된 것에 대한 응답으로, 통제된 액세스 자원을 클라이언트 디바이스에 제공하는 단계를 포함할 수 있다.
[0082] 본 개시내용의 특정 양상들에 따라, 시스템은 적어도 하나의 프로세서, 클라이언트 디바이스들에 대한 상태 데이터 기록들을 저장하는 데이터 저장소, 및 명령들을 저장하는 메모리를 포함하고, 명령들은, 적어도 하나의 프로세서에 의해 실행될 때, 시스템으로 하여금 동작들을 수행하게 한다. 동작들은 클라이언트 디바이스로부터 질의를 수신하는 동작 ― 클라이언트 디바이스는 디바이스 식별자를 가짐 ―, 및 질의에 응답하는 적어도 하나의 자원이 통제된 액세스 자원이라고 결정하는 동작을 포함한다. 질의가 통제된 액세스 자원에 대한 인식된 위치와 연관된다는 결정에 대한 응답으로, 동작들은 통제된 액세스 자원에 대한 링크를 생성하는 동작, 및 데이터 저장소에 클라이언트 디바이스에 대한 상태 데이터 기록을 생성하는 동작을 포함하고, 상태 데이터는 클라이언트 디바이스 식별자, 타임스탬프, 및 인식된 위치와의 연관성을 포함한다. 질의가 인식된 위치와 연관되지 않는다는 결정에 대한 응답으로, 동작들은 데이터 저장소에서 클라이언트 디바이스 식별자에 대해 만료되지 않은 상태 데이터 기록을 식별하는 동작, 및 만료되지 않은 상태 데이터 기록을 식별하는 것에 대한 응답으로, 토큰을 생성하고 통제된 액세스 자원에 대한 링크에 토큰을 포함시키는 동작을 포함하고, 토큰은 상태 데이터 기록으로부터 난수, 타임스탬프 및 허가된 자원 정보를 포함한다. 데이터 저장소에서 클라이언트 디바이스 식별자에 대한 상태 데이터 기록을 식별하는 데 실패한 것에 대한 응답으로, 동작들은 토큰이 없는 링크를 생성하는 동작, 및 질의에 대한 검색 결과를 클라이언트 디바이스에 반환하는 동작을 포함하고, 검색 결과는 자원에 대한 링크를 포함하고, 클라이언트 디바이스는 통제된 액세스 서버로부터 자원을 요청하기 위해 자원에 대한 링크를 사용하고, 통제된 액세스 서버는 인식된 위치들과 연관된 요청들로부터 자원들에 대한 액세스를 제공하도록 구성된다.
[0083] 이들 및 다른 양상들은 다음의 특징들 중 하나 이상을 단독으로 또는 결합하여 포함할 수 있다. 예컨대, 인식된 위치들과 연관된 요청들로부터 자원들에 대한 액세스를 제공할 때, 통제된 액세스 서버는 특정 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 링크를 수신하고 ― 링크는 연관된 위치를 가짐 ―, 위치가 인식된 위치인지 여부를 결정하고, 위치가 인식된 위치라는 결정에 대한 응답으로, 통제된 액세스 자원을 제공하고, 그리고 위치가 인식된 위치가 아니고 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로, 통제된 액세스 자원을 제공하고, 그리고 위치가 인식된 위치가 아니고 링크에 토큰이 없거나 링크에 포함된 토큰이 만료되었다는 결정에 대한 응답으로, 통제된 액세스 자원에 대한 액세스를 거부하도록 구성된다. 일부 구현들에서, 토큰은 요청에 대한 IP 어드레스의 IP 서브넷을 더 포함하고, 통제된 액세스 서버는, 위치가 인식된 위치가 아니고 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로, 특정 클라이언트 디바이스의 IP 서브넷이 토큰 내의 IP 서브넷과 매칭하는지 여부를 결정하고, 그리고 IP 서브넷이 매칭하지 않는다는 결정에 대한 응답으로, 통제된 액세스 자원에 대한 액세스를 거부하도록 추가로 구성된다. 다른 예로서, 인식된 위치는 지오로케이션 및/또는 IP 어드레스를 나타낼 수 있다. 다른 예로서, 토큰은 링크에 포함되기 전에 암호화된다.
[0084] 본 개시내용의 특정 양상들에 따라, 방법은 클라이언트 디바이스로부터, 통제된 액세스 자원에 대한 요청을 수신하는 단계 ― 요청은 위치를 가짐 ―, 위치가 인식된 위치가 아니라고 결정하는 단계, 요청이 토큰을 포함한다고 결정하는 단계 ― 토큰은 타임스탬프, 난수 및 허가된 자원 정보를 포함함 ―, 타임스탬프에 기반하여 토큰이 만료되지 않았다고 결정하는 단계, 허가된 자원 정보에 의해 식별된 자원이 요청된 자원과 매칭한다고 결정하는 단계, 및 통제된 액세스 자원을 클라이언트 디바이스에 제공하는 단계를 포함하고, 그렇지 않은 경우, 클라이언트 디바이스는 통제된 액세스 자원에 대한 액세스가 거부될 것이다.
[0085] 이들 및 다른 양상들은 다음의 특징들 중 하나 이상을 단독으로 또는 결합하여 포함할 수 있다. 예컨대, 토큰은 암호화될 수 있고, 방법은 토큰을 암호해독하는 단계를 더 포함할 수 있다. 다른 예로서, 토큰은 IP 서브넷을 더 포함할 수 있고, 방법은 클라이언트 디바이스에 대한 IP 어드레스가 토큰에 포함된 IP 서브넷과 매칭하는 IP 서브넷을 갖는다고 결정하는 단계를 더 포함한다. 다른 예로서, 방법은 토큰에 대한 카운터를 증분시키는 단계 ― 토큰은 난수에 의해 식별됨 ―; 및 토큰에 대한 카운터가 임계치에 도달하지 않았다고 결정하는 단계를 더 포함할 수 있다.
[0086] 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그들로 데이터 및 명령들을 송신하도록 커플링된, 특수 목적 또는 범용 목적일 수 있는 적어도 하나의 프로그래밍 가능한 프로세서를 포함하는 프로그래밍 가능한 시스템 상에서 실행 가능하고 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0087] 이들 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려짐)은, 프로그래밍 가능한 프로세서를 위한 머신 명령들을 포함하며, 고레벨의 절차적인 그리고/또는 오브젝트-지향적인 프로그래밍 언어 및/또는 어셈블리/머신 언어로 구현될 수 있다. 본원에서 사용된 바와 같이, 용어들 "머신 판독 가능한 매체", "컴퓨터 판독 가능한 매체"는 머신 명령들 및/또는 데이터를 프로그래밍 가능한 프로세서에 제공하는 데 사용되는 임의의 비-일시적 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리(랜덤 액세스 메모리를 포함함), PLD(Programmable Logic Device)들)을 지칭한다.
[0088] 본원에 설명된 시스템들 및 기법들은, 백 엔드 컴포넌트를 (예컨대, 데이터 서버로서) 포함하거나, 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나, 프론트 엔드 컴포넌트(예컨대, 사용자가 본원에 설명된 시스템들 및 기법들의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 그러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크("LAN"), 광역 네트워크("WAN"), 및 인터넷을 포함한다.
[0089] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트 및 서버의 관계는 개개의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
[0090] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 발명의 범위로부터 벗어나지 않고서, 다양한 수정들이 이루어질 수 있다. 게다가, 도면들에 묘사된 로직 흐름들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 요구하지는 않는다. 게다가, 설명된 흐름들로부터, 다른 단계들이 제공될 수 있거나, 단계들이 제거될 수 있으며, 다른 컴포넌트들이 설명된 시스템들에 부가되거나 그 시스템들로부터 제거될 수 있다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (17)

  1. 클라이언트 디바이스로부터, 제어되는 액세스 자원에 대한 요청을 수신하는 단계 ― 상기 요청은 클라이언트 디바이스 식별자를 포함함 ― ;
    상기 요청이 인식된 위치와 연관되지 않는다고 결정하는 단계;
    상기 클라이언트 디바이스 식별자에 대한 상태 데이터를 식별하는 단계;
    서버에서 상기 제어되는 액세스 자원에 액세스하기 위한 링크를 생성하는 단계;
    암호화된 토큰을 생성하는 단계 ― 상기 암호화된 토큰은 상기 상태 데이터로부터의 타임스탬프, 난수 및 면허 자원 정보를 포함함 ― ;
    상기 암호화된 토큰을 상기 링크에 포함시키는 단계; 및
    상기 링크를 상기 클라이언트 디바이스에 제공하는 단계를 포함하고,
    상기 링크는 상기 제어되는 액세스 자원을 요청하기 위해 상기 사용자 디바이스에 의해 사용되도록 구성되는,
    방법.
  2. 제1항에 있어서,
    상기 요청은 제1 요청이고, 상기 제어되는 액세스 자원은 제1 제어되는 액세스 자원이고,
    상기 제1 요청을 수신하기 전에, 상기 방법은:
    상기 클라이언트 디바이스로부터, 제2 제어되는 액세스 자원에 대한 제2 요청을 수신하는 단계 ― 상기 제2 요청은 상기 클라이언트 디바이스 식별자를 포함함 ― ;
    상기 제2 요청이 인식된 위치와 연관된다고 결정하는 단계;
    상기 클라이언트 디바이스에 대한 상기 상태 데이터를 생성하는 단계; 및
    상기 상태 데이터를 메모리에 저장하는 단계를 더 포함하는,
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 상태 데이터는 타임스탬프, 상기 클라이언트 디바이스 식별자 및 면허 자원 정보를 포함하는,
    방법.
  4. 제1ㄹ항, 제2항 또는 제3항에 있어서,
    상기 면허 자원 정보는 상기 인식된 위치를 나타내는,
    방법.
  5. 제1항, 제2항 또는 제3항에 있어서,
    상기 면허 자원 정보는 상기 인식된 위치 및 상기 인식된 위치에서 이용가능한 제어되는 자원들을 나타내는,
    방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 인식된 위치는 도메인 이름인,
    방법.
  7. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 인식된 위치는 IP(Internet Protocol) 어드레스인,
    방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 요청은 질의이고, 상기 제어되는 액세스 자원은 상기 질의에 응답하는 자원인,
    방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 클라이언트 디바이스 식별자는 사용자 계정인,
    방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 클라이언트 디바이스가 상기 제어되는 액세스 자원을 요청하기 위해 상기 링크를 사용하는 단계를 더 포함하고, 상기 링크를 사용하는 단계는 요청으로 상기 링크를 제어되는 자원 서버에 전송하는 단계를 포함하는,
    방법.
  11. 제10항에 있어서,
    상기 제어되는 자원 서버에서:
    상기 제어되는 액세스 자원에 대한 상기 요청으로 상기 링크를 수신하는 단계;
    상기 링크에서 상기 토큰을 식별하는 단계;
    상기 토큰을 암호해독하는 단계;
    상기 타임스탬프에 기반하여 상기 토큰이 만료되지 않았다고 결정하고 상기 면허 자원 정보에 기반하여 상기 제어되는 액세스 자원이 이용가능하다고 결정함으로써 상기 토큰을 검증하는 단계; 및
    상기 토큰이 검증된 것에 대한 응답으로, 상기 제어되는 액세스 자원을 상기 클라이언트 디바이스에 제공하는 단계를 더 포함하는,
    방법.
  12. 제11항에 있어서,
    상기 토큰을 검증하는 단계는, 상기 토큰 내에 포함된 IP 서브넷이 상기 요청을 전송한 IP 어드레스의 IP 서브넷과 매칭한다고 결정하는 단계를 더 포함하는,
    방법.
  13. 시스템으로서,
    적어도 하나의 프로세서;
    클라이언트 디바이스들에 대한 상태 데이터 기록들을 저장하는 데이터 저장소; 및
    명령들을 저장하는 메모리를 포함하고,
    상기 명령들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 동작들을 수행하게 하고,
    상기 동작들은:
    클라이언트 디바이스로부터 질의를 수신하는 동작 ― 상기 클라이언트 디바이스는 디바이스 식별자를 가짐 ― ,
    상기 질의에 응답하는 적어도 하나의 자원이 제어되는 액세스 자원이라고 결정하는 동작,
    상기 질의가 상기 제어되는 액세스 자원에 대한 인식된 위치와 연관된다는 결정에 대한 응답으로:
    상기 제어되는 액세스 자원에 대한 링크를 생성하는 동작, 및
    상기 데이터 저장소에 상기 클라이언트 디바이스에 대한 상태 데이터 기록을 생성하는 동작 ― 상기 상태 데이터는 상기 클라이언트 디바이스 식별자, 타임스탬프, 및 상기 인식된 위치와의 연관성을 포함함 ― ,
    상기 질의가 인식된 위치와 연관되지 않는다는 결정에 대한 응답으로:
    상기 데이터 저장소에서 상기 클라이언트 디바이스 식별자에 대해 만료되지 않은 상태 데이터 기록을 식별하는 동작,
    상기 만료되지 않은 상태 데이터 기록을 식별하는 것에 대한 응답으로, 토큰을 생성하고 상기 제어되는 액세스 자원에 대한 링크에 상기 토큰을 포함시키는 동작 ― 상기 토큰은 상기 상태 데이터 기록으로부터의 난수, 타임스탬프 및 면허 자원 정보를 포함함 ― , 및
    상기 데이터 저장소에서 상기 클라이언트 디바이스 식별자에 대한 상기 상태 데이터 기록을 식별하는 데 실패한 것에 대한 응답으로, 상기 토큰이 없는 링크를 생성하는 동작, 및
    상기 질의에 대한 검색 결과를 상기 클라이언트 디바이스에 반환하는 동작을 포함하고,
    상기 검색 결과는 상기 자원에 대한 링크를 포함하고,
    상기 클라이언트 디바이스는 제어되는 액세스 서버로부터 상기 자원을 요청하기 위해 상기 자원에 대한 링크를 사용하고, 상기 제어되는 액세스 서버는 인식된 위치들과 연관된 요청들로부터 자원들에 대한 액세스를 제공하도록 구성되는,
    시스템.
  14. 제13항에 있어서,
    상기 인식된 위치들과 연관된 요청들로부터 자원들에 대한 액세스를 제공할 때, 상기 제어되는 액세스 서버는:
    특정 클라이언트 디바이스로부터, 제어되는 액세스 자원에 대한 링크를 수신하고 ― 상기 링크는 연관된 위치를 가짐 ― ;
    상기 위치가 인식된 위치인지 여부를 결정하고;
    상기 위치가 인식된 위치라는 결정에 대한 응답으로, 상기 제어되는 액세스 자원을 제공하고; 그리고
    상기 위치가 인식된 위치가 아니라는 결정에 대한 응답으로:
    상기 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로, 상기 제어되는 액세스 자원을 제공하고, 그리고
    상기 링크에 토큰이 없거나 상기 링크에 포함된 토큰이 만료되었다는 결정에 대한 응답으로, 상기 제어되는 액세스 자원에 대한 액세스를 거부하도록 구성되는,
    시스템.
  15. 제13항에 있어서,
    상기 토큰은 상기 요청에 대한 IP 어드레스의 IP 서브넷을 더 포함하고,
    상기 제어되는 액세스 서버는, 상기 위치가 인식된 위치가 아니고 상기 링크가 만료되지 않은 토큰을 포함한다는 결정에 대한 응답으로, 추가로:
    상기 특정 클라이언트 디바이스의 IP 서브넷이 상기 토큰 내의 IP 서브넷과 매칭하는지 여부를 결정하고; 그리고
    상기 IP 서브넷이 매칭하지 않는다는 결정에 대한 응답으로, 상기 제어되는 액세스 자원에 대한 액세스를 거부하도록 구성되는,
    시스템.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서,
    상기 인식된 위치는 지오로케이션을 나타내는,
    시스템.
  17. 제13항 내지 제16항 중 어느 한 항에 있어서,
    상기 인식된 위치는 IP 어드레스인,
    시스템.
KR1020227037972A 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스 KR102595830B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862718309P 2018-08-13 2018-08-13
US62/718,309 2018-08-13
US16/122,294 2018-09-05
US16/122,294 US11558193B2 (en) 2018-08-13 2018-09-05 Location-based access to controlled access resources
PCT/US2019/042061 WO2020036701A1 (en) 2018-08-13 2019-07-16 Location-based access to controlled access resources
KR1020207030270A KR102462894B1 (ko) 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207030270A Division KR102462894B1 (ko) 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스

Publications (2)

Publication Number Publication Date
KR20220149638A true KR20220149638A (ko) 2022-11-08
KR102595830B1 KR102595830B1 (ko) 2023-10-27

Family

ID=69406522

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227037972A KR102595830B1 (ko) 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스
KR1020207030270A KR102462894B1 (ko) 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207030270A KR102462894B1 (ko) 2018-08-13 2019-07-16 통제된 액세스 자원들에 대한 위치―기반 액세스

Country Status (10)

Country Link
US (2) US11558193B2 (ko)
EP (1) EP3701732B1 (ko)
JP (1) JP7049480B2 (ko)
KR (2) KR102595830B1 (ko)
CN (2) CN115378610A (ko)
AU (1) AU2019322806B2 (ko)
CA (1) CA3095637C (ko)
IL (1) IL277361B2 (ko)
SG (1) SG11202009561UA (ko)
WO (1) WO2020036701A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2020116193A1 (ko) * 2018-12-07 2020-06-11
WO2021045727A1 (en) * 2019-09-03 2021-03-11 Google Llc Systems and methods for secure identification retrieval
US11669627B1 (en) * 2020-10-13 2023-06-06 Wells Fargo Bank, N.A. System for data access token management
US11362821B2 (en) * 2020-10-15 2022-06-14 Google Llc Secure selective rules driven token invalidation
JP2024519643A (ja) 2021-06-28 2024-05-21 ドロップボックス, インコーポレイテッド リンクプラットフォーム・アズ・ア・サービス
US20230269262A1 (en) * 2022-02-24 2023-08-24 Microsoft Technology Licensing, Llc Detecting mass control plane operations
WO2023239418A1 (en) 2022-06-10 2023-12-14 Playback Health Inc. Multi-party controlled transient user credentialing for interaction with patient health data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140137248A1 (en) * 2012-11-14 2014-05-15 Damian Gajda Client Token Storage for Cross-Site Request Forgery Protection
WO2016182555A1 (en) * 2015-05-11 2016-11-17 Interactive Intelligence Group, Inc. System and method for multi-factor authentication
JP2016208510A (ja) * 2015-04-21 2016-12-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ユーザ・コンピュータの認証

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330961A (ja) 2002-05-13 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> トークン型コンテンツ提供システム及びトークン型コンテンツ提供方法
US7900245B1 (en) * 2002-10-15 2011-03-01 Sprint Spectrum L.P. Method and system for non-repeating user identification in a communication system
SE532098C2 (sv) * 2005-08-23 2009-10-20 Smarttrust Ab Autenticeringssystem och -förfarande
KR101109791B1 (ko) 2007-01-26 2012-03-15 인터디지탈 테크날러지 코포레이션 위치 정보를 보안유지하고 위치 정보를 이용하여 액세스를 제어하기 위한 방법 및 장치
GB2460275B (en) 2008-05-23 2012-12-19 Exacttrak Ltd A Communications and Security Device
EP2397868A1 (en) 2010-06-15 2011-12-21 The European Union, represented by the European Commission Method of providing an authenticable time-and-location indication
US9009258B2 (en) * 2012-03-06 2015-04-14 Google Inc. Providing content to a user across multiple devices
US9256722B2 (en) 2012-07-20 2016-02-09 Google Inc. Systems and methods of using a temporary private key between two devices
JP6033990B2 (ja) 2013-09-20 2016-11-30 オラクル・インターナショナル・コーポレイション 単一のフレキシブルかつプラガブルOAuthサーバを備える複数のリソースサーバ、OAuth保護したREST式OAuth許諾管理サービス、およびモバイルアプリケーションシングルサインオンするOAuthサービス
JP2015201030A (ja) 2014-04-08 2015-11-12 富士通株式会社 端末装置、情報管理サーバ、端末プログラム、情報管理プログラム、及びシステム
US10255456B2 (en) * 2014-09-26 2019-04-09 Visa International Service Association Remote server encrypted data provisioning system and methods
US10510072B2 (en) 2014-09-29 2019-12-17 The Toronto-Dominion Bank Systems and methods for administering mobile applications using pre-loaded tokens
US9854384B2 (en) 2014-10-31 2017-12-26 Dropbox, Inc. Proximity based content sharing
US9984371B2 (en) * 2015-03-27 2018-05-29 Ca, Inc. Payment de-tokenization with risk evaluation for secure transactions
JP6459749B2 (ja) 2015-04-27 2019-01-30 富士通株式会社 サービス提供方法、サービス提供システム及びサービス提供装置
CN107548547B (zh) 2015-04-30 2020-10-30 帕马索有限公司 识别在线服务的帐户的未授权访问的方法
US10693859B2 (en) * 2015-07-30 2020-06-23 Oracle International Corporation Restricting access for a single sign-on (SSO) session
AU2016324490A1 (en) * 2015-09-18 2018-04-19 First Data Corporation System for validating a biometric input
KR102117584B1 (ko) 2016-01-29 2020-06-26 구글 엘엘씨 로컬 디바이스 인증
WO2018071881A1 (en) 2016-10-14 2018-04-19 PerimeterX, Inc. Securing ordered resource access
RU2766438C2 (ru) * 2017-05-09 2022-03-15 Нетворк Некст, Инк. Способы двунаправленного обмена пакетами по узловым путям
US11126670B2 (en) * 2017-05-10 2021-09-21 Verizon Patent And Licensing Inc. Token and device location-based automatic client device authentication
US11134071B2 (en) * 2018-04-23 2021-09-28 Oracle International Corporation Data exchange during multi factor authentication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140137248A1 (en) * 2012-11-14 2014-05-15 Damian Gajda Client Token Storage for Cross-Site Request Forgery Protection
JP2016208510A (ja) * 2015-04-21 2016-12-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ユーザ・コンピュータの認証
WO2016182555A1 (en) * 2015-05-11 2016-11-17 Interactive Intelligence Group, Inc. System and method for multi-factor authentication

Also Published As

Publication number Publication date
AU2019322806B2 (en) 2022-01-06
US20230120723A1 (en) 2023-04-20
IL277361B1 (en) 2023-06-01
KR102595830B1 (ko) 2023-10-27
SG11202009561UA (en) 2020-10-29
EP3701732A1 (en) 2020-09-02
IL277361A (en) 2020-11-30
CN111869179A (zh) 2020-10-30
US11558193B2 (en) 2023-01-17
IL277361B2 (en) 2023-10-01
JP7049480B2 (ja) 2022-04-06
KR102462894B1 (ko) 2022-11-03
KR20200135458A (ko) 2020-12-02
CN111869179B (zh) 2022-09-13
EP3701732B1 (en) 2021-02-17
US20200052896A1 (en) 2020-02-13
JP2021527858A (ja) 2021-10-14
CN115378610A (zh) 2022-11-22
AU2019322806A1 (en) 2020-11-26
WO2020036701A1 (en) 2020-02-20
CA3095637A1 (en) 2020-02-20
CA3095637C (en) 2023-03-14

Similar Documents

Publication Publication Date Title
KR102462894B1 (ko) 통제된 액세스 자원들에 대한 위치―기반 액세스
US10574456B2 (en) Encrypted file storage
US9209973B2 (en) Delegate authorization in cloud-based storage system
US8332922B2 (en) Transferable restricted security tokens
JP2020536304A (ja) 単一の産業ネットワーク上の多テナント・データアクセスを可能にすること
US10148637B2 (en) Secure authentication to provide mobile access to shared network resources
US20130297662A1 (en) Secure Virtual File Management System
US10560435B2 (en) Enforcing restrictions on third-party accounts
US8977741B1 (en) Method and system for cloud computing service transparency
Carvalho et al. A Technical Overview on the Usage of Cloud Encryption Services
TWI829220B (zh) 可利用智能合約產生並移轉授權訊標的去中心化資料授權控管系統
US20230254288A1 (en) Secure System and Method for Sharing Online Accounts
Barać et al. Security and Updating
Ots et al. Workload Protection–Data
Rejus A Survey about Green Credential Cloud and its Security

Legal Events

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