다음을 통해 공유


Microsoft Entra 인증을 사용하여 Visual Studio Code에서 Azure App Service에 대한 보안 모델 컨텍스트 프로토콜 호출

이 문서에서는 Microsoft Entra 인증을 사용하여 Azure App Service에서 호스트되는 MCP(모델 컨텍스트 프로토콜) 서버를 보호하는 방법을 보여 줍니다. 인증을 사용하도록 설정하면 Microsoft Entra로 인증된 사용자만 Visual Studio Code의 Copilot 에이전트 모드를 통해 MCP 서버에 액세스할 수 있습니다.

다른 인증 방법 및 일반 MCP 서버 보안 개념은 Azure App Service에서 모델 컨텍스트 프로토콜 서버 보안을 참조하세요.

필수 조건

MCP 서버를 호스트하는 App Service 앱입니다. 만들어야 하는 경우 다음 자습서 중 하나를 참조하세요.

Microsoft Entra 인증 사용

  1. Azure Portal에서 App Service 앱으로 이동합니다.

  2. 왼쪽 메뉴에서 설정>인증을 선택한 다음 ID 공급자 추가를 선택합니다.

  3. ID 공급자 추가 페이지에서 MicrosoftID 공급자로 선택합니다.

  4. App Service 인증 설정에서 클라이언트 비밀 만료의 경우 만료 기간(예: 6개월)을 선택합니다.

  5. 다른 모든 기본값을 적용하고 추가 를 선택하여 ID 공급자를 만듭니다.

    이렇게 하면 클라이언트 암호를 사용하여 Microsoft Entra ID에 새 앱 등록이 만들어지고 인증에 사용하도록 App Service 앱이 구성됩니다.

App Service 인증에서 Visual Studio Code 권한 부여

인증을 사용하도록 설정한 후에는 MCP 서버에 액세스하도록 Visual Studio Code에 권한을 부여해야 합니다.

  1. App Service 앱의 인증 페이지의 ID 공급자 아래에서 만든 Microsoft 공급자 옆에 있는 편집 (연필 아이콘)을 선택합니다.

  2. ID 공급자 편집 페이지의 추가 검사>클라이언트 애플리케이션 요구 사항에서 특정 클라이언트 애플리케이션의 요청 허용을 선택합니다.

  3. 연필 위젯을 선택하여 허용되는 애플리케이션을 편집합니다.

  4. 허용된 클라이언트 애플리케이션 필드에서 Visual Studio Code 클라이언트 IDaebc6443-996d-45c2-90f0-388ff96faa56를 추가합니다.

  5. 확인을 선택한 다음 저장을 선택합니다.

앱 등록에서 Visual Studio Code 권한 부여

다음으로, Visual Studio Code에 API를 노출하도록 앱 등록을 구성해야 합니다.

  1. App Service 앱의 인증 페이지로 돌아갑니다.

  2. ID 공급자 열에서 Microsoft 공급자 를 선택하여 앱 등록 페이지를 엽니다.

  3. 앱 등록 페이지의 왼쪽 메뉴에서API 노출> 선택합니다.

  4. 권한 있는 클라이언트 애플리케이션에서 클라이언트 애플리케이션 추가를 선택합니다.

  5. 클라이언트 ID 필드에 Visual Studio Code 클라이언트 IDaebc6443-996d-45c2-90f0-388ff96faa56를 입력합니다.

  6. user_impersonation 범위 옆의 확인란을 선택하여 이 범위에 권한을 부여합니다.

  7. 애플리케이션 추가를 선택합니다.

  8. 이 API에서 정의한 범위에서 전체 범위 값을 찾아 복사합니다. api://<app-registration-app-id>/user_impersonation 형식입니다.

    다음 섹션에서 이 범위 값이 필요합니다.

권한 부여 범위를 설정하여 보호된 리소스 메타데이터 사용

MCP 서버 권한 부여를 사용하도록 설정하려면 앱 설정에서 권한 부여 범위를 설정하여 보호된 PRM(리소스 메타데이터)을 구성해야 합니다. 이를 통해 MCP 클라이언트는 엔드포인트를 통해 인증 요구 사항을 검색할 수 /.well-known/oauth-protected-resource 있습니다.

  1. Azure Portal에서 App Service 앱 페이지로 돌아갑니다.

  2. 왼쪽 메뉴에서 설정>환경 변수를 선택합니다.

  3. 추가를 선택하여 새 애플리케이션 설정을 만듭니다.

  4. 이름WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES를 입력합니다.

  5. 의 경우 앱 등록api://<app-registration-app-id>/user_impersonation에서 복사한 범위를 붙여넣습니다.

  6. 적용을 선택한 다음 적용을 다시 선택하여 앱을 확인하고 다시 시작합니다.

    이 설정은 MCP 서버 권한 부여에 필요한 범위를 포함하도록 PRM을 구성합니다.

Visual Studio Code에서 연결

이제 Visual Studio Code에서 보안 MCP 서버에 연결할 수 있습니다.

  1. 로컬 컴퓨터에서 Visual Studio Code를 엽니다.

  2. MCP 구성 파일(mcp.json)을 열거나 만듭니다. 작업 영역 범위 MCP 구성의 경우 작업 영역의 .vscode 디렉터리에 만듭니다.

  3. MCP 서버 구성을 추가합니다.

    {
      "servers": {
        "my-app-service-mcp": {
          "type": "http",
          "url": "https://<your-app-url>.azurewebsites.net/api/mcp"
        }
      }
    }
    

    <your-app-url>을 실제 App Service 앱 URL로 대체합니다. Azure Portal의 개요 페이지에서 앱의 기본 도메인을 찾을 수 있습니다. 이 예제에서는 경로가 /api/mcp있지만 실제 경로는 MCP 코드에 따라 달라집니다.

  4. Visual Studio Code에서 명령 팔레트(Ctrl+Shift+P 또는 Cmd+Shift+P macOS)를 엽니다.

  5. MCP 입력: 서버를 나열하고 Enter 키를 누릅니다.

  6. 목록에서 MCP 서버를 선택하고 시작 서버를 선택합니다.

  7. Visual Studio Code는 Microsoft Entra ID로 로그인하라는 메시지를 자동으로 표시합니다. 인증 프롬프트를 따릅니다.

    MCP 확장은 구성한 범위를 사용하여 OAuth 흐름을 처리하고 Visual Studio Code는 MCP 서버를 호출하는 데 필요한 액세스 토큰을 가져옵니다.

    팁 (조언)

    예기치 않은 인증 프롬프트가 표시되거나 오류가 발생하는 경우 문제 해결을 참조하세요.

  8. 인증되면 MCP 서버가 연결되고 GitHub Copilot 채팅 에이전트 모드 또는 다른 MCP 클라이언트에서 사용할 준비가 됩니다.

연결 테스트

MCP 서버가 제대로 보호되고 액세스할 수 있는지 확인하려면 다음을 수행합니다.

  1. Visual Studio Code(Ctrl+Alt+I 또는 Cmd+Option+I macOS)에서 GitHub Copilot 채팅을 엽니다.

  2. MCP 서버에서 기능을 사용해 보세요. 예를 들어 Todos 샘플을 사용하는 경우:

    Show me all my tasks
    
  3. GitHub Copilot는 MCP 서버를 성공적으로 호출해야 하며 채팅에 결과가 표시됩니다. 문제가 발생하면 문제 해결을 참조하세요.

Troubleshooting

Visual Studio Code에서 MCP 서버를 시작할 때 표시되는 인증 프롬프트는 구성이 올바른지 여부를 나타냅니다.

  • 올바른 구성: Visual Studio Code에서 Microsoft로 인증하라는 메시지를 표시합니다. 즉, 보호된 PRM(리소스 메타데이터)이 제대로 구성되고 Visual Studio Code가 엔드포인트에서 /.well-known/oauth-protected-resource 권한 부여 서버 및 범위를 성공적으로 검색했습니다.

  • 잘못된 구성: Visual Studio Code는 App Service 앱의 /authorize 엔드포인트(예: https://<your-app-url>.azurewebsites.net/authorize)로 인증하라는 메시지를 표시합니다. 즉, PRM이 제대로 구성되지 않았습니다. Visual Studio Code는 권한 부여 서버 및 권한 부여 범위를 찾을 수 없으므로 앱의 URL을 존재하지 않는 권한 부여 엔드포인트로 사용하는 것으로 돌아갑니다.

잘못된 인증 프롬프트가 표시되면 다음을 확인합니다.

  • 앱 설정 WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES 이 전체 범위 값 api://<app-registration-app-id>/user_impersonation으로 올바르게 구성됩니다.
  • 앱 설정을 추가한 후 App Service 앱이 완전히 다시 시작되었습니다. 다시 시작을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

로그인 후 인증 오류가 표시되면 다음을 확인합니다.

  • Visual Studio Code 클라이언트 ID(aebc6443-996d-45c2-90f0-388ff96faa56)는 App Service 인증 구성(허용된 클라이언트 애플리케이션) 및 앱 등록( API 노출의 권한 있는 클라이언트 애플리케이션)에 모두 추가됩니다.
  • 앱 설정의 범위 값은 앱 등록에 정의된 것과 정확히 일치합니다.