다음을 통해 공유


Microsoft Entra 애플리케이션을 사용하여 Azure SignalR Service 리소스에 대한 요청 권한 부여

Azure SignalR Service는 Microsoft Entra 애플리케이션의 요청을 권한 부여하기 위해 Microsoft Entra ID를 지원합니다.

이 문서에서는 Microsoft Entra 애플리케이션의 리소스에 대한 요청에 권한을 부여하도록 Azure SignalR Service 리소스 및 코드를 구성하는 방법을 보여 줍니다.

애플리케이션 등록

첫 번째 단계는 Microsoft Entra 애플리케이션을 등록하는 것입니다.

  1. Azure Portal에서 Microsoft Entra ID를 검색하여 선택합니다.

  2. 관리에서 앱 등록을 선택합니다.

  3. 새 등록을 선택합니다. 애플리케이션 등록 창이 열립니다.

    애플리케이션을 등록하기 위한 창의 스크린샷.

  4. 이름에 애플리케이션의 표시 이름을 입력합니다.

  5. 등록을 선택하여 등록을 확인합니다.

애플리케이션을 등록한 후 애플리케이션 개요 페이지에서 애플리케이션(클라이언트) ID디렉터리(테넌트) ID 값을 찾을 수 있습니다. 이러한 GUID는 다음 단계에서 유용할 수 있습니다.

등록된 애플리케이션에 대한 개요 정보의 스크린샷.

애플리케이션 등록에 대해 자세히 알아보려면 빠른 시작: Microsoft ID 플랫폼에 애플리케이션 등록을 참조하세요.

자격 증명 추가

인증서와 클라이언트 암호(문자열)를 모두 자격 증명으로 기밀 클라이언트 앱 등록에 추가할 수 있습니다.

클라이언트 암호

애플리케이션에서는 토큰을 요청할 때 ID를 증명하기 위해 클라이언트 암호가 필요합니다. 클라이언트 암호를 만들려면 다음 단계를 수행합니다.

  1. 관리에서 인증서 및 비밀을 선택합니다.

  2. 클라이언트 암호 탭에서 새 클라이언트 암호를 선택합니다.

    클라이언트 암호를 만드는 선택 항목의 스크린샷.

  3. 클라이언트 암호에 대한 설명을 입력하고 만료 시간을 선택합니다.

  4. 클라이언트 암호 값을 복사한 다음, 안전한 위치에 붙여넣습니다.

    참고 항목

    비밀은 한 번만 나타납니다.

인증서

클라이언트 암호를 만드는 대신 인증서를 업로드할 수 있습니다.

인증서를 업로드하기 위한 선택 항목의 스크린샷.

자격 증명 추가에 대한 자세한 내용은 자격 증명 추가를 참조하세요.

Azure Portal에서 역할 할당 추가

다음 단계에서는 Azure SignalR Service 리소스를 통해 서비스 주체(애플리케이션)에 SignalR 앱 서버 역할을 할당하는 방법을 설명합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

참고 항목

관리 그룹, 구독, 리소스 그룹 또는 단일 리소스를 비롯한 모든 범위에 역할을 할당할 수 있습니다. 범위에 대한 자세한 내용은 Azure RBAC의 범위 이해를 참조하세요.

  1. Azure Portal에서 Azure SignalR Service 리소스로 이동합니다.

  2. 액세스 제어(IAM) 를 선택합니다.

  3. 추가>역할 할당 추가를 선택합니다.

    역할 할당을 추가하기 위한 선택 영역 및 액세스 제어 페이지를 보여 주는 스크린샷.

  4. 역할 탭에서 SignalR 앱 서버를 선택합니다.

  5. 멤버 탭에서 사용자, 그룹 또는 서비스 주체를 선택한 다음, 멤버 선택을 선택합니다.

  6. 역할을 할당할 애플리케이션을 검색하고 선택합니다.

  7. 검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.

Important

Azure 역할 할당이 전파되는 데 최대 30분이 걸릴 수 있습니다.

Azure 역할을 할당하고 관리하는 방법에 대해 자세히 알아보려면 다음 문서를 참조하세요.

앱 구성

앱 서버

모범 사례는 환경 변수에서 ID 및 자격 증명을 구성하는 것입니다.

변수 설명
AZURE_TENANT_ID Microsoft Entra 테넌트 ID입니다.
AZURE_CLIENT_ID 테넌트에 있는 앱 등록의 클라이언트(애플리케이션) ID.
AZURE_CLIENT_SECRET 앱 등록을 위해 생성된 클라이언트 암호.
AZURE_CLIENT_CERTIFICATE_PATH 앱 등록을 인증할 수 있는 PEM 또는 PFX 형식의 인증서 및 프라이빗 키 쌍에 대한 경로
AZURE_USERNAME Microsoft Entra 사용자 계정의 UPN(사용자 계정 이름)이라고도 하는 사용자 이름입니다.
AZURE_PASSWORD Microsoft Entra 사용자 계정의 암호입니다. 다단계 인증이 사용하도록 설정된 계정에는 암호가 지원되지 않습니다.

DefaultAzureCredential 또는 EnvironmentCredential을 사용하여 Azure SignalR Service 엔드포인트를 구성할 수 있습니다. DefaultAzureCredential의 코드는 다음과 같습니다.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
    };
});

EnvironmentCredential의 코드는 다음과 같습니다.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
    };
});

DefaultAzureCredential의 작동 방식을 알아보려면 DefaultAzureCredential 클래스를 참조하세요.

엔드포인트별 자격 증명 사용

조직에서는 엔드포인트마다 다른 자격 증명을 사용할 수 있습니다.

이 시나리오에서는 ClientSecretCredential 또는 ClientCertificateCredential을 사용할 수 있습니다.

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");

    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});

Azure Functions의 Azure SignalR Service 바인딩

Azure Functions의 Azure SignalR Service 바인딩은 포털의 애플리케이션 설정 또는 로컬로 local.settings.json을 사용하여 Azure SignalR Service 리소스에 액세스하도록 Microsoft Entra 애플리케이션 ID를 구성합니다.

먼저 Azure SignalR Service의 서비스 URI를 지정해야 합니다. 서비스 URI의 키는 serviceUri입니다. 연결 이름 접두사(기본값은 AzureSignalRConnectionString)와 구분 기호로 시작됩니다. 구분 기호는 Azure Portal에서는 밑줄(__)이고, local.settings.json 파일에서는 콜론(:)입니다. 바인딩 속성 ConnectionStringSetting을 사용하여 연결 이름을 사용자 지정할 수 있습니다. 계속 읽어 샘플을 찾습니다.

그런 다음 미리 정의된 환경 변수 또는 SignalR 지정 변수에서 Microsoft Entra 애플리케이션 ID를 구성할지 여부를 선택합니다.

미리 정의된 환경 변수에서 ID 구성

미리 정의된 환경 변수 목록은 환경 변수를 참조하세요. 여러 서비스가 있는 경우 서비스별로 ID를 구성할 필요가 없도록 동일한 애플리케이션 ID를 사용하는 것이 좋습니다. 다른 서비스에서도 해당 서비스의 설정에 따라 이러한 환경 변수를 사용할 수 있습니다.

예를 들어, 클라이언트 암호 자격 증명을 사용하려면 local.settings.json 파일에서 다음과 같이 ID를 구성합니다.

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "AZURE_CLIENT_ID": "...",
    "AZURE_CLIENT_SECRET": "...",
    "AZURE_TENANT_ID": "..."
  }
}

Azure Portal에서 다음과 같이 설정을 추가합니다.

 <CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...

SignalR 지정 변수에서 ID 구성

SignalR 지정 변수는 serviceUri 키와 동일한 키 접두사를 공유합니다. 사용할 수 있는 변수 목록은 다음과 같습니다.

  • clientId
  • clientSecret
  • tenantId

다음은 local.settings.json 파일에서 클라이언트 암호 자격 증명을 사용하기 위한 샘플입니다.

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "<CONNECTION_NAME_PREFIX>:clientId": "...",
    "<CONNECTION_NAME_PREFIX>:clientSecret": "...",
    "<CONNECTION_NAME_PREFIX>:tenantId": "..."
  }
}

Azure Portal에서 다음과 같이 설정을 추가합니다.

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...

다음 단계

다음 관련 문서를 참조하세요.