9

在觸發雲端功能之前,有沒有方法可以檢查用戶是否經過Firebase授權? (或在功能範圍內)用於Firebase雲端功能的安全HTTP觸發器

+2

的可能的複製[如何保護火力雲功能HTTP端點只允許火力地堡驗證的用戶?](http://stackoverflow.com/questions/ 42751074 /如何做保護,火力點雲功能-HTTP-端點到允許只-火力驗證) –

回答

30

是的。您需要將Firebase ID令牌與請求一起發送(例如,在AJAX請求的Authorization標頭中),然後使用Firebase Admin SDK對其進行驗證。 Firebase樣本存儲庫的Cloud Functions中有一個in-depth example。它看起來是這樣的(這麼崗位上做出了更短):

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
const cors = require('cors')(); 

const validateFirebaseIdToken = (req, res, next) => { 
    cors(req, res,() => { 
    const idToken = req.headers.authorization.split('Bearer ')[1]; 
    admin.auth().verifyIdToken(idToken).then(decodedIdToken => { 
     console.log('ID Token correctly decoded', decodedIdToken); 
     req.user = decodedIdToken; 
     next(); 
    }).catch(error => { 
     console.error('Error while verifying Firebase ID token:', error); 
     res.status(403).send('Unauthorized'); 
    }); 
    }); 
}; 

exports.myFn = functions.https.onRequest((req, res) => { 
    validateFirebaseIdToken(req, res,() => { 
    // now you know they're authorized and `req.user` has info about them 
    }); 
}); 
相關問題