0

애플리케이션 용 API로 작동하는 일련의 Firebase 함수가 있습니다. 관리자 권한으로 Firebase Cloud 기능에서 데이터베이스 인증을 가장하는 방법은 무엇입니까?

이 중포 기지 기능

이 같은 관리자 권한으로 데이터베이스에 연결 :

const serviceAccount = require(`./config/xxx-firebase-adminsdk.json`); 
admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: DATABASE_URL, 
}); 

나는 사용자 정의 토큰 내가 서버에 디코딩/수신 있어요을 만들 수 있었다 그러나 나는의 사용을 할 수 없습니다 Firebase 기능은 관리자 권한으로 인증되기 때문에 보안 규칙이 적용됩니다.

데이터베이스에 액세스 할 때 자격 증명을 가장하거나 다른 사용자를 전달할 수 있습니까? documentation에 설명 된대로

답변

1

당신은 사용자 수준의 권한을 가진 관리자 SDK를 초기화 할 수 있습니다 : 당신이 이미 기본 인스턴스를 초기화 한 경우

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: "the-user-id" 
    } 
}, "some-other-name"); 

"일부-다른 이름"이 필요합니다. 자세한 내용은 initializeApp()을 참조하십시오.

이 작업을하려면 분명히 인증 된 사용자의 UID를 알아야합니다. 또한, 다른 사용자와 무언가를하고 싶을 때마다 SDK를 초기화해야한다는 것은 분명합니다. UID가 다를 수있는 모든 함수 호출에서 init을해야한다는 것을 의미합니다.

+0

나는 그것을 시도했지만 "initializeApp"는 한 번만 호출 할 수 있다고 말한다. 내가 따라야하는 패턴은 이상한 것이 아니며, 왜 문서에 설명되어 있는지 궁금해합니다. 서비스의 액세스 수준을 낮추려면 uid를 재정의 할 수 있다고 말하면됩니다. – martosoler

+0

OK, 이미 다른 FirebaseApp 객체를 초기화해야합니다. 기본값이 아닌 인스턴스를 초기화해야하며 두 번째 매개 변수에 전달 된 이름을 지정해야합니다. 일치하는 답변을 업데이트했습니다. –

관련 문제