Skip to content

Latest commit

 

History

History
259 lines (189 loc) · 5.82 KB

File metadata and controls

259 lines (189 loc) · 5.82 KB

Firebase Authentication Requirements

Overview

To properly test Firebase functions and Firestore operations, you need authentication for:

  1. Writing to Firestore → Firebase Auth to write data
  2. Calling Functions → Firebase Auth to call secured functions
  3. Monitoring Results → Firebase Auth to check logs and status

Authentication Methods

Method 1: Firebase CLI Authentication (Recommended)

# Setup authentication
firebase login --no-localhost

# Set project
firebase use PROJECT_ID

# Test authentication
firebase projects:list

Method 2: Google Cloud Authentication

# Setup authentication
gcloud auth login

# Set project
gcloud config set project PROJECT_ID

# Test authentication
gcloud auth print-access-token

Method 3: Service Account (For Production)

# Create service account
gcloud iam service-accounts create firebase-sa \
    --display-name="Firebase Service Account"

# Grant permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:firebase-sa@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/datastore.user"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:firebase-sa@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/cloudfunctions.invoker"

Complete Setup Process

Step 1: Setup Authentication

# Navigate to your project directory
cd /path/to/your/firebase-project

# Authenticate with Firebase
firebase login --no-localhost
firebase use PROJECT_ID

Step 2: Test Authentication

# Test Firebase access
firebase projects:list

# Test Google Cloud access
gcloud auth print-access-token

Step 3: Test Functions

# Run test scripts
./remote/test-functions-consolidated.sh

What Each Step Requires

Writing to Firestore:

  • Firebase CLI Auth - To write to Firestore
  • Project Access - To access your project
  • Firestore Permissions - To create/update documents

Calling Functions:

  • Google Cloud Auth - To get access tokens
  • Function Permissions - To call secured functions
  • Bearer Token - For API authentication

Monitoring Results:

  • Firebase CLI Auth - To check logs
  • Firestore Access - To read processed data
  • Function Logs - To monitor execution

Testing Without Full Authentication

If you can't set up authentication immediately, you can still test:

1. Manual Firestore Population

# Go to Firebase Console
https://console.firebase.google.com/project/PROJECT_ID/firestore

# Add documents manually through the console UI
# Collection: your_collection
# Document ID: your_document_id
# Fields: your data fields

2. Test Function Status

# Check if functions are deployed (no auth needed)
firebase functions:list

# Test function accessibility (no auth needed)
curl -s -w "Status: %{http_code}\n" "https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME"

3. Monitor in Console

  • Check Firebase Console for function logs
  • Check Firestore for processed data
  • Monitor function execution status

Troubleshooting Authentication

Firebase CLI Issues:

# Clear and re-authenticate
firebase logout
firebase login --no-localhost

# Check current user
firebase projects:list

Google Cloud Issues:

# Clear and re-authenticate
gcloud auth revoke --all
gcloud auth login

# Check current user
gcloud auth list

Permission Issues:

# Check project access
gcloud projects list

# Check IAM permissions
gcloud projects get-iam-policy PROJECT_ID

Required Permissions

For Writing to Firestore:

  • roles/datastore.user - Write to Firestore
  • roles/firebase.admin - Full Firebase access

For Calling Functions:

  • roles/cloudfunctions.invoker - Call functions
  • roles/cloudfunctions.developer - Deploy functions

For Monitoring:

  • roles/logging.viewer - View function logs
  • roles/datastore.viewer - Read Firestore data

Quick Start Guide

Option A: With Authentication (Recommended)

# 1. Setup authentication
firebase login --no-localhost
firebase use PROJECT_ID

# 2. Test authentication
firebase projects:list

# 3. Test functions
./remote/test-functions-consolidated.sh

Option B: Without Authentication (Manual)

# 1. Add data manually in Firebase Console
# 2. Test function status
firebase functions:list
# 3. Monitor in Firebase Console

Success Indicators

Authentication Working:

  • firebase projects:list returns project list
  • gcloud auth print-access-token returns token
  • firebase firestore:get works (if document exists)

Functions Working:

  • ✅ Functions return 403 (secured) or 200 (with auth)
  • ✅ Function logs show execution
  • ✅ Firestore contains processed data

Data Accessible:

  • ✅ Firestore contains documents
  • ✅ Data is accessible through console
  • ✅ Functions can process data

Production Considerations

For Production Use:

  1. Service Account - Use service account instead of user auth
  2. Environment Variables - Store credentials securely
  3. IAM Roles - Grant minimal required permissions
  4. Monitoring - Set up proper logging and alerts
  5. Backup - Regular Firestore backups

Security Best Practices:

  • Use service accounts for automated operations
  • Grant minimal required permissions
  • Rotate credentials regularly
  • Monitor access logs
  • Use Firebase Security Rules

Ready to Test!

Once authentication is set up, you can:

  1. Write data to Firestore
  2. Call functions securely
  3. Monitor results in real-time
  4. Scale up for production use

Your Firebase project is ready for comprehensive testing with proper authentication!