비즈니스 강화하기: 액세스 제어와 함께 AI 도구를 기존 서비스에 연결
개인 액세스 토큰과 모델 컨텍스트 프로토콜(MCP)을 사용하여 AI 도구를 기존 서비스에 안전하게 연결하여 비즈니스를 강화하는 방법을 배우세요. 완전한 소스 코드와 실용적인 예재가 포함되어 있습니다.
개인 액세스 토큰과 모델 컨텍스트 프로토콜(MCP)을 사용하여 AI 도구를 기존 서비스에 안전하게 연결하여 비즈니스를 강화하는 방법을 배우세요. 완전한 소스 코드와 실용적인 예재가 포함되어 있습니다.
액세스 제어를 통해 AI 도구를 기존 서비스에 연결하는 가이드에 오신 것을 환영합니다!
우리는 당신의 기존 서비스를 AI 도구에 맞게 준비하는 방법을 탐구할 것입니다. 특히 LLM(사용 모델 컨텍스트 프로토콜)) 및 다양한 AI 에이전트를 통합하면서 액세스 제어 문제를 해결할 것입니다.
이 가이드를 통해 얻게 될 이점은 다음과 같습니다:
우리는 완전한 튜토리얼 리소스, 완전한 데모 프로젝트 소스 코드 (프론트엔드, 백엔드, MCP 서버 포함), 심지어 AI 준비 서비스 구축을 돕기 위한 실용적인 가이드까지 제공합니다.
이 가이드가 어떻게 비즈니스를 개선할 수 있는지 알아보세요:
시작해 봅시다!
MCP (모델 컨텍스트 프로토콜)은 애플리케이션이 대형 언어 모델(LLM)에 컨텍스트 정보를 제공하는 방법을 표준화하는 개방형, 범용 프로토콜입니다.
MCP는 AI 도구가 서비스에 액세스할 수 있도록 여러 주요 구성 요소로 이루어져 있습니다:
이 가이드에서 MCP 서버는 서비스와 AI 도구 간의 핵심 연결 지점입니다. 이는 LLM이 사용할 일련의 도구를 제공하고, 이러한 도구는 여러분의 서비스와 상호 작용합니다. MCP에 대한 더 많은 세부 사항은 MCP(모델 컨텍스트 프로토콜) 및 작동 원리 설명서를 참조하십시오. 여기서는 MCP 서버에 주로 집중할 것입니다.
우리는 역할 기반 액세스 제어(RBAC) 정책이 통합된 콘텐츠 관리 시스템(CMS)을 예제로 사용하겠습니다. MCP 서버를 구축하고, LLM이 CMS의 현재 사용자에게 이용 가능한 기사 수를 검색할 수 있도록 하는 get-available-article-count 도구를 정의할 것입니다:
이는 MCP 서버를 서비스에 연결하는 핵심 코드입니다. 이 도구 구현에서는 서비스의 api/articles 엔드포인트로 요청을 보내고 결과를 반환합니다.
그러나 이것만으로는 충분하지 않습니다. 서비스의 API가 공용이 아닐 수 있기 때문입니다. 각 엔드포인트에는 액세스 제어가 필요하며, 사용자마다 다른 리소스와 데이터에 접근할 수 있습니다.
다음으로 서비스에 액세스 제어를 추가하는 방법을 논의할 것입니다.
중요한 것은 AI 도구를 통해 시스템에 액세스하는 사용자는 시스템을 직접 사용하려는 동일한 개인이라는 점입니다 - MCP 서버는 AI 도구를 통해 상호 작용할 때 그들의 대표 역할을 합니다.
따라서 사용자가 AI 도구를 통해 서비스를 이용할 때 두 가지 실제적인 액세스 제어 문제가 발생합니다:
이 문제를 해결하는 열쇠는 다음과 같습니다:
어떻게 사용자가 자신의 자격 증명과 상호 인증 없이 MCP 서버가 서비스에서 액세스를 부여하도록 허용할 수 있을까요?
이 문제를 해결할 수 있다면, MCP 서버를 통해 서비스와 직접 상호 작용할 수 있으며, 서비스는 사용자에게 설계된 이전 액세스 제어 메커니즘을 계속 사용할 수 있습니다. MCP 서버만을 위한 새 시스템을 재설계할 필요가 없습니다!
하지만 이것이 가능할까요?
물론 가능합니다! 우리는 **개인 액세스 토큰(PATs)**을 사용하여 이 문제를 완벽히 해결할 수 있습니다!
개인 액세스 토큰(PATs)은 사용자 자격 증명과 상호 인증 없이 액세스 토큰을 안전하게 부여하는 방법을 제공합니다. 이는 CI/CD, 스크립트, 프로그래밍 방식으로 리소스에 액세스할 필요가 있는 애플리케이션에 유용합니다.
다음은 워크플로우입니다:
따라서 시스템이 개인 액세스 토큰(PAT)을 지원하는 한, AI 도구와 기존 서비스 간의 액세스 제어 문제를 완벽하게 해결할 수 있으며, 인증 메커니즘을 재설계하지 않고도 사용자 데이터 보안 및 프라이버시 보호를 보장할 수 있습니다.
이제 실습에서 이를 구현하는 방법을 살펴봅니다.
이 섹션에서는 기존 CMS 시스템을 기반으로 MCP 서버에 대한 액세스 제어를 구현할 것입니다.
RBAC를 실습에서 사용하는 방법: 애플리케이션에 대한 안전한 권한 부여 구현에서 완전한 CMS 샘플 튜토리얼과 소스 코드를 확인할 수 있지만, 필수는 아니며, 여기서 모든 필수 원칙을 다룰 것입니다.
CMS 샘플은 포괄적인 인증 및 권한 부여 솔루션을 제공하는 인기 있는 오픈소스 ID 플랫폼 Logto를 기반으로 하고 있지만, 이 글의 기술 구현은 중점이 아닙니다.
액세스 제어를 구현하는 첫 번째 단계는 시스템에 대한 권한 및 액세스 제어 정책을 설계하는 것입니다.
CMS 예제에서는 RBAC (역할 기반 액세스 제어)를 기반으로 다음과 같은 API 엔드포인트를 설계하고, 각 엔드포인트에 액세스하기 위해 필요한 권한을 명시했습니다:
| 엔드포인트 | 액세스 제어 논리 |
|---|---|
| GET /api/articles | - list:articles 권한이 있는 모든 사용자 또는 작성자가 자신의 기사를 볼 수 있음 |
| GET /api/articles/:id | - read:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글 |
| POST /api/articles | - create:articles 권한이 있는 모든 사용자 |
| PATCH /api/articles/:id | - update:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글 |
| DELETE /api/articles/:id | - delete:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글 |
| PATCH /api/articles/:id/published | - publish:articles 권한이 있는 사용자만 |
시스템의 권한 설계는 다음과 같습니다:
| 권한 | 설명 |
|---|---|
| list:articles | 시스템의 모든 기사 목록 보기 |
| read:articles | 모든 기사의 전체 내용 읽기 |
| create:articles | 새 기사 작성 |
| update:articles | 모든 기사 수정 |
| delete:articles | 모든 기사 삭제 |
| publish:articles | 발행 상태 변경 |
이 권한을 기반으로 CMS 시스템에 대해 다음과 같은 역할을 정의했습니다:
| 권한/역할 | 👑 관리자 | 📝 발행자 | ✍️ 저자 |
|---|---|---|---|
| 설명 | 전체 콘텐츠 관리를 위한 완전한 시스템 액세스 | 모든 기사를 보고 발행 상태를 제어할 수 있음 | 시스템에서 새 기사를 작성할 수 있음 |
| list:articles | ✅ | ✅ | ❌ |
| read:articles | ✅ | ✅ | ❌ |
| create:articles | ✅ | ❌ | ✅ |
| update:articles | ✅ | ❌ | ❌ |
| delete:articles | ✅ | ❌ | ❌ |
| publish:articles | ✅ | ✅ | ❌ |
참고: 저자는 역할 권한에 상관없이 자신이 작성한 글에 대해 읽기/수정/삭제 권한을 자동으로 부여받습니다.
다음은 우리 시스템의 사용자를 예제로 역할을 지정한 것입니다:
| 사용자 | 역할 |
|---|---|
| Alex | 관리자 |
| Bob | 발행자 |
| Charlie | 저자 |
Logto에서는, 위의 RBAC 실습 기사에서 언급했듯이 사용자에 대한 역할을 설정해두었습니다.

다음은 CMS 샘플에서 사용자가 로그인하는 방법입니다:
따라서 서비스 API에 액세스 제어를 적용하는 것은 액세스 토큰을 검증하고 권한을 확인하는 미들웨어를 9단계에 추가하는 것만큼 간단합니다.
핵심 구현은 다음과 같습니다 (RBAC 샘플 - 백엔드에서 전체 구현을 확인하세요):
그리고 인증이 필요한 API 엔드포인트에 미들웨어를 적용하세요:
이제 CMS 시스템에 액세스 제어를 추가하고 사용자에게 역할을 할당했습니다.
사용자가 CMS API를 위한 액세스 토큰을 얻고 나면, 이 토큰을 사용하여 CMS API에 액세스할 수 있습니다. 액세스 토큰에는 사용자의 권한 정보가 포함됩니다. 이를 사용하여 사용자 권한에 따라 어떤 데이터를 반환할지 제어할 수 있습니다.
다음 단계는 MCP 서버가 개인 액세스 토큰을 사용하는 방법을 구현하는 것입니다.
위의 CMS 인증 흐름을 참조하세요. 사용자는 로그인 후 CMS API에 대한 액세스 토큰을 얻습니다. 이 액세스 토큰은 CMS API에 액세스하기 위한 그들의 자격 증명입니다.
사용자가 로그인 후 얻는 액세스 토큰과 유사한 것을 얻어야 합니다. 그러면 이를 사용하여 CMS API에 액세스할 수 있습니다.
여기서 개인 액세스 토큰이 도움이 됩니다. 이를 통해 사용자가 로그인 후 얻는 것과 동일한 유형의 액세스 토큰을 얻을 수 있습니다.
우리가 해야 할 일은 다음과 같습니다:
이 예제에서는 Logto를 사용하여 시연합니다. Logto는 개인 액세스 토큰 및 토큰 교환을 지원합니다. Logto를 사용하지 않는 경우 이 접근 방식을 따라 개인 액세스 토큰 지원을 구현할 수 있습니다.
Logto 콘솔 > 사용자 관리에서, 사용자 세부 정보 페이지에서 개인 액세스 토큰을 만들 수 있습니다:

개인 액세스 토큰을 만들 때 필요한 만료 시간을 설정할 수 있습니다.
이제 사용자 개인 액세스 토큰이 있으므로 MCP 서버에서 이를 사용할 수 있습니다.
먼저 Logto의 개인 액세스 토큰 문서를 따라 Logto의 토큰 엔드포인트에서 CMS API에 액세스하기 위한 액세스 토큰을 얻겠습니다. 전체 소스 코드를 여기서 확인할 수 있습니다.
MCP 서버에서는 exchangeAccessToken 함수의 액세스 토큰을 사용하여 CMS API에서 데이터를 가져옵니다.
이렇게 하면 MCP 서버는 CMS API에 액세스하기 위해 사용자 로그인 자격 증명이 필요하지 않습니다. 대신 사용자의 개인 액세스 토큰을 사용합니다.
전체 코드는 RBAC 샘플 - MCP 서버에서 확인할 수 있습니다.
Claude Desktop에서 이 MCP 서버를 로컬로 배포하는 방법을 알아보려면 MCP 서버 배포 가이드를 참조하세요.
또한 이 서버를 Cursor, Cline, Windsurf 등과 같은 다양한 AI IDE에 배포할 수 있습니다.
Claude Desktop에서 이 구현을 테스트해 봅시다.
CMS에서 Alex와 Charles는 각각 하나의 기사를 작성했습니다.
Alex는 관리자 역할을 가지므로 모든 기사를 볼 수 있고, Charles는 저자가 되어 자신의 기사만 볼 수 있습니다.
Claude에게 이용 가능한 기사 수를 물어볼 때, Claude는 get-available-article-count 도구를 사용하고 우리의 권한을 묻습니다.

Alex의 개인 액세스 토큰을 MCP에 사용하고 Claude에게 이용 가능한 기사 수를 물어보면, Claude는 get-available-article-count 도구를 호출하고 총 2개의 기사가 있다고 알려줍니다.

Charles의 개인 액세스 토큰으로 전환하고 동일한 질문을 하면, Claude는 단 하나의 기사만 있다고 알려줍니다.

굉장해요! 우리는 개인 액세스 토큰을 사용하여 CMS API에 액세스하고 정확한 데이터를 얻었습니다.
우리가 원하는 것은 바로 이것입니다: 각 사용자에게 개인 액세스 토큰을 생성하고, 사용자가 자신의 MCP 서버에 이 토큰을 구성하면, 우리는 그들을 위해 개인화된 AI 경험을 만듭니다.
요약 섹션을 작성하는 데 도움을 드리겠습니다:
이 가이드에서는 AI 도구를 기존 서비스에 연결하면서 적절한 액세스 제어를 유지하는 방법에 대해 탐구했습니다. 역할 기반 액세스 제어(RBAC)가 구현된 CMS 시스템을 사용하여 개인 액세스 토큰(PATs)이 인증 문제를 우아하게 해결하는 방법을 보여주었습니다.
이 구현의 완전한 소스 코드는 RBAC 샘플 저장소에 있습니다. 여기에는 CMS 백엔드, 프론트엔드, MCP 서버 구현이 포함되어 있습니다.
MCP 서버를 사용자에게 배포할 때는 개인 액세스 토큰을 구성 가능하게 하세요. 이를 통해 각 사용자는:
이 접근 방식은 AI 통합의 보안을 유지하면서 각 사용자의 권한 및 역할에 따라 맞춤형 경험을 제공하는 것을 보장합니다.
AI 통합 여정을 시작하며 비즈니스에서 큰 성공을 바랍니다! 새로운 AI 기능으로 서비스가 번창하고 성장할 수 있기를 기원합니다! 🚀