다음을 통해 공유


인증

REST 호출을 수행할 때 제대로 인증하려면 몇 가지 단계가 필요합니다. Azure Communication Services SDK는 이 프로세스를 처리하지만 수동으로 요청하면 직접 처리해야 합니다.

인증 유형

Azure Communication Services에는 세 가지 유형의 인증이 있으며, 다양한 용도로 사용됩니다.

  • SMS, 네트워크 순회, 호출 자동화, ID 및 액세스 토큰 작업에 대한 액세스 키 인증 . 액세스 키 인증은 신뢰할 수 있는 서비스 환경에서 실행되는 애플리케이션에 적합합니다.
  • Azure RBAC 인증 Azure 역할을 할당하여 Azure RBAC를 활용하여 리소스에 대한 액세스를 제어합니다.
  • 채팅 및 통화에 대한 사용자 액세스 토큰 인증 . 사용자 액세스 토큰을 사용하면 클라이언트 애플리케이션이 Azure Communication Services에 대해 직접 인증할 수 있습니다. 이러한 토큰은 사용자가 만든 서버 쪽 토큰 프로비저닝 서비스에서 생성됩니다. 그런 다음 토큰을 사용하여 채팅 및 통화 클라이언트 라이브러리를 초기화하는 클라이언트 디바이스에 제공됩니다.

액세스 키 인증

액세스 키 인증은 최종 사용자 애플리케이션에서 요청이 이루어지지 않을 때 사용됩니다. 신뢰할 수 있는 서비스 환경 내에서 이러한 요청을 실행합니다.

이 인증 방법에서 요청은 클라이언트에서 생성된 HMAC(해시 기반 메시지 인증 코드)사용하여 서명됩니다.

시작하기 전에 다음이 있는지 확인합니다.

  • Azure Communication Services 액세스 키
  • Azure Communication Service 엔드포인트
  • 호출하는 URL 경로 및 HTTP 동사
  • HMAC, SHA256 해시를 생성하고 Base64 작업을 수행할 수 있는 개발 환경입니다.

이러한 항목이 있으면 요청에 계속 서명할 수 있습니다.

HTTP 요청 서명

  1. 다음 값을 사용할 수 있는지 확인합니다.

    • HTTP 요청 메서드(예: GET 또는 PUT)
    • RFC1123 표준에 따라 요청에 대한 UTC(협정 세계시) 타임스탬프
    • HTTP 요청 호스트(RFC2396 지정된 <authority> URI 구성 요소)
    • SHA256 알고리즘을 사용하여 HTTP 요청 본문 해시
    • HTTP 요청 경로(RFC2396 지정된 대로 ? 구성 요소에 의해 연결된 <path><query>)
    Verb=<http_method>
    Timestamp=<current_datetime>
    Host=<uri_authority>
    ContentHash=SHA256(<request_body>)
    URIPathAndQuery=<uri_path>?<uri_query>
    
  2. 다음과 같은 방식으로 값을 연결하여 서명할 문자열을 생성합니다.

    StringToSign=Verb + "\n"
    URIPathAndQuery + "\n"
    Timestamp + ";" + Host + ";" + ContentHash
    
  3. 이전 단계에서 만든 UTF-8로 인코딩된 문자열의 HMAC-256 서명을 생성합니다. 다음으로 결과를 Base64로 인코딩합니다. 또한 액세스 키를 Base64로 디코딩해야 합니다. 다음 형식을 사용합니다(의사 코드로 표시됨).

    Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
    
  4. 요청에 다음 헤더를 추가합니다.

    x-ms-date: <Timestamp>
    x-ms-content-sha256: <ContentHash>
    host: <URIPathAndQuery>   
    Authorization: "HMAC-SHA256 SignedHeaders=x-ms-date;host;x-ms-content-sha256&Signature=<Signature>"
    

요청을 받으면 서비스는 재생 공격을 비롯한 특정 보안 공격으로부터 보호하도록 서명 및 타임스탬프의 유효성을 검사합니다. 다양한 프로그래밍 언어로 HTTP 요청에 서명하는 방법을 알아보려면 HMAC 헤더 서명 자습서방문하세요.

Azure RBAC 인증

Azure 플랫폼은 리소스에 대한 액세스를 제어하기 위해 Azure RBAC(역할 기반 액세스)를 제공합니다. Azure RBAC 보안 주체는 Azure 리소스에 대한 액세스를 요청하는 사용자, 그룹, 서비스 주체 또는 관리 ID를 나타냅니다.

Microsoft Entra 인증은 다른 권한 부여 옵션보다 뛰어난 보안 및 사용 편의성을 제공합니다. 예를 들어 관리 ID를 사용하면 액세스 키 인증과 마찬가지로 코드 내에 계정 액세스 키를 저장하지 않아도 됩니다. 통신 서비스 응용 프로그램에서 액세스 키 인증을 계속 사용할 수 있지만 가능한 경우 Microsoft Entra ID로 이동하는 것이 좋습니다.

Azure RBAC에는 다양한 기본 제공 역할이 포함되어 있으며, 다양한 범위에서 할당할 수 있으며 사용자 고유의 사용자 지정 역할을 만들 수 있습니다. 여기에는 100개가 넘는 기본 제공 역할이 포함됩니다. 소유자, 기여자, 읽기 권한자, 역할 기반 액세스 제어 관리자 및 사용자 액세스 관리자의 다섯 가지 기본 Azure 역할이 있습니다. 이러한 역할에 대한 자세한 내용은 역할 기반 액세스 제어 자습서참조하세요.

ACS(Azure Communication Services)에서 지원하는 권한

ACS는 다양한 리소스에 대한 제어된 액세스를 허용하는 특정 권한(acs.read 및 acs.write)을 제공합니다.

  • acs.read 권한: 데이터를 검색하거나 볼 수 있는 기능을 부여합니다.
  • acs.write 권한: 동일한 리소스 유형 내에서 데이터를 수정하거나 만들 수 있습니다.

또한 ACS는 이메일 관련 권한을 지원합니다.

  • acs.email.read: 전자 메일 관련 서비스 데이터를 읽거나 액세스할 수 있습니다.
  • acs.email.write: 전자 메일 관련 서비스 데이터를 수정하거나 만들 수 있습니다.

이러한 권한은 ACS 리소스에 대한 세분화된 액세스 제어 및 보안을 보장하는 데 중요합니다.

추가 RBAC 토큰 가져오기

ACS용 토큰을 획득하려면 MSAL(Microsoft 인증 라이브러리)을 사용할 수 있습니다. 단계별 가이드는 다음과 같습니다.

  1. Azure AD에 애플리케이션 등록: 앱이 Azure AD에 등록되어 있는지 확인합니다.
  2. MSAL 설치: 플랫폼용 MSAL 라이브러리(예: .NET용 Microsoft.Identity.Client)를 설치합니다.
  3. MSAL 구성: 애플리케이션의 클라이언트 ID, 테넌트 ID 및 클라이언트 암호를 사용하여 MSAL을 설정합니다.
  4. 토큰 획득: MSAL을 사용하여 필요한 범위(https://communication.azure.com/.default)를 사용하여 토큰을 획득합니다.

자세한 지침 및 코드 예제는 공식 MSAL 설명서액세스 토큰 설명서참조하세요.

ACS 액세스 토큰을 발급하는 HTTP 요청 예제

요청:

POST https://my-resource.communication.azure.com/identities/{identity}/:issueAccessToken?api-version=2023-10-01
Authorization: Bearer <your-access-token>
Content-Type: application/json
{
  "scopes": [
    "chat",
    "voip"
  ]
}

응답:

{
  "token": "token",
  "expiresOn": "2023-10-10T21:39:39.3244584+00:00"
}
  • Azure 역할할당하는 단계입니다.
  • Azure Portal사용하여 Azure 역할 할당을 나열합니다.
  • 조건이다른 사용자에게 Azure 역할 할당 관리를 위임합니다.
  • Azure 사용자 지정 역할.

사용자 액세스 토큰 인증

사용자 액세스 토큰을 사용하면 클라이언트 애플리케이션이 특정 사용자 또는 ID로 Azure Communication Services에 대해 직접 인증할 수 있습니다.

사용자 액세스 토큰 생성/가져오기

사용자 액세스 토큰은 신뢰할 수 있는 환경 내에서 생성됩니다. Azure Communication Services ID SDK를 사용하여 생성하는 것이 가장 쉬운 방법입니다. 자세한 내용은사용자 액세스 토큰을 만들고 관리하는 참조하세요.

요청에 사용자 액세스 토큰 사용

적절한 사용자 액세스 토큰이 있으면 Azure Communication Services의 REST API에 대한 요청에 포함할 수 있습니다. 이렇게 하려면 전달자 HTTP 인증 체계 Authorization: Bearer <token>사용하여 Authorization 헤더 내에서 제공해야 합니다.

참고 항목

Azure Communication Services 인증에 대한 추가 정보는 다음을 검토할 수도 있습니다.

  • HTTP 요청서명합니다.
  • 개념 인증 설명서 - SDK를 사용하여 REST API에 대해 인증하는 방법에 대한 정보를 제공합니다.
  • 사용자 액세스 토큰 서비스 빌드 - Azure Functions를 사용하여 사용자 액세스 토큰을 생성하는 신뢰할 수 있는 인증 서비스를 만드는 방법을 보여 주는 Azure Communication Services 자습서입니다.