ID 모델

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

  • ID 관리 시스템에서 기존 ID를 다시 사용하고 Azure Communication Services ID에 매핑하기만 하면 됩니다.
  • ID에 구애받지 않은 모델이 기존 ID 시스템과 잘 작동하므로 통합 유연성을 제공합니다.
  • 이름과 같은 사용자 데이터를 Azure Communication Services에서 복제할 필요가 없으므로 비공개로 유지할 수 있습니다.

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

사용자 ID/매핑

사용자를 만들 때 Azure Communication Services에서 생성하는 사용자 식별자를 통해 사용자를 고유하게 식별합니다. 전화 번호, 사용자, 디바이스, 애플리케이션 및 GUID와 같은 외부 식별자는 Azure Communication Services의 ID로 사용할 수 없습니다. Azure Communication Service 사용자 ID를 무료로 만들 수 있습니다. 요금은 사용자가 채팅 또는 통화와 같은 통신 방식을 사용하는 경우에만 발생합니다. 사용자 ID는 1:1, 1:N, N:1, N:N 구성으로 Azure Communication Services 사용자 ID에 매핑될 수 있습니다. 사용자는 여러 디바이스를 사용하여 동시에 여러 통신 세션에 참여할 수 있습니다. Azure Communication Services 사용자 ID와 고객의 개인 사용자 ID 간의 매핑은 고객이 보관하고 유지 관리합니다. 예를 들어 고객은 사용자 테이블에 CommunicationServicesId 열을 추가하여 연결된 Azure Communication Services ID를 저장할 수 있습니다.

액세스 토큰

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

속성 설명
ID 토큰을 고유하게 식별합니다.
만료 액세스 토큰은 1~24시간 동안 유효합니다. 만료되면 액세스 토큰이 무효화되고 기본 서비스에 액세스하는 데 사용할 수 없습니다. 사용자 지정 유효 기간이 있는 토큰을 생성하려면 토큰을 생성할 때 원하는 유효 기간을 지정합니다. 사용자 지정 유효성이 지정되지 않은 경우 토큰은 24시간 동안 유효합니다. 일회성 회의에는 짧은 수명 토큰을 사용하고 더 오랜 기간 동안 애플리케이션을 사용하는 에이전트에게는 더 긴 수명 토큰을 사용하는 것이 좋습니다.
범위 범위 매개 변수는 사용 가능하며 비어 있지 않은 기본 서비스의 세트(Chat/VoIP)를 정의합니다.

액세스 토큰은 JWT(JSON Web Token)이며 무결성 보호를 제공합니다. 즉, 발급된 후에는 해당 클레임을 변경할 수 없습니다. 따라서 ID, 만료, 범위 등의 속성을 수동으로 변경하면 액세스 토큰이 무효화됩니다. 무효화된 토큰으로 기본 서비스를 사용하는 경우 기본 서비스에 대한 액세스가 거부됩니다. Azure Communication Services는 액세스 토큰에 대해 다음과 같은 범위를 지원합니다.

채팅 토큰 범위

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

  • 채팅
  • 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의 음소거/음소거 해제, 화면 공유 등과 같은 다른 모든 통화 내 작업 사용자 역할에 따라 결정됨 사용자 역할에 따라 결정됨

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

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

고려 사항

  • 클라이언트의 애플리케이션이 아닌 서버 쪽 서비스에서 액세스 토큰을 발급하는 것이 좋습니다. 그 이유는 발급에 액세스 키 또는 Microsoft Entra 인증이 필요하기 때문입니다. 클라이언트의 애플리케이션과 비밀을 공유하는 것은 보안상의 이유로 권장되지 않습니다.
  • 클라이언트 애플리케이션은 클라이언트 인증이 가능한 신뢰할 수 있는 서비스 엔드포인트를 사용해야 합니다. 엔드포인트는 클라이언트 대신 액세스 토큰을 발급해야 합니다. 자세한 내용은 클라이언트 및 서버 아키텍처를 참조하세요.
  • 백업 저장소에 액세스 토큰을 캐시하는 경우 암호화를 사용하는 것이 좋습니다. 액세스 토큰은 중요한 데이터입니다. 보호되지 않는 경우 악의적인 활동에 사용될 수 있습니다. 액세스 토큰이 있는 사용자는 SDK를 시작하고 API에 액세스할 수 있습니다. 액세스 가능한 API는 액세스 토큰에 포함된 범위에 따라 제한됩니다.
  • 필요한 범위만 포함하는 액세스 토큰을 발급하는 것이 좋습니다.

다음 단계