2026-07-31T19:48:45.898Z

MCP 인증은 어떻게 작동합니까? OAuth 체인을 감사

리모트 MCP OAuth 경로를 401부터 리소스, 발행자, PKCE, 범위, 토큰 및 준비 영수증으로 추적합니다.

보호된 원격 MCP 서버에서, 인증은 하나의 토큰 체크가 아닙니다. 이는 권한 연쇄입니다. 클라이언트는 도전을 받고, 정확한 보호된 리소스를 위한 메타 데이터를 발견하고, 권한 서버를 발견하고 검증하고, 클라이언트 아이덴티티를 얻으며, PKCE와 리소스 지표로 권한 코드 흐름을 실행하고, 필요한 범위를 수신하고, 결과 토큰이 의도된 MCP 엔드포인트에서 작동하는 것을 증명합니다. 그 답은 중요한 한계를 가지고 있습니다. 현재 MCP 허가 사양는 권한 부여를 선택적으로 하고 HTTP 기반 운송에 OAuth 경로를 적용한다. 로컬 STDIO 서버는 그 대신 호스트 환경이나 다른 로컬 메커니즘을 통해 자격증을 얻어야 합니다. 따라서 모든 MCP 연결에 대한 브라우저 흐름을 시작하는 것은 합리적인 기본이 아닙니다. 운영 문제는 내가 토큰을 가지고 있는가?이것이 이 특정 허가 체인의 모든 결합이 동의한다는 것을 보여주는 영수증입니다? 토큰 모양의 문자열은 잘못된 자원, 신뢰할 수없는 발행자, 부족한 범위 또는 여전히 401 를 반환하는 보호 요청과 공존 할 수 있습니다. 운송과 첫 번째 도전으로 시작하세요 공식 MCP 허가 설명서는 단계적으로 원격 HTTP 흐름을 설명합니다. 단축된 형태로: 1. 클라이언트는 토큰 없이 MCP 요청을 보내죠. 2. 보호된 MCP 서버는 Bearer 401 Unauthorized / WWW Authenticate 도전으로 401 Unauthorized를 반환합니다. 3. 이 도전은 resource metadata 를 통해 보호된 자원 메타데이터를 가리킨다. 4. 그 메타 데이터는 보호된 리소스와 하나 이상의 권한 서버를 식별합니다. 5. 클라이언트는 권한 서버 메타데이터를 수집하고 발행자와 엔드포인트를 검증합니다. 6. 클라이언트는 권한 서버가 지원하는 메커니즘을 통해 클라이언트 ID를 획득하고, PKCE와 MCP 리소스 식별자를 사용하여 권한 코드 흐름을 실행합니다. 7. 클라이언트는 생성된 액세스 토큰을 MCP 서버에 전송하고 보호된 요청을 관찰합니다. 첫 번째 401 는 억제 실패가 아닙니다. 발견 인수증입니다. 유용한 기록은 HTTP 상태, 인증 계획, 메타데이터 URL, 관찰 시간 및 선택한 MCP 리소스를 보관합니다. Xnot 는 Authorization 헤더, 쿠키, 권한 코드, 검증기, 클라이언트 비밀 또는 액세스 토큰을 보관합니다. RFC 9728는 보호된 자원 메타데이터와 잘 알려진 발견 패턴을 정의합니다. 보안 값은 권위에 달려 있습니다. https://mcp.example/mcp 의 메타 데이터는 해당 리소스를 설명해야 하며, 유사한 호스트 또는 관련없는 서비스에서 제공되는 URL가 아닙니다. 오류 몸에서 임의의 권한 URL를 따르는 것은 동등하지 않습니다. 권한 서버는 별도의 역할입니다. 보호된 MCP 서버는 OAuth 리소스 서버로 작용하고, MCP 클라이언트는 OAuth 클라이언트로 작용하고, 권한 서버는 필요할 때 사용자와 상호 작용하고 액세스 토큰을 발행한다. 이러한 역할을 혼합하면 일반적인 문제 해결 오류가 유연하게 보일 수 있습니다. 클라이언트가 올바른 발행자를 발견했는지 확인하기 전에 리소스 서버 토큰을 회전합니다. 리소스, 발행자, 클라이언트 및 코드 흐름을 결합 두 개의 URL는 정확한 비교를 받을 가치가 있습니다. 첫 번째는 보호된 자원입니다. RFC 8707는 resource 요청 매개 변수를 정의하므로 권한 서버는 토큰의 의도된 수신자를 알고 있습니다. 현재 MCP 초안은 허가 및 토큰 요청 모두에서 리소스 매개 변수를 요구합니다. 다른 API에 발행된 액세스 토큰은 선택된 MCP 서버에 대해 거의 유효하지 않습니다. 두 번째는 허가 서버 발행자입니다. 브라우저를 열기 전에 클라이언트는 인증된 권한 서버 메타데이터에서 발행자를 기록합니다. 권한 응답에 iss 가 포함될 경우, 현재의 MCP 드래프트는 클라이언트가 코드를 토큰 엔드포인트에 전송하기 전에 기록된 값에 대한 비교를 설명합니다. 발행자 부합은 정지 조건이 아니라 두 엔드포인트에 대해 동일한 코드를 시도할 이유가 아닙니다. 클라이언트 등록은 또한 명시적인 계층입니다. 클라이언트는 클라이언트 ID 메타데이터 문서, 사전 등록된 클라이언트 ID 또는 지원되는 동적 등록 경로를 사용할 수 있습니다. 현재 제안은 다이내믹 클라이언트 등록을 보편적 가정보다는 호환성 메커니즘으로 다루고 있습니다. 지원되는 등록 메커니즘이 존재하지 않는 경우, 올바른 판단은 registration blocked 입니다. 리디렉션 URI를 발명하거나 다른 제품의 클라이언트 ID를 재사용하면 실제 상호 운용성 장애를 숨길 수 있습니다. PKCE는 허가 요청을 나중에 코드 교환에 묶습니다. 감사는 흐름이 구속된 검증자를 유지했는지 여부를 기록하는 것 뿐, 검증자가 직접 확인하는 것은 결코 아니다. 누락된 결합은 브라우저가 코드를 반환하더라도 unsafe flow 가 됩니다. 이것은 한 건전한 장비를 위해 사용된 내용 없는 형태입니다. 스코프의 이름은 비밀 값이 아닌 구성 증거입니다. 민감한 배포에서 그들은 여전히 능력을 드러낼 수 있기 때문에 건강 결정에 필요한 것만 유지하고 다른 운영 메타 데이터와 동일한 액세스 통제를 적용합니다. 첫 번째 실패층을 진단 평평한 체크리스트는 모순적인 행동을 낳습니다. 보호된 자원의 메타데이터가 사용되지 않는 경우, 발행자 비교는 신뢰할 수 있는 입력이 없습니다. 리소스 식별자가 잘못되면 더 넓은 범위를 요청하는 것은 그것을 고칠 수 없습니다. 따라서 분류자는 우선순위를 사용하며 첫 번째 실패층에서 멈춥니다. 판결 그 사슬을 막는 증거 제한된 다음 액션 not applicable 지역 STDIO 교통 실행시간의 로컬 인증 메커니즘을 사용 invalid challenge HTTPS resource metadata 가 없어지거나 없는 경우 401 도전을 수정 metadata unavailable 보호된 자원 메타데이터는 200 로 반환되지 않았습니다 메타데이터를 복원하여 발행자를 추측하지 마십시오 resource mismatch 메타데이터 또는 토큰은 다른 리소스를 대상으로 합니다 리소스 아이덴티티를 수정하거나 리소스 제한 토큰을 요청 issuer mismatch 발견 또는 복귀 발행자가 동의하지 않습니다 흐름을 거부하고 메타데이터 권한을 조사 registration blocked 지원된 클라이언트 아이덴티티가 없습니다 지원되는 등록 메커니즘을 구성 unsafe flow 권한 코드 흐름에는 PKCE 결합이 없습니다 PKCE로 다시 시작 step up required 현재 운영은 허용되지 않은 범위가 필요합니다. 도전된 실종 범위를만 요청합니다. token rejected 구속은 동의하지만 보호 요청은 여전히 실패합니다 로테이션 전에 새로운 도전을 분류하십시오. authorized ready 모든 허가 영수증은 동의하고 요청은 성공합니다 MCP 초기화 및 결과 확인을 계속합니다 제공된 장치가 네트워크 접속 없이 재생될 수 있습니다. 그 날짜의 실행은 10개의 사건, 10개의 1층 판결, 1개의 authorized ready , 그리고 1개의 secretFieldsStored: 0 를 가져왔다. 이 결과는 의도적으로 9개의 오류와 1개의 성공보다 더 엄격합니다. 결정 규칙은 지역 운송, 실패한 발견, 모순적인 정체성, 지원되지 않은 등록, 안전하지 않은 코드 흐름, 실종 범위 및 거부된 토큰 사이의 의미있는 차이를 보존한다는 것을 증명합니다. 첫 번째 계층의 실패 규칙은 또한 다시 시도를 제한합니다. metadata unavailable 는 제한된 메타데이터 재실험을 정당화할 수 있습니다. issuer mismatch 는 안 돼 step up required 는 논란의 범위에 대해 새로운 동의 흐름을 정당화 할 수 있습니다. token rejected 는 새로운 도전을 읽어야 합니다. 왜냐하면 만료, 취소, 관객 및 범위는 하나의 수리를 공유하지 않기 때문입니다. 도표 실패와 분리된 범위 증강을 유지하십시오. 현재 MCP 초안은 서버가 WWW Authenticate 도전에 필요한 범위를 포함하도록 권장합니다. 현재 운영에 대한 도전 범위는 해당 운영에 대한 권한이 있으며, 자원 메타데이터의 전체 scopes supported 집합에 해당할 필요가 없습니다. 이것은 사업자의 결정을 변경합니다. files:read 에서 읽기가 성공한다고 가정하면, 쓰기에서는 403 와 files:write 에 대한 도전을 반환합니다. 그건 토큰 매장이 부패한 증거가 아닙니다. 그것은 step up required 상태입니다. 클라이언트는 인간의 눈에 띄게 누락된 허가를 요청해야 하며, 다른 운영에 필요한 허가를 보존해야 한다. 반면, 자원, 발행자, 등록, PKCE 및 범위에 대한 영수권 합의 후 401 를 반환하는 보호 요청은 token rejected 입니다. 다음 단계의 안전 단계는 새로운 도전을 분류하는 것입니다. 반복적으로 같은 표본을 제시하는 것은 활동이 아니라 진보입니다. 모든 자격증을 돌리는 것은 또한 유용한 증거를 파괴하고 건강한 고객을 방해할 수 있습니다. authorized ready 의 판결은 여전히 좁습니다. 원격 MCP 서버가 이 요청에 대한 허가 체인을 받아들인다고 합니다. 이 책에는 이렇게 적혀 있지 않습니다. MCP 초기화 및 능력 협상이 성공하였다. 선택된 도구가 여전히 존재하거나 그 스키마는 변경되지 않습니다. 도구 호출은 의도된 외부 효과를 가져왔다. 부작용은 휴식 후 다시 시도하는 것이 안전합니다. 이용자의 배달 상품이 존재합니다. 권한 서버, 클라이언트 및 리소스는 세계적으로 신뢰할 수 있습니다. 그런 다음 건강과 안전에 대한 결정입니다. 성공적인 보호 요청은 실행을 MCP 생명주기 검사로 옮기야 하며, 그 다음 도구 효과 및 결과 검증은 직접적으로 agent healthy로 옮기야 한다. 인증을 수집하지 않고 영수증을 사용하세요 생산 작업에 있어서, 선택된 클라이언트 및 리소스의 해시 또는 안정적인 ID를 이벤트 상관관계에 필요한 경우에만 저장한다. 메타데이터와 프로토콜 규칙이 진화하기 때문에 시간표와 사양 버전을 기록합니다. 원본 토큰, 코드, 검증기, 비밀, 쿠키, 프롬프트, 도구 аргумент 및 도구 결과를 건강 기록에서 보관하십시오. 이 유물은 분류기이고 라이브 컨퍼런스 스위트가 아닙니다. 그것은 자신에게 제공된 관찰을 신뢰합니다. 실제 구현은 TLS, 메타데이터 출처, 리디렉션 URI, 발행자 행동, 토큰 서명 또는 내보시, 관객, 만료 및 배포 정책을 추가적으로 검증해야합니다. 2026년 7월 30일에 MCP 초안이 확인되었습니다. 당신이 구현한 사양을 입력하고 계약이 변경될 때 장치를 다시 실행하십시오. Sidewisp의 의도된 제품 영역은 도구의 접근성, 유효기간이 만료된 자격증, 허가 손실, 유용한 진전이 및 결과 검증이 포함됩니다. Sidewisp는 현재 비공개 프리뷰 단계입니다. 생산 모니터링 어댑터와 복구 실행기는 일반적으로 배송되지 않으므로 이 문서에서는 Sidewisp가 이미 이 MCP 허가 감사를 수행한다고 주장하는 대신 독립적인 운영 규칙을 제공합니다. 따라서 MCP 인증이 어떻게 작동하는가에 대한 실질적인 답은 지수 토큰 스크린샷이 아닌 허가 영수 체인입니다. 첫 번째 모순을 진단으로 간주하고 한 가지 제한된 수리를 적용하고 승인 성공은 도구 성공과 사용자 최종 결과로부터 분리됩니다.