다음을 통해 공유


사용자 로그인을 통해 웹 애플리케이션 보호

다음 가이드에서는 웹 서버에서 호스트되고, 여러 비즈니스 시나리오를 유지 관리하고, 웹 서버에 배포되는 애플리케이션에 대해 설명합니다. 애플리케이션은 Microsoft Entra 사용자에게만 보호된 리소스를 제공해야 합니다. 시나리오의 목표는 웹 애플리케이션이 Microsoft Entra ID에 인증하고 사용자를 대신하여 Azure Maps REST API를 호출할 수 있도록 하는 것입니다.

Azure Portal에서 Azure Maps 계정 인증 세부 정보를 보려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. Azure Portal 메뉴로 이동합니다. 모든 리소스를 선택한 다음, Azure Maps 계정을 선택합니다.

  3. 왼쪽 창의 설정에서 인증을 선택합니다.

    Azure Portal의 Azure Maps 인증 옵션을 보여 주는 스크린샷.

Azure Maps 계정을 만들 때 세 가지 값이 생성됩니다. 해당 값은 Azure Maps의 두 가지 인증 유형을 지원하는 데 사용됩니다.

  • Microsoft Entra 인증: Client ID는 REST API 요청에 사용되는 계정을 나타냅니다. Client ID 값은 애플리케이션 구성에 저장되며, Microsoft Entra 인증을 사용하는 Azure Maps HTTP 요청을 수행하기 전에 검색해야 합니다.
  • 공유 키 인증: Primary KeySecondary Key가 공유 키 인증의 구독 키로 사용됩니다. 공유 키 인증은 각 요청과 함께 Azure Maps 계정에서 생성된 키를 Azure Maps에 전달합니다. 키를 정기적으로 다시 생성하는 것이 좋습니다. 다시 생성하는 동안 현재 연결을 유지하기 위해 두 개의 키가 제공됩니다. 하나의 키를 다시 생성하는 동안 다른 키를 사용할 수 있습니다. 키를 다시 생성하는 경우 이 계정에 액세스하는 모든 애플리케이션이 새 키를 사용하도록 업데이트해야 합니다. 자세한 내용은 Azure Maps 인증을 참조하세요.

Microsoft Entra ID에서 애플리케이션 등록 만들기

사용자가 로그인할 수 있도록 Microsoft Entra ID에 웹 애플리케이션을 만들어야 합니다. 웹 애플리케이션은 Azure Maps REST API에 대한 사용자 액세스를 위임합니다.

  1. Azure Portal의 Azure 서비스 목록에서 Microsoft Entra ID>앱 등록>새 등록을 선택합니다.

    Microsoft Entra ID의 애플리케이션 등록을 보여 주는 스크린샷

  2. 이름을 입력하고 지원 계정 유형을 선택한 다음, Microsoft Entra ID가 토큰을 발급하는 URL과 맵 컨트롤이 호스트되는 URL을 나타내는 리디렉션 URI를 제공합니다. 자세한 내용은 사용자를 Microsoft Entra ID 시나리오: 사용자를 로그인하는 웹앱을 참조하세요. Microsoft Entra 시나리오의 제공된 단계를 완료합니다.

  3. 애플리케이션 등록이 완료되면 애플리케이션 로그인이 사용자에 대해 작동하는지 확인합니다. 로그인이 작동하면 Azure Maps REST API에 대한 위임된 액세스 권한을 애플리케이션에 부여할 수 있습니다.

  4. 위임된 API 권한을 Azure Maps에 할당하려면 애플리케이션으로 이동하여 API 권한>권한 추가를 선택합니다. 내 조직에서 사용하는 API 목록에서 Azure Maps를 선택합니다.

    앱 API 권한 추가를 보여 주는 스크린샷

  5. Azure Maps에 액세스 옆의 확인란을 선택한 다음 권한 추가를 선택합니다.

    앱 API 사용 권한 선택을 보여 주는 스크린샷

  6. 앱 등록을 애플리케이션 비밀로 구성하여 Azure Maps REST API를 호출하도록 웹 애플리케이션을 설정합니다. 자세한 단계는 웹 API를 호출하는 웹앱: 앱 등록을 참조하세요. 사용자를 대신하여 Microsoft Entra에서 인증을 받으려면 비밀이 필요합니다. 앱 등록 인증서 또는 비밀은 웹 애플리케이션이 Microsoft Entra ID에서 인증을 받기 위해 검색할 수 있는 보안 저장소에 저장되어야 합니다.

    • 애플리케이션에 이미 Microsoft Entra 앱 등록 및 비밀이 구성된 경우 이 단계를 건너뛸 수 있습니다.

    애플리케이션이 Azure 환경에서 호스트되는 경우 Azure Key Vault 비밀 또는 인증서에 액세스하기 위한 액세스 토큰을 획득하여 Azure 리소스용 관리 ID 및 Azure Key Vault 인스턴스를 통해 비밀에 액세스하는 것이 좋습니다. Azure Key Vault에 연결하여 비밀을 검색하려면 관리 ID를 통해 연결 자습서를 참조하세요.

  7. 토큰에 액세스하도록 Azure Maps Web SDK에 대한 보안 토큰 엔드포인트를 구현합니다.

    • 샘플 토큰 컨트롤러는 Azure Maps Microsoft Entra ID 샘플을 참조하세요.
    • AspNetCore가 아닌 구현이나 기타의 경우에는 Microsoft Entra ID 설명서에서 앱용 토큰 획득 설명서를 참조하세요.
    • 보안 토큰 엔드포인트는 인증되고 권한이 부여된 사용자가 Azure Maps REST API를 호출하기 위한 액세스 토큰을 반환해야 합니다.
  8. 사용자 또는 그룹에 대해 Azure RBAC(Azure 역할 기반 액세스 제어)를 구성하려면 사용자에 대한 역할 기반 액세스 권한 부여를 참조하세요.

  9. 보안 토큰 엔드포인트에 액세스하도록 Azure Maps Web SDK로 웹 애플리케이션 페이지를 구성합니다.

var map = new atlas.Map("map", {
        center: [-122.33, 47.64],
        zoom: 12,
        language: "en-US",
        authOptions: {
            authType: "anonymous",
            clientId: "<insert>",  // azure map account client id
            getToken: function (resolve, reject, map) {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "/api/token", true); // the url path maps to the token endpoint.
                xhttp.onreadystatechange = function () {
                    if (this.readyState === 4 && this.status === 200) {
                        resolve(this.responseText);
                    } else if (this.status !== 200) {
                        reject(this.responseText);
                    }
                };

                xhttp.send();
            }
        }
    });
    map.events.add("tokenacquired", function () {
        console.log("token acquired");
    });
    map.events.add("error", function (err) {
        console.log(JSON.stringify(err.error));
    });

사용자에게 Azure Maps에 대한 역할 기반 액세스 권한 부여

Microsoft Entra 그룹 또는 보안 주체를 하나 이상의 Azure Maps 역할 정의에 할당하여 Azure RBAC(Azure 역할 기반 액세스 제어)를 부여할 수 있습니다.

Azure Maps에 대한 사용 가능한 Azure 역할 정의를 보려면 기본 제공 Azure Maps 역할 정의 보기를 참조하세요.

만든 관리 ID 또는 서비스 주체에 사용 가능한 Azure Maps 역할을 할당하는 방법에 대한 자세한 단계는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

Azure Maps 앱 및 대규모 사용자의 리소스 액세스를 효율적으로 관리하려면 Microsoft Entra 그룹을 참조하세요.

Important

사용자가 애플리케이션에 인증할 수 있으려면 먼저 Microsoft Entra ID에서 사용자를 만들어야 합니다. 자세한 내용은 Microsoft Entra ID를 사용한 사용자 추가 및 삭제를 참조하세요.

사용자를 위해 대규모 디렉터리를 효과적으로 관리하는 방법에 대해 알아보려면 Microsoft Entra ID를 참조하세요.

Warning

Azure Maps 기본 제공 역할 정의는 많은 Azure Maps REST API에 강력한 액세스 권한을 부여합니다. API 액세스를 최소한으로 제한하려면 사용자 지정 역할 정의 만들기를 참조하고 시스템 할당 ID를 사용자 지정 역할 정의에 할당합니다. 이렇게 하면 애플리케이션에서 Azure Maps에 액세스하는 데 필요한 최소 권한을 사용할 수 있습니다.

다음 단계

웹 애플리케이션 시나리오에 대한 추가 해석:

Azure Maps 계정에 대한 API 사용 현황 메트릭을 확인하는 방법을 알아봅니다.

Microsoft Entra ID를 Azure Maps와 통합하는 방법을 보여 주는 샘플을 살펴봅니다.