다음을 통해 공유


Azure Function 통합

소개

이 자습서에서는 사용자 관련 정보를 수신하도록 Azure Function을 설정하는 방법에 대한 자세한 참고 자료를 제공합니다. Azure Function을 설정하는 것이 좋습니다. Contoso 앱에서 애플리케이션 매개 변수(예: 사용자 ID 및 사용자 토큰)의 하드 코딩을 방지하는 데 도움이 됩니다. 이 정보는 극비입니다. 더 중요한 점은 백 엔드에서 사용자 토큰을 주기적으로 새로 고친다는 것입니다. 사용자 ID 및 토큰 조합을 하드 코딩하려면 새로 고칠 때마다 값을 편집해야 합니다.

필수 조건

시작하기 전에 다음을 확인해야 합니다.

  • 활성 구독이 있는 Azure 계정을 만듭니다. 자세한 내용은 체험 계정 만들기를 참조하세요.
  • Visual Studio Code를 설치합니다.

함수 설정

  1. Visual Studio Code에 Azure Function 확장을 설치합니다. Visual Studio Code의 플러그인 브라우저에서 설치하거나, 이 링크를 따라 설치할 수 있습니다.
  2. 이 링크를 따라 로컬 Azure Function 앱을 설정합니다. JavaScript에서 HTTP 트리거 템플릿을 사용하여 로컬 함수를 만들어야 합니다.
  3. Azure Communication Services 라이브러리를 설치합니다. ID 라이브러리를 이용하여 사용자 액세스 토큰을 생성합니다. 로컬 Azure Function 앱 디렉터리에서 npm install 명령을 실행하여 JavaScript용 Azure Communication Services ID SDK를 설치합니다.
    npm install @azure/communication-identity --save
  1. 아래 코드와 같이 표시되도록 index.js 파일을 수정합니다.
    const { CommunicationIdentityClient } = require('@azure/communication-identity');
    const connectionString = '<your_connection_string>'
    const acsEndpoint = "<your_ACS_endpoint>"
    
    module.exports = async function (context, req) {
        let tokenClient = new CommunicationIdentityClient(connectionString);
    
        const userIDHolder = await tokenClient.createUser();
        const userId = userIDHolder.communicationUserId
    
        const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
    
        context.res = {
            body: {
                acsEndpoint,
                userId,
                userToken
            }
        };
    }

위의 코드에 대한 설명: 첫 번째 줄은 CommunicationIdentityClient에 대한 인터페이스를 가져옵니다. 두 번째 줄의 연결 문자열은 Azure Portal의 Azure Communication Services 리소스에서 찾을 수 있습니다. ACSEndpoint는 만들어진 Azure Communication Services 리소스의 URL입니다.

  1. Visual Studio Code의 로컬 Azure Function 폴더를 엽니다. index.js를 열고 로컬 Azure Function을 실행합니다. 로컬 Azure Function 엔드포인트가 만들어지고 터미널에 인쇄됩니다. 인쇄된 메시지는 다음과 유사합니다.
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1

브라우저에서 링크를 엽니다. 결과는 이 예제와 유사합니다.

    {
      "acsEndpoint": "<Azure Function endpoint>",
      "userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
      "userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
    }
  1. 클라우드에 로컬 함수를 배포합니다. 자세한 내용은 이 설명서에서 확인할 수 있습니다.

  2. 배포된 Azure Function을 테스트합니다. 먼저, Azure Portal에서 Azure Function을 찾습니다. 그런 다음, '함수 URL 가져오기' 단추를 사용하여 Azure Function 엔드포인트를 가져옵니다. 표시되는 결과는 5단계에 표시된 결과와 유사해야 합니다. Azure Function 엔드포인트는 앱에서 애플리케이션 매개 변수를 초기화하는 데 사용됩니다.

  3. 대상 Azure 함수 리소스를 호출하고 반환된 JSON 개체에서 Azure Communication Services 엔드포인트, 사용자 ID 및 사용자 토큰을 가져오는 데 사용되는 UserTokenClient를 구현합니다. 사용법은 샘플 앱을 참조하세요.

문제 해결 가이드

  1. Azure Function 확장이 로컬 함수를 Azure 클라우드에 배포하지 못한 경우, Visual Studio Code 버전과 사용 중인 Azure Function 확장에 버그가 있기 때문일 수 있습니다. 이 버전 조합은 Visual Studio Code 버전 1.68.1 및 Azure Function 확장 버전 1.2.1에서 작동할 수 있는지 테스트되었습니다.
  2. 애플리케이션 상수를 초기화하는 위치는 복잡하지만 중요합니다. 채팅 Android 빠른 시작을 한 번 더 확인합니다. 좀 더 구체적으로 말하면 '애플리케이션 상수 설정' 섹션의 강조 표시를 사용하고, 사용 중인 버전의 샘플 앱과 비교합니다.

(선택 사항) Azure Function 엔드포인트 보안

데모를 위해 이 샘플은 기본적으로 공개적으로 액세스할 수 있는 엔드포인트를 사용하여 Azure Communication Services 토큰을 가져옵니다. 프로덕션 시나리오의 경우 한 가지 옵션은 자체 보안 엔드포인트를 사용하여 자체 토큰을 프로비전하는 것입니다.

추가 구성을 통해 이 샘플은 Microsoft Entra 보호 엔드포인트에 대한 연결을 지원하므로 앱이 Azure Communication Services 토큰을 가져오는 데 사용자 로그가 필요합니다. 사용자는 앱에 액세스하려면 Microsoft 계정으로 로그인해야 합니다. 이 설정은 사용자가 로그인해야 하는 동안 보안 수준을 높여 줍니다. 사용 사례에 따라 사용하도록 설정할지를 결정합니다.

현재 샘플 코드에서는 Microsoft Entra ID를 지원하지 않습니다. 아래 링크를 따라 앱 및 Azure Function에서 사용하도록 설정합니다.

Microsoft Entra ID로 앱을 등록합니다(Android 플랫폼 설정 사용).

Microsoft Entra ID 로그인을 사용하도록 App Service 또는 Azure Functions 앱을 구성합니다.