驗證使用者

本頁面說明如何在 API 中使用 Cloud Endpoints Frameworks 從用戶端應用程式新增支援,以進行使用者驗證。請注意,目前支援 Android 和 JavaScript 用戶端。

Endpoints Frameworks 支援使用以下任何方法的用戶端應用程式進行使用者驗證:

無論使用哪種驗證方法,在每種 API 方法中檢查正確驗證時,您都必須檢查有效的 User。您可於下列各文找到相關說明:

必備條件

本頁假設您已具備以下條件:

  • 建立 Google Cloud 專案

  • 已新增 API 管理

  • 若您在用戶端程式庫使用 JWT 將經過驗證的請求傳送到 API,則 JWT 必須位於 HTTP 請求的授權標頭中。JWT 應具備以下所需的聲明:

    • iss
    • sub
    • aud
    • iat
    • exp

使用 Firebase Auth 進行驗證

若要支援使用 Firebase Auth 的呼叫:

  1. 匯入 API 類別中的 App Engine Endpoints API:

    import endpoints
    
  2. 為每個用戶端新增 Firebase 發行者物件至 API 裝飾器。例如:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'firebase': endpoints.Issuer(
            'https://securetoken.google.com/YOUR_PROJECT_ID,
            'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
    
    • YOUR_API_NAME 替換為您的 API 名稱。
    • VERSION_NUMBER 替換為您的 API 版本,例如 v1
    • 將 code>YOUR_PROJECT_ID 替換為用戶端的 Google Cloud專案 ID。
  3. 在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的 User;如果沒有,請發出 error 401。具體做法如以下的範例方法定義所示:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. 部署 Endpoints API。每當您新增用戶端時,都需要重新部署 Endpoints API。

將 Firebase 驗證新增到用戶端

您可以按照 Firebase 說明文件,將 Firebase 驗證新增至您的程式碼中。用戶端必須具有與驗證相關的 Google Cloud 專案,且專案 ID 必須列於 API 的 Firebase 發行者設定中。

使用 Auth0 進行驗證

若要從使用 Auth0 的用戶端支援呼叫:

  1. 將 App Engine Endpoints API 匯入至您的 API 類別:

    import endpoints
    
  2. 將每個用戶端的 Auth0 發行者物件新增至 API 裝飾器。例如:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'auth0': endpoints.Issuer(
            'https://YOUR_ACCOUNT_NAME.auth0.com',
            'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
    
    • YOUR_API_NAME 替換為您的 API 名稱。
    • VERSION_NUMBER 替換為您的 API 版本,例如 v1
    • YOUR_ACCOUNT_NAME 替換為用戶端的 Auth0 帳戶名稱。
  3. 在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的 User;如果沒有,請發出 error 401。具體做法如以下的範例方法定義所示:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. 部署 API。當您新增新用戶端時,需要重新部署 API。

將 Auth0 驗證新增到用戶端

您可以按照 Auth0 說明文件,將 Auth0 驗證新增至您的程式碼中。用戶端必須列在 API 的 Auth0 發行者設定中。

使用 Google ID 憑證進行驗證

如要支援使用 Google ID 憑證進行驗證的用戶端呼叫,請按照以下步驟操作:

  1. 為每個用戶端應用程式取得 OAuth 2 用戶端 ID。用戶端應用程式擁有者必須透過 Google Cloud 控制台產生用戶端 ID。如需操作說明,請參閱「建立用戶端 ID」。

  2. 將 App Engine Endpoints API 匯入至您的 API 類別:

    import endpoints
    
  3. allowed_client_ids 中指定您要授予 API 存取權的所有用戶端 ID,並在 API 裝飾器audiences 欄位中指定屬於 Android 用戶端的用戶端 ID。例如:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        allowed_client_ids=ALLOWED_CLIENT_IDS,
        audiences=[ANDROID_AUDIENCE])
    class AuthedGreetingApi(remote.Service):
        # ...
    

    ALLOWED_CLIENT_IDS 替換為從每個用戶端專案產生的 OAuth 2 用戶端 ID 清單,並將 ANDROID_AUDIENCE 替換為 Android 網頁用戶端 ID 清單。網路用戶端 ID 為附加 .apps.googleusercontent.com 的用戶端 ID,例如:YOUR_CLIENT_ID.apps.googleusercontent.com

  4. 在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的 User;如果沒有,請發出 error 401。具體做法如以下的範例方法定義所示:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  5. 部署 Endpoints API。每當您新增用戶端時,都需要重新部署 Endpoints API。

將 Google ID 憑證驗證新增到用戶端

如需瞭解如何新增驗證程式碼至用戶端,請參閱下列各文:

後續步驟

參閱 API 金鑰的使用時機與原因一文,瞭解使用者驗證的背景資訊,以及使用者驗證與 API 金鑰驗證的不同之處。