تأیید پیام درخواست را برای اطمینان از اینکه درخواستهای Checkout و ارسال سفارش به نقطه پایانی انجام شما از طرف Google میآیند و از تماس اشخاص ثالث غیرمجاز با نقطه پایانی شما جلوگیری میکند، اجرا کنید.
تأیید پیام با استفاده از JWT
درخواستهایی به نقطه پایانی شما که از سفارش سرورهای End-to-End میآیند حاوی یک نشانه وب JSON (JWT) امضا شده در سرصفحه Authorization
برای امنیت هستند. توکن توسط یک سرویس مجوز مشترک ایجاد میشود که میتواند توسط Google و اجرای نقطه پایانی شما فراخوانی شود.
- Google با استفاده از سرویس مجوز و شناسه پروژه پروژه سفارش غذای شما، یک JWT امضا شده ایجاد میکند.
- Google رمز امضا شده در سرصفحه
Authorization
هر درخواست را به نقطه پایانی شما ارسال می کند. - نقطه پایانی شما باید رمز امضا شده را با استفاده از کتابخانه Google Auth رمزگشایی کند. توکن رمزگشایی شده حاوی جزئیاتی مانند شناسه پروژه، صادرکننده، زمان انقضا و زمان صدور است. از این داده ها برای تعیین صحت درخواست استفاده کنید.
برای اجرای تأیید درخواست برای پروژه خود، این مراحل را دنبال کنید:
- JWT را از سربرگ
Authorization
درخواست های دریافتی استخراج کنید. - رمز را با استفاده از کتابخانه Google Auth رمزگشایی کنید.
-
audience
توکن را روی ID پروژه خود تنظیم کنید. - صادرکننده، شناسه پروژه و سایر اطلاعات موجود در محموله توکن را برای صحت بررسی کنید.
کتابخانه مجوز Google
برای تأیید پیامها از Ordering End-to-End و ایجاد کدهای مجوز برای پیامهایی که سرویس وب شما به Google ارسال میکند، از کتابخانه Google Auth به زبان برنامهنویسی انتخابی خود استفاده کنید:
- کتابخانه تأیید اعتبار Google برای Node.js
- کتابخانه اعتبار گوگل برای پایتون
- کتابخانه تایید گوگل برای جاوا
یکی از این کتابخانه ها را دانلود و به کد پیاده سازی وب سرویس خود اضافه کنید.
نمونه های تایید را درخواست کنید
مثالهای زیر نحوه اجرای تأیید درخواست را نشان میدهند:
Node.js
const auth = require('google-auth-library') const authClient = new auth.OAuth2Client() /** * Verifies that an incoming request came from Google. * @param {String} idToken - The ID token used to verify the request * (i.e. The value found in the Authorization header of an incoming request). * @param {String} audience - The expected audience of the request * (i.e. The project ID for your project). * @return {boolean} True if request came from Google, false otherwise. */ function isRequestFromGoogle(idToken, audience) { authClient.verifyIdToken({idToken, audience}, (err, info) => { return !(err || info['iss'] !== 'https://accounts.google.com') }) }
پایتون
from google.oauth2 import id_token from google.auth.transport import requests def isRequestFromGoogle(audience, token): """ Verifies that an incoming request came from Google. Args: audience (str): The expected audience of the request (i.e. The project ID for your project) token (str): The ID token used to verify the request (i.e. The value found in the Authorization header of an incoming request) Returns: True if the request came from Google, False otherwise. """ id_info = id_token.verify_oauth2_token(token, requests.Request(), audience) return id_info['iss'] == 'https://accounts.google.com'
جاوا
/** * Verifies that an incoming request came from Google. * @param audience The expected audience of the request * (i.e. The project ID for your project) * @param token The ID token used to verify the request * (i.e. The value found in the Authorization * header of an incoming request) * @return {@code true} if request is from Google, else {@code false} */ public boolean isRequestFromGoogle(String audience, String token) { GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier .Builder(transport, jsonFactory) .setAudience(Collections.singletonList(audience)) .build(); GoogleIdToken idToken = verifier.verify(token); if (idToken == null) return false; Payload payload = idToken.getPayload(); String issuer = (String) payload.get("iss"); return issuer.equals("https://accounts.google.com"); }