2017-12-27 13 views
0

Java에서 Firebase Admin SDK를 사용하여 사용자 정의 클레임이 설정된 사용자 정의 토큰을 처리하지 않습니다. 이제 토큰에 서명하는 데 사용되는 서비스 계정 파일이 안전하고 숨겨진맞춤 토큰을 사용하는 Firebase 인증을 사용하고 있습니까?

signInWithCustomToken("foundtokenfromserver"); 

: 나는 클라이언트 인터페이스 인 안드로이드 응용 프로그램에이를 다시 보내고과로 로그인하고 있습니다. 그러나 Database URL, API Key 및 Storage Bucket URL이 웹 파트에 노출되어 있으므로 누구나 자신의 앱을 만들 수 있다고 생각합니다. 나는 사용자를 자신의 노드로 제한하는 보안 규칙을 가지고있다.

내 주요 관심사입니다 :

누군가가 발행 년도 사용자 정의 토큰을 차단하고 저장합니다. 위의 FirebaseApp (노출 된 정보를 사용하여 생성됨)를 사용하여 로그인 할 때 토큰을 사용할 수 있습니까?

firebase가 그러한 오용을 방지하는 방법이 있습니까 (인증 도메인이 웹을 중지시킬 수 있지만 localhost는 어떨까요)?

+1

커스텀 토큰을 만든 적이 없으므로 그것에 대해 많이 말할 수는 없습니다. 그러나 노출되는 데이터베이스 URL, API 키 및 저장소 URL에 대해 걱정할 필요가 없습니다. 데이터베이스와 저장소에 보안 규칙이 공개로 설정되어 있지 않으면 그렇다면 누구나 URL ([check] (https://stackoverflow.com/questions/35418143/how-to-restrict-firebase-data-modification))에서 URL에 액세스 할 수 있습니다. api 키는 프로젝트의 이름을 짓는 다른 방법 일 뿐이므로 문제가되지 않습니다 (이 [post] (https://stackoverflow.com/questions/37482366/is-it-safe-to- firebase-apikey-to-the-public)) –

+0

그래도 알겠지만, 노출 된 사람들은 누구나 웹 및 Android (ios에 관한 idk)에서 FirebaseApp 인스턴스를 초기화 할 수 있습니다. 그리고 그들이 인증 토큰에 손을 대면, 나는 그들이 단지 인증을하거나 가면을 말하며 들어올 수 있을지 걱정됩니다. 또한 안드로이드 SDK가 투명하게 토큰을 새로 고침하여 평생 접근 할 수 있습니다. - \ – Kushan

+0

I 누구나 FirebaseApp 인스턴스를 초기화 할 수 있다고 생각하지 마십시오. Android에서는 앱을 초기화하기 위해'google_services.json' 파일이 필요하기 때문입니다. Firebase 호스팅을 사용하여 웹 응용 프로그램을 제공/배포하려면 웹에서 Firebase CLI에 로그인해야합니다. –

답변

1

일반적으로 서버에 인증 어설 션을 보낸 후에 만 ​​사용자 지정 토큰을 생성합니다. 예를 들어 전자 메일/암호를 사용하여 사용자 지정 인증 시스템을 사용 중일 수 있습니다. 또 다른 예는 지원되지 않는 OAuth 공급자를 사용할 수 있으며 응용 프로그램을 확인한 후에 공급자가 사용자를 이미 확인한 후 단언 (OAuth 자격 증명/인증 코드 등) 만 반환했다고 가정 할 수 있습니다. 또한 보안 TLS 연결을 사용하여 도청을 방지합니다.

+0

그래, 어설 션은 항상 먼저 발생하고 실제로 연결은 TLS 중 하나가 될 것입니다. 추측은 조금 편집증적인 것입니다. – Kushan