> This page is for Camera to Cloud.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# 방법: 권한 부여 관리

## 개요





이 가이드에서는 토큰 새로 고침, 해지, 보안 스토리지 모범 사례를 포함하여 Frame.io에서 디바이스 인증 토큰을 관리하는 절차를 설명합니다.





## 사전 요구 사항

적절한 구성을 위해 [C2C 구현: 설정](./implementing-c2c-setting-up) 가이드를 검토해 주시기 바랍니다.

필요한 필수 구성 요소:



* Frame.io에서 발급한 유효한 `client_secret`
* [인증 및 권한 부여 가이드](./implementing-c2c-authentication-and-authorization)에 자세히 설명된 대로 할당된 `client_id`
* 유효한 `access_token` 및 `refresh_token` 자격 증명




## 인증 토큰 이해하기

[디바이스 인증](./implementing-c2c-authentication-and-authorization)에 대한 이전 가이드에서는 사용자 인증을 통해 초기 인증 토큰을 얻는 프로세스를 설명했습니다. 액세스 토큰은 약 8시간 동안 기능을 유지합니다. 디바이스를 자주 재페어링해야 하는 번거로움을 없애기 위해 인증 시 새로 고침 토큰을 함께 발급받을 수 있도록 `offline` 범위를 구현합니다. 이 새로 고침 토큰을 사용하면 만료 시 새로운 액세스 토큰을 생성할 수 있습니다.

새로 고침 토큰은 14일 동안 유효합니다. 액세스 토큰의 수명을 이처럼 의도적으로 제한하는 것은 손상된 토큰으로 인한 잠재적 취약성을 최소화하여 보안을 강화합니다. 새로 고침 토큰이 만료되기 전에 인증을 갱신하지 않으면 사용자가 다시 인증해야 합니다.





## 액세스 토큰 갱신 프로세스





액세스 토큰이 만료된 후 API 요청을 보내면 다음과 같은 응답을 받게 됩니다.





```json
{
    "code": 401,
    "errors": [
        {
            "code": 401,
            "detail": "You are not allowed to access that resource",
            "status": 401,
            "title": "Not Authorized"
        }
    ],
    "message": "Not Authorized"
}
```





다음 명령을 실행하여 새 토큰을 얻으세요.





```shell
curl -X POST https://api.frame.io/v2/auth/token \
    --header 'x-client-version: 2.0.0' \
    --form 'client_id=[client_id]' \
    --form 'client_secret=[client_secret]' \
    --form 'grant_type=refresh_token' \
    --form 'refresh_token=[refresh_token]' \
    | python -m json.tool
```




<Info title="API 엔드포인트 사양">
  `/v2/auth/token`에 대한 자세한 문서는 [여기](/camera-to-cloud/api-reference/authentication/auth-device-token)에서 확인할 수 있습니다.
</Info>
 이 구현은 보안을 강화하기 위해 여러 가지 인증 요소를 요구합니다. 승인되지 않은 당사자가 귀하의 통합을 성공적으로 도용하려면 `refresh_token` 및 `client_secret`을 모두 확보해야 합니다.

갱신에 성공하면 다음과 같은 응답이 생성됩니다.





```json
{
    "access_token": "[access_token]",
    "expires_in": 28800,
    "refresh_token": "[refresh_token]",
    "token_type": "bearer"
}
```





토큰을 성공적으로 새로 고치면 이전 자격 증명은 무효화됩니다. 새로운 인증 토큰을 안전하게 보관해야 합니다.





만료된 새로 고침 토큰을 다시 사용하려고 시도하면 다음과 같은 결과가 발생합니다.





```json
{
    "error": "invalid_request"
}
```





이는 해당 토큰이 이전에 처리되었으며 더 이상 유효하지 않음을 나타냅니다.




<Error title="새로 고침 중 401 오류 발생 시">
  토큰을 새로 고치는 동안 `401 Not Authorized` 응답을 받았다는 것은 자격 증명이 무효화되었음을 의미하며, 따라서 새로운 인증 프로세스가 필요합니다.
</Error>


## 실패한 새로 고침 응답 처리하기

`refresh_token` 값은 일회성이므로, 네트워크 중단, 시스템 종료 등의 이유로 새로 고침 응답을 캡처하지 못하면 전체 인증/권한 부여 절차를 다시 시작해야 합니다.

이러한 보안 프로토콜은 불편할 수 있지만 시스템 무결성을 유지하는 데 필수적입니다.





## 토큰 해지 프로세스





프로젝트 완료, 애플리케이션 재설정 등의 상황에서는 Frame.io 액세스를 종료해야 할 수 있습니다. 현재 인증을 중단할 때는 적절한 해지 절차를 구현하세요.





다음 명령을 실행하여 인증을 해지하세요.




<Info title="재인증하기">
  해지 후에는 [인증 및 권한 부여 가이드](./implementing-c2c-authentication-and-authorization)에 설명된 대로 인증, 권한 부여 프로세스를 다시 시작해야 합니다.
</Info>


```shell
curl -X POST https://api.frame.io/v2/auth/revoke \
    --include \
    --header 'x-client-version: 2.0.0' \
    --form 'client_id=[client_id]' \
    --form 'client_secret=[client_secret]' \
    --form 'token=[refresh_token]'
```




<Info title="API 엔드포인트 사양">
  `/v2/auth/revoke`에 대한 전체 문서는 [여기](/camera-to-cloud/api-reference/authentication/auth-device-revoke-token)에서 확인할 수 있습니다.
</Info>
 시스템은 페이로드 없이 헤더만 반환합니다. 성공은 `200` 상태 코드로 표시됩니다.

```text
HTTP/2 200
...
```

해지 후, `access_token` 인증이 필요한 Frame.io 작업은 `Not Authorized`를 반환합니다. 액세스 권한을 복원하려면 디바이스를 프로젝트에 다시 페어링해야 합니다.

## 토큰 스토리지 구현





시스템을 다시 시작하더라도 영구적인 인증을 유지하려면 안전한 토큰 스토리지가 필요합니다. 다음 필수 지침을 준수하세요.

**사용자 액세스 제어 구현:** 토큰의 가시성과 액세스를 애플리케이션 프로세스로만 엄격하게 제한하세요. **스토리지 암호화 활성화:**`client_secret` 및 인증 자격 증명을 포함하여 저장된 토큰에 대해 암호화를 구현하세요. 인증 키를 절대로 일반 텍스트 형식으로 보관해서는 안 됩니다. **자격 증명 분리 유지:** 저희의 데모 Python 애플리케이션은 스토리지를 하나로 통합하지만, 프로덕션 환경에서는 인증 토큰과 `client_secret`을 분리해야 합니다. 다음 요소를 고려하세요.
* `client_secret` 및 `client_id`는 영구적인 디바이스 자격 증명을 나타내며, 이를 분실하면 디바이스에 영구적인 장애가 발생합니다.
* 인증 토큰은 디바이스가 작동하는 동안 정기적으로 업데이트됩니다.
* 스토리지를 분리해 두면 토큰 스토리지가 손상되더라도 인증을 완전히 재설정할 필요 없이 디바이스만 다시 페어링하면 됩니다.




SQLite가 최적의 토큰 스토리지 기능을 제공하지만, 최소한 인증 데이터, 핵심 자격 증명을 위한 별도의 스토리지를 구현해야 합니다.





## 다음 단계

순조로운 진행을 환영하며, 이제 [연결 상태 및 하트비트 가이드](./how-to-heartbeats-connection-info-and-status)로 넘어가시기 바랍니다. 질문이나 우려 사항이 있다면 저희 팀에 문의해 주세요.