2017-03-24 10 views
0

firebase Admin Auth API을 사용하여 id-token-verification을 사용하여 사용자를 인증하는 웹 사이트를 nodejs (expressjs)에 생성합니다.로그인 한 각 사용자에 대해 관리자 용 Firebase 응용 프로그램 초기화

그러면이 토큰은 서버 세션에 저장되어 서버에서 생성되는 실시간 데이터베이스에 대한 쿼리에 사용됩니다.

제한 권한에 대한 내 질문, 워드 프로세서는 databaseAuthVariableOverride 사용하여 사용자를 모방하는 데 사용되어야한다는 말을 자신의 uid

당신이 접근 같은 사용자의 행동을 모방하도록 서버를 원하는 경우 Taken from the admin auth docs:

Firebase Realtime Database를 해당 사용자로 사용하려면 먼저 해당 사용자의 ID 토큰을 확인하고 디코딩해야합니다. 그런 다음, databaseAuthVariableOverride 옵션의 사용은 각각의 사용자에 대한 서버

의 권한을 제한합니다

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: userId1 
    } 
}, userId1) 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: userId2 
    } 
}, userId2) 

로그인 한 각 사용자에 대해 새 firebaseApp를 초기화하는 것이 가능 있을까, 또는 여러 사용자에 대한 제한 권한을 처리하는 표준 방법이 있습니까?

답변

3

관리자 SDK의 사용 방법이 정확하지 않습니다. 이 방식으로 사용자를 시뮬레이션 할 수는 있지만 모범 사례는 아닙니다.

사용자는 클라이언트를 통해 자신의 데이터를 읽고 쓰게되어 있습니다. 보안 규칙은 사용자가 원하는 규칙으로 재생할 수 있다고 믿을 수 없기 때문에 존재합니다.

서버에서 모든 논리를 제어하므로 최종 사용자를 시뮬레이트 할 필요가 없습니다. 자신의 코드가 읽고 쓰는 모든 데이터로 올바른 작업을 수행 할 수 있다고 믿을 수 있기 때문입니다.

uid 속성은 최종 사용자를 시뮬레이트하지 않고 사용자가 제어하는 ​​다른 유형의 관리 역할에 대한 권한을 일시적으로 떨어 뜨리기위한 것입니다. 이 uid는 일반적으로 해당 역할이나 서비스에 대한 권한 수준을 정의하는 보안 규칙에 하드 코딩됩니다. 이것이 어떻게 작동하는지에 대한 더 나은 설명 can be found here. (이 단어는 귀하가 인용 한 문서의 일부인 "여기"에 대한 링크입니다.)