App Checkを使用すると、自己ホスト型バックエンドなど、アプリのFirebase以外のリソースを保護できます。これを行うには、次の両方を行う必要があります。
- このページで説明されているように、アプリクライアントを変更して、各リクエストとともにアプリチェックトークンをバックエンドに送信します。
- カスタムバックエンドからのアプリチェックトークンの確認で説明されているように、リクエストごとに有効なアプリチェックトークンを要求するようにバックエンドを変更します。
あなたが始める前に
reCAPTCHA v3プロバイダー、 reCAPTCHA Enterpriseプロバイダー、またはカスタムプロバイダーのいずれかを使用して、アプリにアプリチェックを追加します。
バックエンドリクエストでアプリチェックトークンを送信する
アプリクライアントで、各リクエストの前に、 appCheck().getToken()
を使用して有効な有効期限の切れていないアプリチェックトークンを取得します。 App Checkライブラリは、必要に応じてトークンを更新します。
有効なトークンを取得したら、リクエストと一緒にバックエンドに送信します。これを実現する方法の詳細はあなた次第ですが、アプリチェックトークンをURLの一部として、クエリパラメータを含めて送信しないでください。これにより、偶発的なリークや傍受に対して脆弱になります。次の例では、カスタムHTTPヘッダーでトークンを送信します。これは推奨されるアプローチです。
Web version 9
const { initializeAppCheck, getToken } = require('firebase/app-check'); const appCheck = initializeAppCheck( app, { provider: provider } // ReCaptchaV3Provider or CustomProvider ); const callApiWithAppCheckExample = async () => { let appCheckTokenResponse; try { appCheckTokenResponse = await getToken(appCheck, /* forceRefresh= */ false); } catch (err) { // Handle any errors if the token was not retrieved. return; } // Include the App Check token with requests to your server. const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', { headers: { 'X-Firebase-AppCheck': appCheckTokenResponse.token, } }); // Handle response from your backend. };
Web version 8
const callApiWithAppCheckExample = async () => { let appCheckTokenResponse; try { appCheckTokenResponse = await firebase.appCheck().getToken(/* forceRefresh= */ false); } catch (err) { // Handle any errors if the token was not retrieved. return; } // Include the App Check token with requests to your server. const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', { headers: { 'X-Firebase-AppCheck': appCheckTokenResponse.token, } }); // Handle response from your backend. };