4

Firebase 웹 응용 프로그램 사용자가 서버에서 프로그래밍 방식으로 Firebase Realtime Database에 액세스 할 수있게 해주는 API를 만들고 싶습니다.Firebase 3를 사용하여 API 만들기

몇 가지 옵션을 살펴 보았지만 앞으로 나아갈 수있는 최상의 방법에 대한 권장 사항을 얻는 것이 좋습니다. 여기에 지금까지 시도한 작업은 다음과 같습니다

  1. 이 서비스 계정 사용 - 원래 나는 그들이 중포 기지와 상호 작용하는 자신의 서버에 구성 할 수있는 서비스 계정에 내 응용 프로그램 액세스를 사용자에게 제공에 대한 생각 실시간 데이터베이스. 특정 userId가있는 노드에서만 읽기/쓰기 액세스 만 허용하는 규칙을 설정하여 데이터베이스의 일부분에만 사용자의 액세스를 제한했습니다. 사용자에게 userId에 대한 액세스 권한을 부여하면 사용자가 노드에 글을 쓸 수 있지만 다른 사람에게는 쓸 수 없습니다. 그러나 이것은 사용자들에게 Firebase 서비스 계정에 대한 액세스 권한을 부여하는 것은 매우 안전하지 않으며 이러한 이유 때문에 이것을 실현 가능한 방법으로 할인 한 것으로 생각됩니다.

  2. 이메일/비밀번호 REST 인증 - 난 REST Using mail and password to authenticate via the REST API [Firebase]을 통해 중포 기지 인증에 관한이 게시물을 가로 질러왔다. 필자는이 방법을 테스트 해 보았습니다.이 방법을 사용하여 사용자가 전자 메일과 암호를 사용하여 서버에서 프로그래밍 방식으로 로그인하고 위의 방법을 사용하여 토큰을 만든 다음 Firebase에 실시간으로 액세스 할 수있게 할 수 있다고 생각했습니다. 정상 REST 쿼리와 함께 토큰을 사용하는 데이터베이스 - https://firebase.google.com/docs/reference/rest/database/#section-param-auth. 이것이 정상적으로 작동한다고 생각하지만 문서화되지 않은/지원되지 않는 API를 사용하고 있으므로 가능한 경우 피하고 싶습니다.

  3. 는 AWS 람다에서 중포 기지 서비스 계정 포장 - 내가 시도한 세 번째 옵션은 AWS 람다 함수에 중포 기지 서비스 계정 노동자 포장 및 사용자가 호출 할 수있는 API를 만들기 위해 AWS API 게이트웨이를 사용되면, 사용자는 요청에 userId를 포함시키고 AWS Lambda에서 실행중인 서비스 계정 작업자는 요청에 대한 유효성 검사를 수행 한 다음 Firebase 실시간 데이터베이스를 업데이트합니다. 이는 기본적으로 옵션 1과 동일하지만 사용자로부터 서비스 계정 자격 증명을 숨겨 안전하다고 생각합니다. 이 접근법의 단점은 Firebase 실시간 데이터베이스 호출과 AWS Lambda/API Gateway 호출에 대해 비용이 청구된다는 것입니다.

최선의 방법으로 조언을 구하거나 내가 고려하지 않은 다른 옵션이 있다면 좋을 것입니다.

+0

I ' 당신이 이것을 어떻게 진행했는지 듣고 싶습니다. 블로그 게시물이나 뭐 썼을 가능성이 있니? – pedalpete

답변

1

비슷한 문제를 해결하는 방법을 살펴 보았으므로 아직 직접 해결책을 구현 한 경험이 없습니다.

tl; dr : 2 번 투표.

# 1 - 인증/인증 관점에서 서비스 계정을 만들 수 있다면 Google Cloud에서 여러 서비스 계정을 관리해야만 완전히 새로운 복잡성 계층을 추가 할 수있을 것이라고 생각합니다. 계기반.

# 3 - 사실 이것은 잘 작동 할 수 있습니다. AWS added the ability to authenticate API Gateway calls과 같이 간단한 자동 크기 조정 Google 클라우드 컴퓨팅 (또는 클라우드 기능)을 수행하려는 경우 Google Cloud Endpoints은 요청을 인증 할 수있는 동일한 기능을 갖추고있는 것처럼 보이지만 아마도 firebase auth에 더욱 긴밀하게 통합되어 있습니다. 모든 firebase auth 의존도를 추상화하고 API keys,을 사용하여 모든 사용자에게 표시되는 일반 API 인터페이스를 사용할 수도 있습니다.자신의 uidfirebase-admin 키트로 설정할 수 있으므로 1 : 1 API Key:Firebase UID 매핑이 트릭을 수행 할 수 있다고 생각합니다.

# 2는 아마도 일시적인 해결책 일 수 있지만 이미 작동하게 만들었 기 때문에 쉬운 선택 인 것으로 보입니다. 필자는 그것이 기능의 오프 - 더 - 북 (off-the-books) 사용법과 비슷하다고 생각하지만 지금은 충분히 좋으며 조숙 한 최적화가 모든 악의 뿌리임을 기억하십시오 :)

관련 문제