이 기사에서는 Azure Functions를 사용하여 신뢰할 수 있는 사용자 액세스 서비스를 구축하는 방법을 설명합니다.
중요한
이 자습서에서 만든 엔드포인트는 안전하지 않습니다. Azure Functions 보안 문서에서 보안 세부 사항을 반드시 읽어보세요. 엔드포인트에 보안을 추가하여 악의적인 행위자들이 토큰을 프로비저닝하지 못하게 해야 합니다.
이 문서에서는 다음 방법을 설명합니다.
- 함수를 설정하세요.
- 액세스 토큰 생성
- 기능을 테스트하세요.
- 함수를 배포하고 실행하십시오.
코드 다운로드
이 퀵스타트의 최종 코드는 GitHub에서 찾을 수 있습니다.
Prerequisites
- 활성 구독이 있는 Azure 계정. Azure 구독이 없으면, 무료로 계정을 생성할 수 있습니다.
- 지원되는 플랫폼 중 하나인 Visual Studio Code.
- Node.js, 활성 LTS 및 유지 관리 LTS 버전(10.14.1 권장).
node --version
명령을 사용하여 버전을 확인하십시오. - The Azure Functions extension for Visual Studio Code.
- 활성화된 통신 서비스 리소스 및 연결 문자열. 추가 정보를 보려면 빠른 시작: Communication Services 리소스 생성 및 관리를 참조하십시오.
Overview
이 튜토리얼에서는 신뢰할 수 있는 토큰 제공 서비스로 사용되는 함수 앱을 만듭니다. 귀하의 토큰 프로비저닝 서비스를 시작하는 데 이 튜토리얼을 사용할 수 있습니다.
이 서비스는 사용자들이 통신 서비스에 인증받는 역할을 담당합니다. 귀하의 커뮤니케이션 서비스 애플리케이션 사용자는 채팅 쓰레드 및 VoIP 통화에 참여하기 위해 액세스 토큰이 필요합니다. 그 기능은 사용자와 커뮤니케이션 서비스 간의 신뢰할 수 있는 중개자로서 작동합니다. 리소스 연결 문자열을 사용자에게 노출하지 않고 액세스 토큰을 프로비저닝할 수 있습니다.
추가 정보는 클라이언트-서버 아키텍처 및 인증 및 인가 개념 문서를 참조하십시오.
함수를 설정하세요
이 섹션은 함수를 설정하는 절차를 설명합니다.
Azure Functions 설정
우선 함수의 기본 구조를 설정합시다. 설치를 위한 단계별 지침은 Quickstart: Create a C# function in Azure by using Visual Studio Code를 참조하세요.
이 함수를 사용하려면 다음 구성이 필요합니다.
- Language: JavaScript
- 템플릿: HTTP 트리거
- Authorization Level: 익명 (다른 인증 모델을 선호하신다면 나중에 변경할 수 있습니다)
- Function Name: 사용자 정의
빠른 시작: Visual Studio Code를 사용하여 Azure에서 C# 함수 만들기의 지침에 따라 이전 구성을 수행한 후에는 함수 자체가 포함된 index.js
파일이 있는 Visual Studio Code에 함수에 대한 프로젝트가 있어야 합니다. 파일 내부의 코드는 다음과 같습니다.
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
const responseMessage = name
? "Hello, " + name + ". This HTTP triggered function executed successfully."
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
}
다음 단계는 커뮤니케이션 서비스 라이브러리를 설치하는 것입니다.
통신 서비스 라이브러리 설치
Identity
라이브러리를 사용하여 사용자 액세스 토큰을 생성합니다.
JavaScript용 Communication Services Identity SDK를 설치하려면 npm install
명령어를 사용하세요.
npm install @azure/communication-identity --save
--save
옵션은 라이브러리를 package.json 파일의 종속성으로 나열합니다.
index.js
파일의 상단에서 CommunicationIdentityClient
매개변수에 대한 인터페이스를 가져옵니다.
const { CommunicationIdentityClient } = require('@azure/communication-identity');
엑세스 토큰 생성
함수가 사용자 액세스 토큰을 생성할 수 있도록 하려면 먼저 Communication Services 리소스에 대한 연결 문자열을 사용해야 합니다.
연결 문자열을 검색하는 방법에 대한 자세한 내용은 빠른 시작: Communication Services 리소스 만들기 및 관리를 참조하세요.
const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'
다음으로, 원래 함수를 수정하여 사용자 액세스 토큰을 생성합니다.
사용자 액세스 토큰을 생성하려면 createUser
메서드를 사용하여 사용자를 만듭니다. 사용자가 만들어진 후 getToken
메서드를 사용하여 해당 사용자에 대한 토큰을 생성하고, 이 함수는 이를 반환합니다.
이 예제에서는 토큰 범위를 voip
로 설정합니다. 귀하의 애플리케이션에는 다른 범위가 필요할 수 있습니다. 범위에 대해 더 알아보려면 액세스 토큰 생성 및 관리를 참조하세요.
module.exports = async function (context, req) {
let tokenClient = new CommunicationIdentityClient(connectionString);
const user = await tokenClient.createUser();
const userToken = await tokenClient.getToken(user, ["voip"]);
context.res = {
body: userToken
};
}
기존의 Communication Services CommunicationUser
매개변수에 대해, 생성 단계를 건너뛰고 액세스 토큰을 생성할 수 있습니다. 자세한 내용은 액세스 토큰 생성 및 관리를 참조하세요.
기능을 테스트하세요
F5
를 사용하여 로컬에서 함수를 실행합니다. 이 작업은 함수를 로컬에서 초기화하고 http://localhost:7071/api/FUNCTION_NAME
을 통해 접근 가능하게 합니다. 추가적인 지역 실행 정보는 Quickstart: Create a C# function in Azure by using Visual Studio Code를 참조하세요.
브라우저에서 URL을 열면 통신 사용자 ID, 토큰, 토큰 만료일이 포함된 응답 본문이 표시됩니다.
함수를 Azure에 배포하십시오
함수 배포를 위해, Visual Studio Code를 사용하여 Azure에서 C# 함수 만들기 빠른 시작의 단계별 지침을 따르세요.
요약하자면, 다음이 필요합니다.
- Visual Studio에서 Azure에 로그인합니다.
- 프로젝트를 Azure 계정에 게시합니다. 여기서 기존 구독을 선택해야 합니다.
- Visual Studio 마법사 또는 기존 리소스를 사용하여 새 함수 리소스를 만드세요. 새 리소스의 경우 원하는 지역, 런타임 및 고유 식별자로 구성해야 합니다.
- 배포가 완료될 때까지 기다립니다.
- 함수를 실행합니다.
함수 실행
URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>
를 사용하여 함수를 실행하세요.
URL을 찾으려면 Visual Studio Code에서 기능을 마우스 오른쪽 버튼으로 클릭하고 기능 URL을 복사하세요.
함수를 실행하는 방법에 대한 자세한 내용은 빠른 시작: Visual Studio Code를 사용하여 Azure에서 C# 함수 만들기를 참조하세요.
엔드포인트 보안 설정
사용자에게 액세스 토큰을 제공하는 신뢰할 수 있는 서비스를 설정하는 일환으로, 그 엔드포인트의 보안을 고려해야 하며, 아무 악의적인 행위자도 여러분의 서비스에 대해 임의로 토큰을 생성할 수 없도록 해야 합니다. Azure Functions는 다양한 유형의 인증 정책을 사용하여 엔드포인트를 보호할 수 있는 내장 보안 기능을 제공합니다. 자세한 정보는 Azure Functions 보안을 참조하세요.
자원을 정리하세요
Azure Communication Services 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다. 통신 서비스 리소스를 정리하는 방법과 Azure Functions 리소스를 정리하는 방법에 대해 더 알아볼 수 있습니다.