9

클라우드 기능을 트리거하기 전에 사용자가 firebase-authorized인지 확인하는 방법이 있습니까? (또는 함수 내에서)Firebase 용 클라우드 기능을위한 보안 HTTP 트리거

+2

가능한 복제 [에만 중포 기지 인증 된 사용자를 허용하는 중포 기지 클라우드 기능 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 샘플 클라우드 기능 샘플 저장소에는 in-depth example이 있습니다. 그것은이 같은 (SO 게시물에 대한 짧은 만든)를 찾습니다

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 
    }); 
}); 
관련 문제