वेब ऐप्लिकेशन में App Check की मदद से, Firebase से बाहर के संसाधनों को सुरक्षित रखना

Firebase को छोड़कर, अपने ऐप्लिकेशन के संसाधनों को सुरक्षित रखा जा सकता है. उदाहरण के लिए, खुद होस्ट किए गए बैकएंड, को ऐप्लिकेशन की जांच करने की सुविधा मिलती है. ऐसा करने के लिए, आपको ये दोनों काम करने होंगे:

  • अपने ऐप्लिकेशन क्लाइंट में बदलाव करें, ताकि वह हर अनुरोध के साथ App Check टोकन भेज सके अपने बैकएंड के लिए उपलब्ध है, जैसा कि इस पृष्ठ पर बताया गया है.
  • अपने बैकएंड में बदलाव करें, ताकि हर अनुरोध के साथ एक मान्य ऐप्लिकेशन चेक टोकन ज़रूरी हो. जैसा कि कस्टम बैकएंड से, ऐप्लिकेशन की जांच वाले टोकन की पुष्टि करने में बताया गया है.

शुरू करने से पहले

इनमें से किसी एक का इस्तेमाल करके, अपने ऐप्लिकेशन में ऐप्लिकेशन की जांच करने की सुविधा जोड़ें re कैप्चा Enterprise प्रोवाइडर या पसंद के मुताबिक सेवा देने वाली कंपनी का इस्तेमाल करें.

बैकएंड अनुरोधों के साथ, ऐप्लिकेशन की जांच वाले टोकन भेजें

अपने ऐप्लिकेशन क्लाइंट में, हर अनुरोध से पहले, एक मान्य, जिसकी समयसीमा खत्म न हुई हो, और ऐप्लिकेशन की जांच की जानकारी पाएं appCheck().getToken() के साथ टोकन. App Check लाइब्रेरी से, टोकन का उपयोग करें.

आपको मान्य टोकन मिलने के बाद, उसे अपने बैकएंड पर अनुरोध के साथ भेजें. कॉन्टेंट बनाने यह आप पर निर्भर करता है कि आप इसे कैसे पूरा करते हैं, लेकिन यूआरएल के हिस्से के तौर पर ऐप्लिकेशन की जांच के टोकन. इसमें क्वेरी पैरामीटर भी शामिल हैं. इनके अलावा, इनमें गलती से होने वाले लीक और इंटरसेप्शन का खतरा ज़्यादा होता है. नीचे दिए गए उदाहरण के लिए, कस्टम एचटीटीपी हेडर में टोकन भेजा गया है. हमारा सुझाव है कि अप्रोच का इस्तेमाल करें.

Web

import { initializeAppCheck, getToken } from '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

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.
};

रीप्ले प्रोटेक्शन (बीटा वर्शन)

किसी ऐसे एंडपॉइंट को अनुरोध करते समय जिसके लिए आपने अनुरोध किया है फिर से चलाने पर मिलने वाली सुरक्षा, getToken() के बजाय, getLimitedUseToken() का इस्तेमाल करके टोकन हासिल करना:

import { getLimitedUseToken } from "firebase/app-check";

// ...

appCheckTokenResponse = await getLimitedUseToken(appCheck);