데이터 통신 네트워크들의 보안 연합을 위한 기술들이 제공된다. 본 기술들은 에지 프록시 서버를 사용하여 연합 모드에 따라서 메시지들을 라우팅한다. 다이렉트 연합 모드에서, 네트워크의 에지 프록시 서버는 다른 네트워크, 서버, 다른 장치 및 사용자들과 같은 엔티티들의 특정한 세트와 메시지들을 교환할 수 있도록 구성된다. 자동 연합 모드에서, 에지 프록시 서버는 유효 증명서를 가진 엔티티들로부터의 모든 착신 메시지들을 수용할 수 있다. 클리어링하우스 연합 모드에서, 에지 프록시 서버는 특정의 신뢰형 클리어링하우스 서버로 모든 발신 메시지들을 포워딩한다.
일 실시예에서, 데이터 통신 네트워크의 보안 연합에 대한 기술이 제공된다. 이 기술들은 에지 프록시 서버를 사용하여 연합모드에 따라서 메시지들을 라우팅한다. 에지 프록시 서버는 두개의 네트워크들(예를 들어, 인트라넷과 인터넷, 또는 두개의 인트라넷들)을 스트래들(straddle)하는 네트워크 자원으로서, 에지 프록시 서버의 네트워크의 "외부"에 있는 컴퓨팅 장치가 에지 프록시 서버를 통해 에지 프 록시 서버의 네트워크의 "내부"에 있는 컴퓨팅 장치와 통신하도록 하며, 그 역도 가능하다. 에지 프록시 서버는 에지 프록시 서버의 네트워크의 양측에 있는 컴퓨팅 장치들 사이의 매개체로서 동작한다. 이렇게 동작하면서, 이것은 클라이언트들 및 서버들과 같은 엔티티들 사이에서 메시지를 가로채기, 해석 또는 포워딩한다. 관리자는 다이렉트, 자동 또는 클리어링하우스를 포함하는 몇몇 연합모드 중 하나 이상에서 에지 프록시 서버를 가진 데이터 통신 네트워크를 연합하기로 결정할 수 있다. 관리자는 에지 프록시의 네트워크 외부에 있는 컴퓨팅 장치의 사용자들이 에지 프록시의 네트워크 내부에 있는 컴퓨팅 장치들에 액세스하려고 하는 것을 허용 또는 거부할 수도 있다.
다이렉트 연합 모드에서, 네트워크의 에지 프록시 서버는 다른 네트워크, 서버, 컴퓨팅 장치 또는 사용자들과 같은 엔티티들의 특정한 세트와 메시지를 교환하도록 구성된다. 네트워크의 관리자는 메시지를 교환하기 위해 에지 프록시 서버를 인증하는 서버 또는 도메인과 같은 인증된 엔티티들을 특정할 수 있다. 관리자는 URI(uniform resource identifier)들을 사용하여 이러한 엔티티들을 특정할 수 있다. 예를 들어, 관리자는 한 파트너("PartnerA")에게 그것의 에지 프록시 서버 "edge.partnera.com"를 통한 다이렉트 연합을 허용할 것을 표시하며, PartnerA에게 도메인 "partnera.com"만을 위한 PartnerA 응답가능성 및 인증을 수락한다. 이 구성은 "edge.partnera.com"을 인가하여, 패턴 "<any user>@partnera.com"에 매칭되는 URI를 가진 어떤 사용자와도 연결되고 그에게 메시지를 송수신한다. 에지 프록시 서버는 또한, 예를 들어, 증명서, 공유 키, 은밀히 교환되는 공개/비밀 키 쌍, 커베로스(Kerberos), 또는 다른 신임장 기반 증명 등을 포함하는 다양한 인증 모델들을 사용하여 그 네트워크의 외부에 있는 컴퓨팅 장치들을 인증할 수 있다. 에지 프록시 서버가 사용할 인증 모델을 선택하는 관리자는 DNS(domain name service)를 사용하는 인증이 사용될 것을 표시할 수도 있다. 이 인증은 연결이 구축됐을 때 수신되거나 도착 메지지의 헤더 필드에 표시된 증명서가 무효화된 증명서들의 리스트에 나타나는지를 결정하는 것을 포함할 수 있다. 증명서가 사용될 때, 무효화된 증명서들의 이러한 리스트는 때때로 자동적으로 또는 수동적으로 갱신될 수 있다. 인가된 엔티티를 인증하는 것은 인가된 엔티티가 유효(예를 들어, 인증된) 연결 상에서 메시지를 송신하는지를 결정하는 것도 포함할 수 있다. 인증 및 인가 확인들이 완료되면, 에지 프록시 서버는 인증되지 않거나 인가되지 않은 엔티티들로부터의 또는 그것들에게로의 모든 메시지들을 무시할 수 있다. 인가된 엔티티(또한 인증될 수 있음)로부터 메시지가 도착하면, 에지 프록시 서버는 메지시를 송신하거나 메시지의 수신자인 엔티티가 "거부 리스트" 내에 나타나는지를 확인할 수 있다. 예를 들어, "X.COM"은 인가된 엔티티이지만, "JOE@X.COM"은 거부 리스트 내에 있을 수 있다. 이 경우에, "SALLY@X.COM"으로부터의 메시지는 수용될 수 있지만, "JOE@X.COM"으로부터의 메시지는 무시된다. 그후 에지 프록시 서버는 무시되지 않은 메시지들을 적절한 "다음 홉"으로 포워딩할 수 있다. 다음 홉은 메시지가 다음에 라우팅될 컴퓨팅 장치이다. 에지 프록시 서버는 다음 홉들의 관리자 구성에 의한 메시지의 헤더 필드들의 내용에 기초하여 또는 메시지의 수신자에 관련된 등록 서버와 같은 또다른 서버에 질의함으로써 메시지의 다음 홉을 결정한다. 이에 따라, 다이렉트 연합모드에서, 메시지들은 인증될 수 있고, 관리자가 인가했다고 표시된 엔티티들과만 교환될 수 있다.
자동 연합모드에서, 에지 프록시 서버는 에지 프록시 서버의 관리자에 의해 수용가능하다고 표시되는 방식으로 스스로를 인증할 수 있는 엔티티들로부터의 모든 착신 메시지들을 수용할 수 있다. 에지 프록시 서버는, 예를 들어, 증명서, 공유 키, 은밀히 교환된 공개/비밀 키 쌍, 커베로스 또는 다른 신임장 기반 증명 등을 포함하는 다양한 인증 모듈들을 사용하여 그들의 네트워크 외부에 있는 컴퓨팅 장치들을 인증할 수 있다. 예를 들어, 엔티티가 에지 프록시 서버에게 메시지를 송신할 때, 엔티티는 모든 메시지들에 증명서를 추가하거나 연결에 관련된 증명서를 제공함으로써 에지 프록시 서버를 사용해 자신을 인증할 수 있다. 인증된 연결 상에서 메시지를 수신할 때, 에지 프록시 서버는 증명서에 기초하여 메시지를 수용할 것을 결정할 수 있다. 대안적으로, 메시지들은 인증되지 않은 연결 상에서 메시지를 인증하는 증명서들을 포함할 수 있다. 인증은 메시지 내에 표시된 인증서가 메시지 또는 연결을 무효화하기 위한 표시일 수 있는 무효화된 증명서들의 리스트 내에 나타나는지를 결정함으로써, 증명서를 검증하는 것을 포함할 수 있다. 무효화된 증명서들의 이러한 리스트는 때때로 자동적으로 또는 수동적으로 갱신될 수 있다. 에지 프록시 서버는 메시지의 송신자에 대해 표시한 URI가 실제로 메시지를 송신한 도메인(송신하는 엔티티를 인증하기 위해 사용되는 증명서에 의해 표시됨)과 매칭됨을 검증할 수 있다. 에지 프록시 서버가 자신의 네트워크 내부에 있는 컴퓨팅 장치로부터의 발신 메시지를 수신할 때, 그것은 DNS의 질의 서비스("SRV") 메커니즘을 사용하여, 목적지 서비스가 어떤 서비스를 제공하는지를 알 수 있다. 이 메커니즘은 연대적으로 "DNS-SRV"를 의미한다. 목적지 서버가 이러한 서비스를 제공하면, 에지 프록시 서버는 상호적으로 인증된 전송 레이어 보안("MTLS")을 사용하여 목적지 서버에게 보안 세션을 요청할 수 있다. 자동 연합 모드는 메시지가 거절될 수 있거나 메시지가 송신되지 않을 수 있는 엔티티들을 포함하는 거부 리스트도 가질 수 있다. 이에 따라, 자동 연합 모드에서, 에지 프록시 서버는 실제로 메시지가 송수신되기 전까지 그 연합 내의 다른 네트워크들 또는 서버들에 대해 알 필요가 없다.
클리어링하우스 연합 모드에서, 에지 프록시 서버는 특정되고 신뢰적인 클리어링하우스 서버에게 모든 발신 메시지들을 포워딩할 수 있다. 클리어링하우스 서버는 메시지 내에 특정된 수신자에게 수신한 메시지들을 포워딩할 수 있다. 일 실시예에서, 클리어링하우스 서버는 세션 내에 연결된 컴퓨팅 장치들 사이에서 메시지들을 계속 라우팅한다. 실시예에서, 메시지의 수신자는 송신자와의 세션을 직접 구축할 수 있으며, 이에 따라서 세션 내의 다음 메시지들을 위한 클리어링하우스를 바이패싱(bypass)한다. 클리어링하우스를 사용하여, 에지 프록시 서버는 그 연합 내의 다른 네트워크들 또는 서버들에 대해서는 알 필요가 없으며, 신뢰적인 클리어링하우스 서버에 대해서만 알면 된다. 연합 내의 네트워크들 또는 서버들은 클리어링하우스가 포워딩한 메시지를 가진 모든 엔티티들을 암시적으로 신뢰할 수 있다. 그러나, 자동 및 다이렉트 연합 모드와 같이, 클리어링하우스 연합 모드도 메시지가 거절될 엔티티들을 포함하는 거부 리스트를 가질 수 있다. 클리어링하우스 연합 모드에서, 에지 프록시는 메시지의 교환을 가능하게 하는 관리된 클리어링하우스를 사용하여 최소 구성을 갖는 수많은 네트워크들과 메시지들을 교환하도록 용이하게 구성될 수 있다.
클리어링하우스 연합 모드의 대안적인 실시예에서, 클리어링하우스 서버는 메시지들을 포워딩할 수 있는 도메인들을 표시할 수 있다. 이러한 표시는 관리자가 클리어링하우스 서버들의 서브세트가 관리자의 에지 프록시 서버들에게 메시지를 포워딩하는 것을 허용하는 것을 가능하게 할 수 있다.
다수의 연합 모드들은 동시에 다양한 "하이브리드" 연합 모드들 내에서 사용될 수 있다. 예를 들어, 자동 연합은 몇몇 다이렉트 연합 모드 파트너들이 구성됐을 때 조차 사용될 수 있다. 에지 프록시 서버들은 또한 엔트리들을 추가 또는 제거하기 위해 관리자가 차후에 정련할 수 있는 인가 리스트와 상호작용하는 엔티티들을 동적으로 추가함으로써 추가적인 엔티티들을 자동적으로 인가할 수 있다. 클리어링하우스 연합 모드는 또한 다이렉트 연합 모드와 함께 사용될 수 있다. 이러한 구성에서, 에지 프록시 서버는 인가된 엔티티들과 메시지를 직접적으로 교환할 수 있으며, 클리어링하우스 서버를 사용하여 다른 엔티티들을 인가할 수 있다. 알려진 엔티티들을 특정하고 보다 큰 엔티티들의 세트와 메시지를 교환함으로써, 시스템은 관리자 부분에 대한 상당한 수동적 노력을 요구하지 않으면서 엔티티의 대규모 세트와의 통신을 가능하게 한다.
도 1은 데이터 통신 네트워크를 안전하게 연합하기 위한 시스템의 일 실시예를 예시는 블럭도이다. 시스템은 하나 이상의 클라이언트(102)들, 하나 이상의 네 트워크(104)들, 및 인터넷과 같이 클라이언트들과 네트워크들을 연결시키는 네트워크(114)를 가질 수 있다. 클라이언트들은 네트워크 연결(108)을 통해 인터넷에 연결될 수 있다. 네트워크(104)는 다양한 형태의 데이터 통신 링크(110)들을 사용하여 인터넷에 연결될 수 있다. 클라이언트들은, 예를 들어, 컴퓨터, 셀룰러 전화, 또는 인터넷에 연결된 다른 장치들일 수 있다. 네트워크는, 예를 들어, 인트라넷일 수 있다. 클라이언트들은 또한 사설 데이터 통신 링크(112)들을 사용하여 네트워크에 직접적으로 연결될 수 있다. 마찬가지로, 네트워크들은 사설 데이터 통신 링크(112)들을 사용하여 다른 네트워크들에 직접적으로 연결될 수 있다. 시스템은 데이터 통신 링크(118)를 통해 인터넷에 연결된 클리어링하우스(116)도 가질 수 있다. 인터넷은 다양한 다른 컴퓨팅 장치들(도시되지 않음)에도 연결될 수 있다. 여기에 설명된 연결들은 물리적, 무선 및 임의의 형태의 데이터 통신 네트워크 연결일 수 있다.
도 2는 도 1의 네트워크에 대한 일 실시예를 예시하는 블럭도이다. 네트워크(200)는 하나 이상의 클라이언트들(202), 서버(204), 디렉토리 서버(directory server; 206), 디렉터(director; 208), DNS(210) 및 에지 프록시 서버(212)를 포함한다. 네트워크는 다른 장치들(도시되지 않음)도 포함할 수 있다. 예시된(및 도시되지 않은 것들) 네트워크의 장치들은 네트워크(200)에 관련된 데이터 통신 네트워크를 통해 상호연결될 수 있다. 클라이언트(202) 및 서버(204)는 SIP 메시지들을 교환하는 것을 포함하는 다양한 활동들을 수행할 수 있다. 디렉토리 서비스(206)는 장치, 사용자 및 다른 네트워크 자원들을 위한 위치 서비스를 제공할 수 있다. 예를 들어, 디렉토리 서비스는 ACTIVE DIRECTORY 서비스일 수 있다. 디렉터(208)는 클라이언트들을 클라이언트에 관련된 서버 또는 서버들의 풀(pool)로 리다이렉트하는 것, 네트워크 트래픽을 로깅하는 것, 및 네트워크의 일부가 아닌 컴퓨팅 장치로부터의 사용자들이 네트워크에 연결되는 것을 인가하는 것 등을 포함하는 다양한 서버 관련 기능들을 수행한다. DNS는 네트워크 자원 네임(예를 들어, 장치 네임)들을 네트워크 위치(예를 들어, IP 주소)들에 매핑시키는 데이터베이스를 가진다. 네트워크의 장치들은 DNS를 사용하여, "익숙한" 장치 네임을 장치들이 메시지를 라우팅하는데 사용할 수 있는 네트워크 주소로 변환시킨다. 에지 프록시 서버(212)는 네트워크(200)("내부" 네트워크) 및, 예를 들어, 인터넷(도시되지 않음)인 "외부" 네트워크 모두에 연결된다. 클라이언트가 서버로의 세션을 개시하길 원하면, 에지 프록시는 예를 들어, 세션이 열려야 하는지 및 어느 통신 링크가 사용되야 하는지를 결정할 수 있다.
도 3은 도 2의 에지 프록시 서버에 관련된 컴포넌트들의 일 실시예를 예시하는 블럭도이다. 컴포넌트들은 전송 컴포넌트(302), DNS-SRV 컴포넌트(304), 라우팅 컴포넌트(306) 및 리스트 컴포넌트(308)를 포함한다. 에지 프록시 서버는 착신 메시지(즉, "외부" 네트워크로부터 도착한 메시지)를 수신하고 발신 메시지(즉, "외부" 네트워크로 송신된 메시지)를 포워딩한다. 에지 프록시 서버는 메시지에 관련된 다양한 동작들을 수행한 후 착신 또는 발신 메시지들을 다음 홉(즉, 메시지가 다음으로 라우팅될 장치)으로 포워딩한다. 이러한 동작들은 메시지가 메시지 헤더 필드 내에 표시된 서버로부터 수신된 것인지를 검증하는 것, 에지 프록시 서버의 네트워크에게 메시지를 송신하기 위해 메시지의 송신자가 인가됐는지를 결정하는 것, 및 메시지가 다음에 어느 장치로 라우팅되어야 하는지를 결정한 것을 포함할 수 있다. 이러한 동작들은 전송 컴포넌트(302), 라우팅 컴포넌트(306), 도메인 네임 서비스 질의 서비스 컴포넌트(306), 및 리스트 컴포넌트(308)와 같은 에지 프록시 서버 및 네트워크의 다양한 컴포넌트들을 사용하여 수행된다.
전송 컴포넌트(302)는 에지 프록시 서버와 메시지를 교환하는 컴퓨팅 장치들 과의 세션을 구축한다. 예를 들어, 전송 컴포넌트는 네트워크로 메시지를 송신하는 컴퓨팅 장치와의 MTLS 연결을 구축할 수 있다. 전송 컴포넌트는 또한 다른 컴퓨팅 장치들과 함께 구축된 수많은 세션들 또는 연결들을 제어할 수 있는데, 이는 예를 들어, 악의 있는 사용자 또는 장치들이 시도하는 "서비스 거부 공격"으로부터 에지 프록시 서버를 보호하여 에지 프록시 서버가 지정된 기능들을 수행하도록 하기 위한 것이다. 전송 컴포넌트는 또한 네트워크 외부에 있는 장치로부터의 -또는 연결이 구축될 때 수신된- 메시지들 내에 나타난 증명서들이 무효 증명서들의 리스트 상에 나타나지 않음을 검증할 수 있다. 전송 컴포넌트는 또한 시스템이 네트워크의 외부에 있는 장치들에 포워딩하거나 이러한 장치들과의 연결을 구축하는 것에 대한 메시지들에 자신의 증명서를 추가할 수 있다.
라우팅 컴포넌트(306)는 착신 메시지 및 발신 메시지들이 메시지의 헤더 필드의 내용에 기초하여 포워딩되어야 하는지를 결정한다. 메시지 송신자의 URI가 인가 정보 및 메시지의 헤더 내에 포함된 다른 정보와 일치하는지를 결정함으로써 라우팅 컴포넌트는 착신 메시지를 검증한다. 에지 프록시 서버가 다이렉트, 자동 또는 하이브리드 연합 모드 중 어느 곳에서 동작하는지에 상관없이, 라우팅 컴포넌트는 송수신자의 엔티티(또는 엔티티의 도메인)가 인가된 엔티티들 또는 도메인들의 리스트 내에 나타나는지를 결정한다. 에지 프록시 서버가 자동 연합 모드 (또는 자동 연합 모드를 포함하는 하이브리드 연합 모드) 내에서 동작할 때, 라우팅 컴포넌트는 URI의 도메인이 메시지의 헤더 내에 포함된 다른 정보와 일치하는지도 결정한다.
라우팅 컴포넌트는 또한 메시지의 헤더 필드들의 내용에 기초하여 발신 메시지를 검증한다. 다이렉스 연합 모드 내에서 동작할 때, 라우팅 메커니즘은 발신 메시지에 대해 표시한 도메인이 인가되는지를 결정한다. 도메인이 인가되지 않았으면, 라우팅 컴포넌트는 그 메시지를 무시하거나 그 도메인이 인가되지 않은 것임을 표시하는 응답 메시지를 반환한다. 자동 연합 모드 내에서 동작할 때, 라우팅 컴포넌트는 우선 메시지 내에 표시된 목적지 엔티티의 도메인이 인가된 것인지를 확인한다. 도메인이 인가되지 않은 것이면, 그 메시지는 DNS-SRV 컴포넌트로 전달되어 포워딩될 수 있는지 결정될 수 있다. DNS-SRV 컴포넌트가 알맞은 엔티티를 위치시킬 수 없고 메시지를 수신할 수 없으면, 그 메시지는 포워딩될 수 잇다.
도메인 네임 서비스 질의 서비스 컴포넌트("DNS-SRV", 304)는 메시지의 목적지 서버를 결정한다. 이 컴포넌트는 발신 메시지를 어떻게 라우팅할 지를 결정하기 위해 사용될 수 있다. DNS-SRV 컴포넌트는 메시지를 무시하거나, 컴포넌트가 메시지를 라우팅할 서버를 결정할 수 없을 때 실패를 표시하는 응답 메시지를 반환할 수 있다. 메시지를 라우팅할 알맞은 서버를 찾을 수 없다는 것은 메시지가 인 가되지 않은 서버를 목적지로 하고 있음을 표시하는 것일 수 있다. DNS-SRV 컴포넌트는 DNS 서버를 질의함으로써 메시지가 라우팅될 수 있는 서버들의 세트를 획득한다. 전송 컴포넌트에 의해 요구될 때, DNS-SRV 컴포넌트는 이 질의를 수행함으로써, 예를 들어, URI에 기초하여 메시지를 위한 서버를 표시한다. 그후 전송 컴포넌트는 표시된 서버로 메시지를 송신할 것을 시도할 수 있다. 전송 컴포넌트가 표시된 서버에 접촉할 수 없으면, 전송 컴포넌트는 DNS-SRV 컴포넌트에게 대안적인 서버를 제공할 것을 요구할 수 있다. DNS-SRV 컴포넌트가 전송이 접촉할 수 있는 서버를 식별하기 전까지 이 프로세스가 반복될 수 있다. 대안적으로, DNS-SRV 컴포넌트는 전송 컴포넌트에게 서버들의 리스트를 제공하고, 전송 컴포넌트는 전송 컴포넌트가 접촉할 수 있는 서버를 찾을 때까지 독립적으로 리스트를 반복한다. 에지 프록시 서버가 다이렉트 연합 모드 내에서 동작할 때, 서버 주소들이 명시적으로 표시되기 때문에, DNS-SRV 컴포넌트는 이러한 단계들을 수행할 필요가 없다.
리스트 컴포넌트(308)는 에지 프록시와 메시지를 교환할 엔티티들에 관련된 리스트("수용 리스트") 및 에지 프록시와 메시지를 교환하지 않을 엔티티들에 관련된 리스트("거부 리스트")를 가질 수 있다. 이 리스트들은 파일 하드 디스크 드라이브, RAM과 같은 에지 프록시 서버에 관련되거나 연결된 저장 장치 또는 파일 서버(도시되지 않음)에 연결된 저장 장치에 저장될 수 있다. 일 실시예에서, 시스템은 거부 리스트(즉, 인가되지 않은 엔티티들을 포함) 보다 먼저 수용 리스트(즉, 인가된 엔티티들을 포함)를 고려할 수 있다. 대안적인 실시예에서, 시스템은 리스트를 반대로 확인할 수 있다. 엔티티가 두 리스트 모두에 나타났을 때 어떤 리스 트가 우선적으로 확인되는지는 다른 결과를 가져올 수 있다. 예를 들어, 엔티티가 두 리스트 모두에 나타나고 거부 리스트가 우선적으로 확인되면, 이어서 그 엔티티가 수용 리스트에 추가되더라도 그 엔티티로부터의 메시지는 수용될 수 없다.
리스트는 검색을 지원하는 다양한 스킴들을 사용하여 특정된 엔티티들을 포함한다. 예를 들어, 관리자는 적임 도메인 네임, IP 주소, DNS-SRV 질의, 및 서버 또는 도메인들을 표시하기 위해 일반적으로 사용되는 다른 수단들을 사용하는 엔티티들을 특정할 수 있다. 리스트 내의 정보는 표시법을 사용하여 표시될 수 있다. 예를 들어, 관리자는 "MICROSOFT.COM"으로 끝나는 모든 도메인들이 인가된 것임을 표시할 수 있다. 리스트 컴포넌트는 패턴 검색 메커니즘을 사용하여 리스트들 내의 엔티티들을 검색할 수 있다. 이러한 패턴들은 와일드 카드(wild card)를 포함할 수 있다. 예를 들어, "*.MICROSOFT.COM"은 "MICROSOFT.COM"으로 끝나는 도메인들로부터의 또는 그것으로의 모든 메시지들이 인가됐음을 표시할 수 있다.
인가된 및 인가되지 않은 엔티티들의 조합은 도메인 내의 특정한 엔티티들이 메시지들을 송수신할 수 있게 하기위해 사용될 수 있다. 예를 들어, "*.x.com"은 "x.com"으로 끝나는 도메인들 모두가 인가되지 않지만, "ceo.x.com"은 인가될 수 있음을 나타낼 수 있다. 이러한 경우에, 도메인 "ceo.x.com"로부터 또는 그것으로의 메시지를 제외한 도메인 "x.com"을 갖는 임의의 엔티티로의 또는 그것으로부터의 모든 메시지들은 무시된다.
시스템은 이러한 컴포넌트들을 사용하여, 발신 메시지들이 다양한 방식으로 라우팅되는지를 또는 그 라우팅 방법을 결정하는데 사용할 수 있다. 우선 시스템 은 메시지를 수신할 엔티티가 인가된 도메인 내에 있는지를 결정할 수 있다. 그것이 인가되지 않은 도메인 내에 있으면, 시스템은 그 엔티티가 인증된 엔티티들의 리스트 내에 나타나는지를 결정할 수 있다. 예를 들어, "X.COM" 도메인은 인가되지 않지만, "CEO.X.COM" 엔티티는 인가될 수 있다. 도메인이 인가되지 않았으면 (및 명시적으로 인가되지 않았으면), 시스템은 DNS에 접촉하여 메시지를 어떻게 라우팅할 지를 결정할 수 있다. 수신자에 대한 DNS 엔트리가 존재하지 않으면, 시스템은 클리어링하우스에 접촉하여 메시지를 라우팅할 수 있다. 대안적으로, 시스템은 개별적으로 메시지들을 어떻게 라우팅(예를 들어, "디폴트" 라우팅)해야 하는지를 아는 신뢰적인 것에 메시지를 송신할 수 있다.
에지 프록시 서버는 메시지들을 라우팅하기 위한 기업의 비지니스 모델에 관련된 인가 논리도 시행할 수 있다. 예를 들어, 에지 프록시 서버는 다른 것들을 제외한 소정의 사용자들 및 장치들만이 SIP 메시지를 교환할 수 있도록 구성될 수 있다. 이 인증 논리는 임의의 및 모든 연합 모드들을 사용하여 메시지를 인증 및 라우팅할 수 있다. 다른 예로서, 에지 프록시 서버는 다이렉트 연합 라우팅을 우선적으로 시도할 수 있다. 그것을 실패하면, 에지 프록시 서버는 다음으로 자동 연합 라우팅을 시도할 수 있다. 그러한 연합 라우팅 모두가 메시지를 포워딩지 못하면, 에지 프록시 서버는 클리어링하우스 연합 모델을 사용할 수 있으며, 여기서 클리어링하우스는 "디폴트" 라우트이다.
도 4는 또다른 연합 네트워크 상의 장치들과 교환되는 메시지들을 처리하기 위해 에지 프록시 서버에 의해 수행되는 루틴의 일 실시예를 예시하는 순서도이다. 예를 들어, 루틴은 각각 상이한 네트워크에 접속된 2개의 장치들 사이의 세션에 관련된 메시지들을 인가, 인증 및 포워딩할 수 있다. 루틴은 매개변수로서 메시지를 수신하는 블럭(502)에서 시작된다. 블럭(504)에서, 루틴은 메시지가 내부 서버로부터 수신되었는지를 결정한다. 메시지가 내부 서버로부터 수신됐으면, 루틴은 블럭(506)으로 계속된다. 그렇지 않으면, 루틴은 블럭(514)로 계속된다. 블럭(506)에서, 루틴은 메시지가 응답인지 또는 요청인지를 결정한다. 메시지가 요청이면, 루틴은 블럭(508)으로 계속된다. 그렇지 않으면, 루틴은 블럭(512)으로 계속된다. 블럭(508)에서, 루틴은 송수신자가 인가되었는지를 결정한다. 인가된 경우에, 루틴은 메시지로 부터의 라우트 헤더 필드를 검증하고, 레코드 라우트 및 경유 헤더 필드를 시그널링하고, 요청을 포워딩한다. 레코드 라우트 및 경유 헤더 필드가 시그널링되면, 그 장치들은 라우팅을 위해 레코드 라우트 및 경유 헤더 필드들을 사용하는 향후 그들이 수신할 메시지 내의 메시지 헤더를 신뢰할 수 있다.
블럭(512)에서, 루틴은 응답 내에 표시된 송수신자가 인가되었는지를 결정한다. 인가되었으면, 루틴은 응답의 시그널링된 경유 헤더 필드들에 기초하여 응답을 라우팅한다.
블럭(514)에서, 루틴은 메시지가 요청인지 또는 응답인지를 결정한다. 메시지가 요청이면, 루틴은 블럭(516)으로 계속된다. 그렇지 않으면, 루틴은 블럭(518)으로 계속된다. 블럭(516)에서, 루틴은 요청이 포워딩될 서버를 인가한다. 서버가 인가되면, 루틴은 수신자 및 송신자 URI 헤더 필드들을 검증한다. 헤더 필드들이 검증되면, 루틴은 다음 홉으로 메시지를 포워딩한다.
블럭(518)에서, 루틴은 메시지의 경유 헤더 필드들을 검증한다. 이러한 필드들이 검증되면, 루틴은 서버에게 응답을 포워딩한다.
블럭(510)에서 루틴은 자신의 호출자에게 반환된다.
여기에서 설명된 특정한 예들은 SIP를 사용하는 것을 의미하지만, 대안적인 실시예들은 다른 동등물 또는 유사한 프로토콜들을 사용할 수 있다.
데이터 통신 네트워크의 보안 연합을 위한 시스템이 구현된 컴퓨팅 장치는 CPU, 메모리, 입력 장치(예를 들어, 키보드 및 포인팅 장치들), 출력 장치(예를 들어, 디스플레이 장치들), 및 저장 장치(예를 들어, 디스크 드라이브)를 포함할 수 있다. 메모리 및 저장 장치들은 시스템을 구현하는 명령어들을 포함할 수 있는 컴퓨터 판독가능 매체이다. 추가적으로, 데이터 구조들 및 메시지 구조들은 저장되거나 통신 링크 상의 신호와 같은 데이터 전송 매체들을 통해 전송될 수 있다. 인터넷, LAN, WAN 또는 지점간 다이얼업 연결(point-to-point dial-up connection)과 같은 다양한 통신 링크들이 사용될 수 있다.
도 1은 데이터 통신 네트워크의 보안 연합을 위한 시스템이 구현될 수 있는 적절한 동작 환경의 예를 예시한다. 동작 환경은 단지 적절한 동작 환경의 일 예일 뿐이며, 본 시스템의 기능 또는 사용의 영역에 어떤 제한을 가하기 위한 것은 아니다. 사용하기에 적절할 수 있는 다른 잘 알려진 컴퓨팅 시스템, 환경 및 구성들은 "스마트" 셀룰러 전화, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능 전자 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술된 시스템 또는 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경을 포함하는 개인용 컴퓨터, 서버 컴퓨터, 핸드핼드 또는 랩탑 장치를 포함한다.
데이터 통신 네트워크들의 보안 연합을 위한 시스템은 하나 이상의 컴퓨터들 또는 다른 장치들에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈들은 특정한 태스크들을 수행하거나 특정한 추상 데이터 유형들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 선호되는 바와 같이 조합되거나 분산될 수 있다.
상술된 바로부터, 본 발명의 특정한 실시예들은 단지 예시를 위해 설명되었을 뿐이며, 본 발명의 취지 및 영역을 벗어나지 않는 다양한 수정물들이 생성될 수 있음이 인식될 것이다. 따라서, 본 발명은 청구된 청구항을 제외한 다른 것에 의해 제한되지 않는다.