本頁面說明如何在 API 中使用 Cloud Endpoints Frameworks 從用戶端應用程式新增支援,以進行使用者驗證。請注意,目前支援 Android 和 JavaScript 用戶端。
Endpoints Frameworks 支援使用以下任何方法的用戶端應用程式進行使用者驗證:
無論使用哪種驗證方法,在每種 API 方法中檢查正確驗證時,您都必須檢查有效的 User
。您可於下列各文找到相關說明:
必備條件
本頁假設您已具備以下條件:
建立 Google Cloud 專案。
- 若您在用戶端程式庫使用 JWT 將經過驗證的請求傳送到 API,則 JWT 必須位於 HTTP 請求的授權標頭中。JWT 應具備以下所需的聲明:
-
iss
-
sub
-
aud
-
iat
-
exp
-
使用 Firebase Auth 進行驗證
若要支援使用 Firebase Auth 的呼叫:
匯入 API 類別中的 App Engine Endpoints API:
import endpoints
為每個用戶端新增 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。
- 將
在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的
User
;如果沒有,請發出error 401
。具體做法如以下的範例方法定義所示:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
部署 Endpoints API。每當您新增用戶端時,都需要重新部署 Endpoints API。
將 Firebase 驗證新增到用戶端
您可以按照 Firebase 說明文件,將 Firebase 驗證新增至您的程式碼中。用戶端必須具有與驗證相關的 Google Cloud 專案,且專案 ID 必須列於 API 的 Firebase 發行者設定中。
使用 Auth0 進行驗證
若要從使用 Auth0 的用戶端支援呼叫:
將 App Engine Endpoints API 匯入至您的 API 類別:
import endpoints
將每個用戶端的 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 帳戶名稱。
- 將
在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的
User
;如果沒有,請發出error 401
。具體做法如以下的範例方法定義所示:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
部署 API。當您新增新用戶端時,需要重新部署 API。
將 Auth0 驗證新增到用戶端
您可以按照 Auth0 說明文件,將 Auth0 驗證新增至您的程式碼中。用戶端必須列在 API 的 Auth0 發行者設定中。
使用 Google ID 憑證進行驗證
如要支援使用 Google ID 憑證進行驗證的用戶端呼叫,請按照以下步驟操作:
為每個用戶端應用程式取得 OAuth 2 用戶端 ID。用戶端應用程式擁有者必須透過 Google Cloud 控制台產生用戶端 ID。如需操作說明,請參閱「建立用戶端 ID」。
將 App Engine Endpoints API 匯入至您的 API 類別:
import endpoints
在
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
。在要檢查驗證是否正確的每種 API 方法中,檢查是否存在有效的
User
;如果沒有,請發出error 401
。具體做法如以下的範例方法定義所示:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
部署 Endpoints API。每當您新增用戶端時,都需要重新部署 Endpoints API。
將 Google ID 憑證驗證新增到用戶端
如需瞭解如何新增驗證程式碼至用戶端,請參閱下列各文:
後續步驟
參閱 API 金鑰的使用時機與原因一文,瞭解使用者驗證的背景資訊,以及使用者驗證與 API 金鑰驗證的不同之處。