1

내가 중포 기지의 데이터베이스를 이용하고 있고Firebase 데이터베이스 보안 규칙이 인증 된 REST API에 적용되지 않는 이유는 무엇입니까?

".write":false 

읽기를 테스트하기위한 하나의 보안 규칙을 설정하는 것은 항상 참이다.

이제 클라이언트 측 SDK가있는 안드로이드 앱에 무엇이든 쓸 때 쓰기는 데이터베이스의 모든 곳에서 예상대로 거부됩니다.

그러나 인증 된 REST API 패치 요청을 사용하여 아무 곳이나 쓸 수 있으면 항상 성공합니다. (자격 증명은 서비스 계정을 사용하여 충분한 범위로 생성) 않습니다

 //googleCredAhmedabad and scopedAhmedabad are GoogleCredential objects 

     InputStream is = getServletContext().getResourceAsStream("/WEB-INF/firebaseauth/myserviceaccountfile.json"); 

     googleCredAhmedabad = GoogleCredential.fromStream(is); 

     scopedAhmedabad = googleCredAhmedabad.createScoped(
       Arrays.asList(
         "https://www.googleapis.com/auth/firebase.database", 
         "https://www.googleapis.com/auth/userinfo.email" 
         ) 
       ); 

     scopedAhmedabad.refreshToken(); 

     String myToken = scopedAhmedabad.getAccessToken(); 

는 REST API 호출 트럼프 보안 규칙 인증 : 다음과 같이

토큰이 생성됩니다?

+0

보안 규칙은 클라이언트 측 (android 및 ios) 및 웹 측 sdks에만 적용됩니다. – Kushan

답변

2

Firebase Documentation에 언급 :

정식 요청 매개 변수가 중포 기지 실시간 데이터베이스 규칙에 의해 보호되는 데이터에 액세스 할 수 있습니다, 모든 요청 유형에 의해 지원됩니다. 인수는 Firebase 앱 비밀번호 또는 인증 토큰 일 수 있습니다. 여기서는 사용자 인증 섹션에서 다루겠습니다.

인증 된 REST API를 사용하고 있다고 언급 했으므로 auth 매개 변수가 설정되어 있다고 가정합니다. 맞습니다. 보안 규칙은 인증 된 REST API에는 적용되지 않습니다.

+0

예기치 못한 인증 토큰없이 테스트했습니다. 서비스 계정을 사용하여 만든 기본 자격 증명은 adminsdk와 같은 전체 관리 권한을 부여합니다. 그리고 adminsdk와는 달리 가능한 인증을 무시할 수 없습니다 :) 어떻게 든 docs에서 그 부분을 놓쳤습니다, 감사합니다 :) – Kushan