다음을 통해 공유


ID 모델

Azure Communication Services는 ID에 구애받지 않는 서비스로, 다음과 같은 여러 가지 이점을 제공합니다.

  • ID 관리 시스템에서 기존 ID를 다시 사용하고 Azure Communication Services ID와 매핑합니다.
  • 기존 ID 시스템에서 잘 작동하며 특정 ID 공급자에 대한 종속성이 없습니다.
  • Azure Communication Services에서 복제할 필요가 없으므로 사용자의 데이터(예: 이름)를 비공개로 유지합니다.

Azure Communication Services ID 모델은 두 가지 주요 개념으로 작동합니다.

사용자 ID/매핑

SDK 또는 REST API를 통해 사용자 ID를 만들 때 Azure Communication Services는 고유한 사용자 식별자를 만듭니다. 전화 번호, 사용자/디바이스/애플리케이션 ID 또는 사용자 이름과 같은 외부 식별자는 Azure Communication Services에서 직접 사용할 수 없습니다. 대신 Communication Services ID를 사용하고 필요에 따라 사용자 고유의 사용자 ID 시스템에 대한 매핑을 유지 관리해야 합니다. Azure Communication Service 사용자 ID 만들기는 무료이며 사용자가 채팅 또는 통화와 같은 통신 형식을 사용하는 경우에만 요금이 부과됩니다. 생성된 Communication Services ID를 사용하는 방법은 시나리오에 따라 달라집니다. 예를 들어 ID 1:1, 1:N, N:1 또는 N:N을 매핑할 수 있으며 사용자 또는 애플리케이션에 사용할 수 있습니다. 사용자는 여러 디바이스를 사용하여 동시에 여러 통신 세션에 참여할 수 있습니다. Azure Communication Services 사용자 ID와 고유한 ID 시스템 간의 매핑을 관리하는 것은 개발자의 책임이며 기본 제공되지 않습니다. 예를 들어 기존 사용자 테이블에 열을 추가하여 CommunicationServicesId 연결된 Azure Communication Services ID를 저장할 수 있습니다. 매핑 디자인은 클라이언트 서버 아키텍처에서 자세히 설명합니다.

액세스 토큰

사용자 ID를 만든 후 사용자는 채팅 또는 통화를 사용하여 통신에 참여하기 위해 특정 범위의 액세스 토큰이 필요합니다. 예를 들어 범위가 있는 토큰을 가진 chat 사용자만 채팅에 참여할 수 있으며 범위가 있는 토큰을 가진 voip 사용자는 VoIP 호출에 참여할 수 있습니다. 사용자는 동시에 여러 토큰을 가질 수 있습니다. Azure Communication Services는 전체 액세스 및 제한된 액세스가 필요한 사용자를 설명하기 위해 여러 토큰 범위를 지원합니다. 액세스 토큰에는 다음과 같은 속성이 있습니다.

속성 설명
주제 토큰으로 표현되는 사용자 ID입니다.
만료 액세스 토큰은 1시간 이상, 최대 24시간 동안 유효합니다. 만료되면 액세스 토큰이 유효하지 않으며 서비스에 액세스하는 데 사용할 수 없습니다. 사용자 지정 만료 시간을 사용하여 토큰을 만들려면 원하는 유효성을 분(>=60, <1440)으로 지정합니다. 기본적으로 토큰은 24시간 동안 유효합니다. 일회성 모임에는 짧은 수명 토큰을 사용하고, 더 긴 기간 동안 애플리케이션을 사용하는 사용자에게는 더 긴 수명 토큰을 사용하는 것이 좋습니다.
범위 범위는 토큰을 사용하여 액세스할 수 있는 통신 기본 형식(Chat/VoIP)을 정의합니다.

액세스 토큰은 JWT(JSON Web Token)이며 무결성 보호를 제공합니다. 즉, 토큰 서명이 더 이상 일치하지 않으므로 액세스 토큰을 무효화하지 않고는 해당 클레임을 변경할 수 없습니다. 통신 기본 형식이 잘못된 토큰과 함께 사용되는 경우 액세스가 거부됩니다. 토큰이 암호화되거나 난독화되지 않더라도 애플리케이션은 토큰 형식 또는 해당 클레임에 의존해서는 안 됩니다. 토큰 형식은 변경할 수 있으며 공식 API 계약의 일부가 아닙니다. Azure Communication Services는 액세스 토큰에 대해 다음과 같은 범위를 지원합니다.

채팅 토큰 범위

세 가지 채팅 토큰 범위가 지원됩니다. 각 범위에 대한 사용 권한은 다음 표에 설명되어 있습니다.

  • chat
  • chat.join
  • chat.join.limited
기능/토큰 범위 채팅 chat.join chat.join.limited
채팅 스레드 만들기 Y N N
ID를 사용하여 채팅 스레드 업데이트 Y N N
ID를 사용하여 채팅 스레드 삭제 Y N N
채팅 스레드에 참가자 추가 Y Y N
채팅 스레드에서 참가자 제거 Y Y N
채팅 스레드 가져오기 Y Y Y
ID를 사용하여 채팅 스레드 가져오기 Y Y Y
ReadReceipt 가져오기 Y Y Y
ReadReceipt 만들기 Y Y Y
ID를 사용하여 채팅 스레드에 대한 메시지 만들기 Y Y Y
메시지 ID가 있는 메시지 가져오기 Y Y Y
메시지 ID로 사용자 고유의 메시지 업데이트 Y Y Y
메시지 ID로 사용자 고유의 메시지 삭제 Y Y Y
입력 표시기 전송 Y Y Y
스레드 ID에 대한 참가자 가져오기 Y Y Y

VoIP 토큰 범위

두 개의 VoIP 토큰 범위가 지원됩니다. 각 범위에 대한 사용 권한은 다음 표에 설명되어 있습니다.

  • voip
  • voip.join
기능/토큰 범위 voip voip.join
VoIP 통화 시작 Y N
사용자가 이미 회의실에 초대된 경우 Virtual Rooms에서 VoIP 통화 시작 Y Y
InProgress VoIP 통화 조인 Y Y
사용자가 이미 회의실에 초대된 경우 Virtual Rooms에서 InProgress VoIP 통화에 조인 Y Y
음소거/음소거 해제, 화면 공유 등과 같은 다른 모든 호출 내 작업 Y Y
Virtual Rooms의 음소거/음소거 해제, 화면 공유 등과 같은 다른 모든 호출 내 작업 사용자 역할에 따라 결정됨 사용자 역할에 따라 결정됨

과 함께 범위를 사용하여 voip.join 초대된 사용자만 액세스 권한을 얻고 사용자가 다른 통화를 만들 수 없는 예약된 통화를 만들 수 있습니다.

액세스 토큰 해지 또는 업데이트

  • Azure Communication Services ID 라이브러리를 사용하여 만료 시간 전에 액세스 토큰을 해지할 수 있습니다. 토큰 해지는 즉시 이루어지지 않으며 전파하는 데 최대 15분이 걸릴 수 있습니다.
  • ID, 리소스 또는 구독을 삭제하면 모든 액세스 토큰이 취소됩니다.
  • 특정 기능에 액세스하는 사용자의 기능을 제거하려면 사용자의 모든 액세스 토큰을 해지합니다. 그런 다음 범위 집합이 보다 제한된 새 액세스 토큰을 발급합니다.
  • 액세스 키를 회전하면 이전 액세스 키를 사용하여 만든 모든 활성 액세스 토큰이 해지됩니다. 따라서 모든 ID는 Azure Communication Services에 대한 액세스 권한을 잃게 되며 새 액세스 토큰이 필요합니다.

클라이언트 서버 아키텍처

신뢰할 수 있는 서비스를 통해 사용자 액세스 토큰을 만들고 관리해야 하며 클라이언트 애플리케이션에서 토큰을 만들지 않아야 합니다. 사용자 액세스 토큰을 만드는 데 필요한 연결 문자열 또는 Microsoft Entra 자격 증명을 보호해야 하며, 이를 클라이언트에 전달하면 비밀이 유출될 위험이 있습니다. 액세스 토큰을 제대로 관리하지 못하면 토큰이 자유롭게 분배되고 다른 사람이 오용될 때 리소스에 추가 요금이 부과될 수 있습니다.

액세스 토큰을 백업 저장소에 캐시하는 경우 토큰을 암호화하는 것이 좋습니다. 액세스 토큰은 중요한 데이터에 대한 액세스를 제공하며 보호되지 않는 경우 악의적인 활동에 사용할 수 있습니다. 사용자의 액세스 토큰이 있는 모든 사용자는 해당 사용자의 채팅 데이터에 액세스하거나 사용자를 가장하는 통화에 참여할 수 있습니다.

최소 권한의 보안 원칙을 따르기 위해 클라이언트 애플리케이션에 필요한 토큰에 해당 범위만 포함해야 합니다.

사용자 액세스 토큰 아키텍처를 보여주는 다이어그램.

  1. 사용자가 클라이언트 애플리케이션을 시작합니다.
  2. 클라이언트 애플리케이션이 ID 관리 서비스에 연결합니다.
  3. ID 관리 서비스는 애플리케이션 사용자를 인증합니다. 사용자가 익명인 시나리오에서는 인증을 건너뛸 수 있지만, 토큰 남용을 완화하기 위해 제한 및 CORS와 같은 다른 보호 조치를 서비스에 추가해야 합니다.
  4. 사용자에 대한 Communication Services ID를 만들거나 찾습니다.
    1. 안정적인 ID 시나리오: ID 관리 서비스는 애플리케이션 ID와 Communication Services ID 간의 매핑을 유지 관리합니다. (애플리케이션 ID에는 사용자 및 기타 주소 지정 가능한 개체(예: 서비스 또는 봇)가 포함됩니다.) 애플리케이션 ID가 새로운 경우 새 통신 ID가 생성되고 매핑이 저장됩니다.
    2. 임시 ID 시나리오: ID 관리 서비스는 새 통신 ID를 만듭니다. 이 시나리오에서 동일한 사용자는 각 세션에 대해 다른 통신 ID로 끝납니다.
  5. ID 관리 서비스는 해당 ID에 대한 사용자 액세스 토큰을 발급하고 클라이언트 애플리케이션에 반환합니다.

Azure App Service 또는 Azure Functions는 ID 관리 서비스를 운영하기 위한 두 가지 대안입니다. 이러한 서비스는 쉽게 확장되며 사용자를 인증하는 기능이 기본 제공됩니다. OpenIDFacebook과 같은 타사 ID 공급자와 통합됩니다.

다음 단계

  • 토큰을 발급하는 방법을 알아보려면 액세스 토큰 만들기 및 관리를 참조 하세요.
  • 인증에 대한 소개는 Azure Communication Services에 인증을 참조하세요.
  • 데이터 상주 및 개인 정보에 대해 알아보려면 지역 가용성 및 데이터 보존을 참조 하세요.
  • 테스트를 위해 ID 및 토큰을 빠르게 만드는 방법을 알아보려면 빠른 ID 만들기 빠른 시작을 참조 하세요.
  • 간단한 ID 관리 서비스의 전체 샘플은 신뢰할 수 있는 서비스 자습서를 참조하세요.
  • Entra ID 및 Microsoft Graph와 통합되는 고급 ID 관리 샘플은 인증 서비스 영웅 샘플로 향합니다.