> ## Documentation Index
> Fetch the complete documentation index at: https://dev-docs.trychainshift.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# OAuth 2.1

> Claude.ai·ChatGPT 같은 브라우저 MCP 커넥터를 위한 OAuth 2.1 인증

Claude.ai·ChatGPT의 브라우저 커넥터는 API 키 직접 입력을 지원하지 않고 **OAuth 인증**을 요구합니다. Chainshift는 이를 위해 OAuth 2.1 Authorization Server를 제공합니다 (PKCE + Dynamic Client Registration).

<Note>
  커넥터가 OAuth 흐름(디스커버리·클라이언트 등록·토큰 교환)을 자동으로
  처리합니다. 사용자는 **동의 화면에서 조직 API 키를 붙여넣기만** 하면 됩니다.
</Note>

## 연결 방법

<Steps>
  <Step title="MCP 커넥터 추가">
    커넥터 설정에서 Chainshift MCP 서버 URL을 입력합니다.

    ```
    https://dev-platform-api.trychainshift.ai/mcp
    ```
  </Step>

  <Step title="인증 시작">
    커넥터가 인증이 필요함을 감지하고 Chainshift 승인 화면을 브라우저로 엽니다. 디스커버리와 클라이언트 등록은 자동으로 진행됩니다.
  </Step>

  <Step title="API 키 붙여넣기">
    승인 화면에 조직 API 키(`cs_live_…`)를 붙여넣고 **승인**합니다.
  </Step>

  <Step title="완료">
    커넥터가 액세스 토큰을 발급받아 이후 요청에 자동으로 사용합니다. 이후에는 재인증 없이 이용할 수 있습니다.
  </Step>
</Steps>

발급된 토큰은 붙여넣은 **API 키에 바인딩**됩니다. 대시보드에서 해당 API 키를 폐기하면 연결된 OAuth 토큰도 즉시 무효화됩니다.

## 기술 사양

대부분의 커넥터는 아래 흐름을 자동으로 수행합니다. OAuth 클라이언트를 직접 구현할 때만 참고하세요.

<AccordionGroup>
  <Accordion title="디스커버리 엔드포인트">
    * `GET /.well-known/oauth-protected-resource` — Protected Resource Metadata (RFC 9728)
    * `GET /.well-known/oauth-authorization-server` — Authorization Server Metadata (RFC 8414)

    인증되지 않은 `/mcp` 요청에는 `401`과 함께 `WWW-Authenticate: Bearer resource_metadata="…"` 헤더가 반환되어 커넥터가 디스커버리를 시작합니다.
  </Accordion>

  <Accordion title="인증 흐름">
    1. **동적 클라이언트 등록** — `POST /oauth/register` (RFC 7591) → `client_id` 발급
    2. **인가 요청** — `GET /oauth/authorize` (PKCE `code_challenge` 포함) → 승인 화면 렌더
    3. **인가 코드 발급** — 사용자가 API 키를 붙여넣고 승인 → `redirect_uri`로 1회용 `code` 반환
    4. **토큰 교환** — `POST /oauth/token` (`grant_type=authorization_code`, `code_verifier`) → 액세스·리프레시 토큰 발급
  </Accordion>

  <Accordion title="토큰 및 스코프">
    | 항목      | 값                                        |
    | ------- | ---------------------------------------- |
    | 액세스 토큰  | `cs_at_…` · 유효기간 1시간                     |
    | 리프레시 토큰 | `cs_rt_…` · 유효기간 30일 · 사용 시 회전(rotation) |
    | PKCE    | `S256`만 지원                               |
    | 스코프     | `mcp`                                    |

    토큰 갱신은 `POST /oauth/token` (`grant_type=refresh_token`, `refresh_token`, `client_id`)로 수행합니다. 리프레시 토큰은 발급받은 `client_id`에 바인딩됩니다.
  </Accordion>
</AccordionGroup>

<Tip>
  프로그래밍 방식·CLI 클라이언트라면 OAuth 없이 [조직 API 키](/authentication/api-key)를
  그대로 쓰는 편이 간단합니다. OAuth는 API 키 직접 입력을 지원하지 않는 브라우저
  커넥터를 위한 것입니다.
</Tip>
