본문 바로가기
버블 개발/중급

87. Authentication (중급) : API 인증 bearer token, 인증없이 접속, 사용자 인증, 관리자 인증

by 스타트업 사업가 마르코 2023. 8. 21.

이 섹션에서는 Bubble 애플리케이션에 대한 연결을 시작하는 클라이언트를 인증(Authentication)하는 방법에 대해 설명합니다.

  • 인증(Authentication)은 애플리케이션에 접속할 수 있는 리소스를 확인하기 위해 클라이언트 가 누구인지 식별하는 프로세스입니다.

 

(1) 소개

Data API와 Workflow API는 앱이 접속할 수 있는 리소스를 결정하기 위해 클라이언트가 자신을 인증하도록 설정할 수 있습니다. 간단히 말해서 데이터베이스 및 워크플로에 접속하려는 모든 외부 시스템이 암호를 사용하여 로그인하도록 요구할 수 있습니다.
  • 선택한 방법에 관계없이 *무기명 토큰(bearer token)을 사용하여 클라이언트를 인증하는 방법을 설명합니다. (인증을 사용하지 않는 경우 제외)

 

1. Bubble의 API 인증 - 무기명 토큰(bearer token) 방식

API 요청을 인증하는 방법에는 여러 가지가 있습니다. Bubble은 무기명 토큰이라는 방법을 사용합니다.
  • 무기명 토큰은 클라이언트가 누구 인지 식별하는 문자열입니다. 사용자 이름과 암호 역할을 모두 수행하며 API 요청 헤더에 포함됩니다. 토큰은 관리 API 키를 생성하거나 API 호출을 통해 사용자를 로그인하여 Bubble에 의해 생성됩니다.
  • 모든 RESTful API 요청은 이전 또는 이후 요청과 독립적으로 이루어지므로 인증이 필요한 앱으로 들어오는 모든 API 요청에 토큰을 포함해야 합니다.

 

2. Postman에서 무기명 토큰(bearer token)으로 인증

베어러 토큰(bearer token)은 HTTP 요청의 Authorization 헤더에 다음 형식으로 포함되어야 합니다.

Authorization: Bearer <token>

위의 예시에서 <token>은 실제 토큰 문자열을 나타냅니다. 마지막 문자열에 "<"와 ">"를 포함하지 마십시오.

예를 들어 Postman과 같은 애플리케이션에서 인증은 다음과 같아야 합니다.

 

postman 으로 인증 예시
postman에서 인증 테스트 예시

 

postman 인증 설정 예시

  • 요청 헤더의 맨 위 행에는 무기명 토큰(bearer token)이 있습니다. Authorization인증 탭( 헤더 탭의 왼쪽)에 추가되었고 Postman에서 자동으로 헤더에 추가했기 때문에 회색으로 표시됩니다.
  • 위 그림과 같이 포함되면 Bubble은 토큰을 인식하고 토큰이 나타내는 사용자의 권한(있는 경우)에 따라 호출에 응답합니다.

3. API 무기명 토큰(bearer token)은 얼마나 안전합니까?

  • 무기명 토큰(bearer token)은 쉽게 취소할 수 있고 제한된 수명을 가지며 개인 정보 보호 규칙에 따라 데이터 접속이 허용된 사용자와 연결할 수 있으므로 각 요청에서 사용자 이름과 암호를 보내는 연결 방식보다 더 안전합니다.
  • 베어러 토큰(bearer token)은 사용자의 장치를 분실하거나 도난당한 경우 쉽게 취소할 수 있는 반면 암호를 취소하려면 사용자가 모든 장치에서 암호를 재설정해야 합니다.
  • 토큰은 쿠키나 URL 매개변수보다 가로챌 가능성이 적은 헤더로 전송됩니다. Bubble이 생성한 토큰은 암호학적으로 안전한 것으로 간주됩니다. 즉, 쉽게 재구성할 수 없으며 길이가 32바이트입니다.

 

(2) 인증(Authentication) 방법

Bubble에서 설정할 수 있는 세 가지 인증 수준이 있으며 각각 고유한 장단점과 보안 결과가 있습니다.

아래 문서에서는 사용할 수 있는 세 가지 인증(Authentication) 방법에 대해 설명합니다.

1. 인증 없이 접속

  • 가장 기본적인 방법은 인증을 전혀 요구하지 않는 것입니다. 즉, 앱의 API에 대해 알고 있는 모든 인터넷 사용자는 데이터 API 설정에 노출된 모든 데이터 유형에 연결하고 원하는 대로 변경할 수 있습니다.
  • 일반적으로 이 옵션을 사용할 때는 매우 주의해야 합니다. API 호출은 다른 작업과 마찬가지로 앱의 사용량을 소모하므로 의도적으로 API를 공개적으로 설정할 때 많은 양의 호출이 서버 사용량의 많은 부분을 소모하게 될 수 있음을 고려해야 합니다.
  • URL Endpoint를 아무도 모르기 때문에 API가 안전하다고 생각하면 안 됩니다. Endpoint는 약간의 정보만으로 쉽게 구성할 수 있습니다. 난독화(Obfuscation)는 보안이 아닙니다. API를 진정으로 안전하게 유지하려면 적절한 인증이 필요합니다.

[인증 없이 데이터 API 설정]

인증 없이 데이터 API에 대한 액세스를 제공하려면 다음 설정을 지정해야 합니다.

  1. Settings - API에서 데이터 API 활성화
  2. 노출하려는 데이터 유형 활성화

마지막으로, API생성, API 수정 및 API삭제를 포함한 Everyone Else rule(규칙)의 모든 확인란을 선택하는 각 데이터 유형에 개인정보 보호 규칙을 설정합니다.

 

2. 사용자로 인증

1) 사용자 인증이란 무엇입니까?

  • 사용자 인증은 요청을 하는 클라이언트가 사용자로 인증하는 것을 의미합니다. 즉, 일반 앱 사용자와 마찬가지로 개인 정보 보호 규칙을 사용하여 액세스 권한이 있는 대상을 결정할 수 있습니다.
  • 클라이언트가 누구인지에 따라 다른 개인 정보 보호 규칙을 제공할 수 있으므로 최고 수준의 보안과 유연성을 제공하는 방법입니다.

2) 사용자 인증 설정 방법

  • 원칙적으로 클라이언트를 사용자로 로그인하는 것은 앱에서 일반 사용자로 로그인하는 것과 동일한 방식으로 이루어집니다. 단, Action이 API 워크플로에서 발생해야 한다는 점만 다릅니다. 사용자로 로그인하면 Bubble은 후속 호출에서 인증하는 데 사용할 수 있는 토큰을 반환할 수 있습니다.

 

[사용자 인증 설정]

사용자로 인증
사용자로 인증

  • API 워크플로의 Action으로 사용자를 로그인하면 Bubble은 후속 요청에서 클라이언트를 인증하는 데 사용할 수 있는 토큰으로 응답합니다.
  • 위의 예시에서는 이메일과 비밀번호를 API 워크플로우의 매개변수로 사용합니다.

 

3) 토큰은 얼마 동안 유효합니까?

토큰은 다음의 설정에 따라 다른 유효성을 가집니다.

  • 2단계 인증 없이 인증사용자 로그인 유지를 "아니요"로 설정하면 토큰의 유효 기간은 24시간입니다.
  • 사용자 로그인 유지를 "예"로 설정하면 토큰의 유효 기간은 12개월입니다.

 

  • 2단계 인증으로 인증
    • 사용자 로그인 유지를 "예"로 설정하면 토큰의 유효 기간은 1개월입니다.
    • 사용자 로그인 유지를 "아니요"로 설정하면 토큰의 유효 기간은 24시간입니다.
  • 토큰 취소- 토큰이 생성된 후 토큰을 취소하는 방법에는 두 가지가 있습니다.
    • 해당 토큰을 사용하는 클라이언트에서 사용자 로그아웃 작업을 호출할 수 있습니다.
    • 다른 사용자의 세션 로그아웃을 사용하여 워크플로를 실행 중인 세션을 제외한 모든 세션에서 사용자를 로그아웃 할 수 있습니다.

 

4) 클라이언트의 권한 제한

사용자 토큰을 사용하는 클라이언트의 액세스 수준과 권한을 제한하는 두 가지 방법이 있습니다.

  • 개인 정보 보호 규칙: 주요 보호 수준은 로그인한 사용자와 일치하는 개인 정보 보호 규칙을 설정하고 API를 통해 데이터를 찾고, 읽고, 만들고, 편집하고, 삭제할 수 있는 액세스 권한을 제어하는 것입니다.
  • 조건 : API 워크플로에서 사용자에 저장된 필드를 기반으로 워크플로 트리거를 제한하는 조건을 설정할 수 있습니다. 이는 사용자 인증 토큰으로 요청을 보내는 클라이언트에 적용됩니다.

 

3. 관리자로 인증

1) 토큰 인증이란 무엇입니까?

요청을 하는 클라이언트가 " Settings > API "에서 새 API 토큰 생성 버튼을 사용하여 생성된 토큰을 사용하여 인증하는 것을 의미합니다.

  • 이렇게 하면 클라이언트가 데이터베이스에 무제한으로 액세스 할 수 있습니다.
  • 토큰 인증은 클라이언트에게 데이터베이스 및 API 워크플로우에 대한 가능한 가장 광범위한 액세스를 제공합니다. 그러므로 주의해서 사용해야 합니다.

2) 관리자 인증 설정 방법

관리자 인증을 설정하려면 Settings > API로 이동하고 아래의 사진과 같은 새 API 토큰 생성 버튼까지 아래로 스크롤합니다.

  • 버튼을 클릭하면 Bubble은 당신이 원하는 모든 API 요청에 대한 토큰 역할을 하는 고유하고 암호학적으로 안전한 32자 문자열을 생성합니다.
  • 애플리케이션에 연결된 외부 시스템이 둘 이상인 경우 여러 토큰을 만들 수 있습니다. 필요한 경우 하나씩 해지할 수 있도록 시스템당 하나의 토큰을 생성하는 것이 좋습니다.

토큰은 앱의 모든 버전에서 동일하지만 토큰에 대한 모든 변경 사항(토큰 생성 및 삭제 포함)을 업데이트하려면 라이브로 배포해야 합니다.

 

3) 관리자 인증은 어떤 권한을 부여합니까?

원칙적으로 관리자가 Bubble 편집기에서 얻을 수 있는 것과 동일한 권한을 부여합니다. 즉, 데이터베이스에서 검색, 보기, 생성, 편집 및 삭제할 수 있는 항목에 제한이 없으며 모든 API 워크플로를 실행할 수 있습니다.

다음처럼 몇 가지 예외가 있습니다.

  • 데이터 API에서는 데이터 API 설정에서 노출한 데이터 유형만 액세스 할 수 있습니다.
  • Workflow API에서는 공개 API로 노출 워크플로 체크 박스가 선택된 워크플로만 액세스할 수 있습니다.

4) 라벨링 관리자 인증

  • 생성한 각 토큰에는 쉽게 식별할 수 있도록 자체 레이블을 설정할 수 있습니다.
  • 토큰이 사용되는 용도를 명확하게 나타내는 레이블을 각각에 이름으로 설정하는 것이 좋습니다.
  • 레이블은 어떤 식으로든 토큰의 기능에 영향을 주지 않으며 클라이언트 또는 애플리케이션의 클라이언트 측 코드에 표시되지 않습니다.

 

[토큰의 이름 레이블링 정하기]

토큰 이름 정하기
토큰 이름 정하기

5) 관리자 인증 토큰 삭제

  • 토큰을 삭제하려면 해당 토큰으로 스크롤하고 오른쪽 상단 모서리에 있는 '휴지통'(삭제) 아이콘을 클릭합니다.
  • 관리자 토큰은 삭제될 때까지 유효합니다.