9

クラウド機能をトリガーする前にユーザーがfirebase-authorizedであるかどうかを確認する方法はありますか? (または機能内)Firebaseのクラウド機能用のセキュアなHTTPトリガー

+2

[Firebase認証済みのユーザーだけを許可するfirebase Cloud Function HTTPエンドポイントを保護する方法は?](http://stackoverflow.com/questions/) 42751074/how-to-protect-firebase-cloud-function-http-endpoint-to-allow-only-firebase-auth) –

答えて

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 
    }); 
}); 
関連する問題