방법: 인증 관리(애플리케이션)
방법: 인증 관리(애플리케이션)
소개
이 가이드에서는 Frame.io에 대한 C2C 애플리케이션 인증 정보를 새로 고침, 해지, 저장하는 방법을 설명합니다.
무엇이 필요할까요?
C2C 구현: 설정 가이드를 읽지 않으셨다면, 다음으로 넘어가기 전에 빠르게 살펴보세요! 저희 팀이 제공한 client_id와 인증 및 권한 부여 가이드에서 사용했던 것과 동일한 device_id가 필요합니다. 이 가이드를 완료하려면 access_token 및 refresh_token도 필요합니다.
인증 토큰
지난 가이드에서는 사용자가 프로젝트에서 디바이스를 인증하고 권한을 부여하도록 하여 새로운 인증 토큰을 생성하는 방법을 배웠습니다. 액세스 토큰은 만료되기 전까지 약 1시간 동안만 유효합니다. 디바이스 사용자가 8시간마다 로그인하는 것을 원치 않으므로, 지난 가이드에서 offline 범위를 요청했고 Frame.io에서 인증할 때 새로 고침 토큰도 받았습니다. 새로 고침 토큰을 사용하면 현재 액세스 토큰이 만료되었을 때 새 액세스 토큰을 생성할 수 있습니다.
새로 고침 토큰은 30일 동안 유효합니다. access_token이 유효한 시간을 제한함으로써 토큰이 유출되었을 때 발생할 수 있는 잠재적 악용을 최소화합니다. 새로 고침 토큰이 사용되기 전에 인증을 갱신하지 않으면 사용자가 다시 인증해야 합니다.
액세스 토큰 새로 고침
액세스 토큰이 필요한 API를 호출하고 다음과 같은 응답을 받는다면:
… 액세스 토큰이 만료된 것입니다!
토큰을 새로 고치려면 다음 호출을 수행해야 합니다.
이 값들이 무엇인지 확실하지 않으신가요?
이 모든 값은 이전 가이드에서 생성되었습니다. 아직 확인하지 않으셨다면 확인하신 후 다시 돌아오세요!
새로 고침 토큰만 사용하는 대신 이 모든 값을 사용함으로써, 유출된 새로 고침 토큰만으로 새로운 인증을 생성하는 것을 불가능하게 만듭니다. 누군가가 귀하의 통합인 것처럼 가장하여 토큰을 생성하려면 refresh_token 및 client_id가 모두 필요합니다.
다음과 같은 응답을 받아야 합니다.
이것이 귀하의 새로운 인증 토큰입니다. 토큰을 새로 고치고 나면 이전 토큰은 더 이상 작동하지 않으므로 이를 잘 보관해 두세요!
지금 이전 새로 고침 토큰을 사용하여 새로 고치려고 하면 다음과 같은 오류가 발생합니다.
토큰이 이미 새로 고쳐졌으므로 기존의 새로 고침 토큰을 사용하는 것은 유효하지 않습니다.
새로 고침 중 401 오류 발생 시
토큰을 새로 고치는 동안 401 Not Authorized 응답을 받았다면, 토큰이 더 이상 유효하지 않으므로 인증 프로세스를 다시 시작해야 합니다.
새로 고침 응답 누락
새로 고침 토큰은 한 번만 사용할 수 있습니다. 네트워크 오류나 예기치 않은 전원 재부팅으로 인해 토큰을 새로 고치기 위해 Frame.io에 호출을 보낸 후 응답을 놓치면 전체 인증/권한 부여 흐름을 다시 시작해야 합니다.
다소 번거로우시겠지만, 만일의 문제에 대비해 안전을 기하는 것이 좋습니다!
토큰 해지
경우에 따라 Frame.io에서 “로그아웃”하고 싶을 수 있습니다. 예를 들어, 사용자가 촬영을 완료한 후 더 이상 연결을 유지하고 싶지 않을 수 있습니다. 앱이 비정상적인 상태가 되어 초기화해야 하는 경우에도 인증을 취소하는 것이 좋습니다. 현재 인증을 폐기하고자 할 때마다 앱에서 인증 취소를 시도해야 합니다.
인증을 취소하려면 다음과 같이 호출합니다.
재인증하기
이 호출을 수행한 후에는 지난 가이드에 자세히 설명된 인증, 권한 부여 프로세스를 다시 시작해야 합니다.
응답에는 페이로드가 포함되지 않습니다. 명령에 --include를 사용하여 반환된 헤더를 출력했으며, 호출에 성공했다면 200 상태 코드로 시작해야 합니다.
이제 토큰이 해지되었으므로 access_token이 필요한 Frame.io에 대한 모든 호출은 Not Authorized를 반환하며, 사용자가 Frame.io 연결을 다시 사용하려면 Frame.io에 다시 로그인하여 프로젝트에 다시 연결해야 합니다.
토큰 저장하기
전원 주기 간에도 기능을 유지하려면 인증 헤더를 스토리지에 보관해야 합니다. 이는 파일, 데이터베이스, 또는 자체 클라우드에서 수행할 수 있습니다. 다음은 인증 토큰 저장에 대한 몇 가지 지침입니다.
사용자가 토큰을 보거나 액세스하지 못하도록 하세요. 사용자가 자신의 토큰을 보거나 검색할 수 있어서는 절대 안 됩니다. 토큰은 귀하의 앱에서, 오직 앱에서만 단독으로 관리해야 합니다. 스토리지에 저장된 토큰을 암호화하세요.client_id와 마찬가지로 액세스 토큰과 새로 고침 토큰은 키 도난을 방지하기 위해 가능하면 스토리지 보관 시 암호화해야 합니다. 인증 키는 평문으로 저장해서는 안 됩니다. **인증 토큰을 client_id와 동일한 파일에 저장하지 마세요.**예제 Python 앱은 client_id 및 device_id를 인증 토큰과 동일한 파일에 저장합니다. 이는 데모용으로는 괜찮지만 프로덕션 코드에서는 권장되지 않습니다. client_id 및 device_id는 디바이스의 정적 값이며 손실될 경우 디바이스 작동이 중지됩니다. 인증 토큰은 정적이 아니며 디바이스 수명 주기 동안 여러 번 다시 기록되어야 합니다. 새 토큰으로 파일을 업데이트하는 동안 디바이스의 전원이 끊기면 해당 파일이 손상되어 client_id가 손실될 수 있으며, 이로 인해 디바이스가 Frame.io에서 다시는 재인증할 수 없게 됩니다. 토큰을 분리해 두면 최악의 경우라도 사용자가 Frame.io에 다시 로그인하기만 하면 됩니다.
토큰을 저장하기 가장 적합한 곳은 SQLite와 같이 검증된 데이터베이스이지만, 최소한 인증 데이터는 다른 값과 분리해야 합니다.
다음 단계
아직 문의하지 않으셨다면 저희 팀에 문의한 후 다음 가이드로 계속 진행하시기 바랍니다. 여러분의 연락을 기다리겠습니다!