對於 Admin、Server 和部分實體 API 呼叫,Entra ID 驗證是開發人員祕密金鑰的替代方案。面向玩家的 Client 和實體 API 會繼續使用透過玩家登入取得的工作階段票證和實體權杖。只有可使用_遊戲_實體權杖呼叫的實體 API 才能搭配 Entra ID 使用。如需祕密金鑰的詳細資訊,請參閱祕密金鑰管理。
為何使用 Entra ID 驗證
開發人員祕密金鑰使用簡單,但 Entra ID 驗證提供多項優點:- 沒有共用祕密:公用用戶端流程不需要用戶端祕密。權杖為短期有效,且範圍限定於已登入的使用者。
- 個人責任歸屬:每個 API 呼叫都與特定使用者身分識別綁定,讓您能輕鬆稽核誰做了什麼。
- 條件式存取:您的組織可以套用 Entra ID 原則,例如 IP 限制、多重要素驗證 (MFA) 和裝置合規性檢查。
Entra ID 驗證的運作方式
如果您從未使用過 Microsoft Entra ID,它是 Microsoft 的雲端身分識別服務,也是支援 Microsoft 365、XBOX 開發人員帳戶和 Azure 的同一套身分識別系統。PlayFab 不會為您的工作室核發長期有效的祕密金鑰,而是由您的工具要求 Entra ID 讓開發人員登入,並傳回短期有效的存取權杖。PlayFab 信任 Entra ID 為您工作室成員的使用者所核發的權杖。 涉及三個角色:- 開發人員。 也就是您,以 Microsoft 帳戶 (個人) 或公司或學校帳戶 (Entra ID) 登入。
- Entra ID 中的應用程式註冊。 這代表呼叫 PlayFab 的工具,例如 CLI、組建指令碼、內部儀表板等。它會告訴 Entra ID「此應用程式可以代表已登入的使用者要求 PlayFab 存取權杖」。
- PlayFab 服務。 PlayFab 在 Entra ID 中以應用程式識別碼
448adbda-b8d8-4f33-a1b0-ac58cf44d4c1註冊,並公開名為plugin的委派權限。當您的程式碼要求範圍448adbda-b8d8-4f33-a1b0-ac58cf44d4c1/plugin時,Entra ID 會核發 PlayFab 接受的權杖。
- 您的程式碼使用 Microsoft 驗證程式庫 (MSAL) 開始登入,通常是瀏覽器快顯視窗或裝置代碼提示。
- 使用者以其 Microsoft 身分識別登入,並同意您的應用程式代表他們呼叫 PlayFab。
- MSAL 會傳回存取權杖 (JWT),並快取重新整理權杖,讓之後的呼叫可以略過提示。
- 您的程式碼會在每個 PlayFab 要求的
Authorization: Bearer <token>標頭中傳送權杖。 - PlayFab 會驗證權杖、將其對應至相符的工作室使用者,並根據該使用者的角色授權呼叫。
必要條件
- 以 Entra ID 為後盾的 Microsoft 帳戶 (公司或學校帳戶) 或個人 Microsoft 帳戶 (MSA)。
- PlayFab 遊戲。如需詳細資訊,請參閱建立 PlayFab 帳戶。
- 在您的 Microsoft Entra ID 租用戶中註冊應用程式的權限。
- 呼叫的使用者必須已新增至 PlayFab 工作室,並被指派為遊戲系統管理員。如需角色的詳細資訊,請參閱 PlayFab 使用者角色。
在 Entra ID 中註冊公用用戶端應用程式
您需要在 Entra ID 租用戶中註冊應用程式,讓您的程式碼能代表已登入的使用者要求委派權杖。對於公用用戶端流程 (SPA、裝置代碼、隱含),不需要用戶端祕密。- 登入 Azure 入口網站。
- 搜尋並選取 應用程式註冊,然後選取 新增註冊。
-
輸入您應用程式的名稱 (例如
PlayFab API Client)。 - 在 支援的帳戶類型 下,選取符合您組織需求的選項。若要獲得最大彈性,請選取 任何組織目錄中的帳戶 (任何 Microsoft Entra ID 租用戶 - 多租用戶) 及個人 Microsoft 帳戶。此選項允許任何 Microsoft 帳戶進行驗證。
-
根據您的應用程式類型設定 重新導向 URI:
- 對於單頁應用程式 (SPA),請選取 單頁應用程式 (SPA),並輸入您的重新導向 URI (例如
http://localhost:3000)。 - 對於使用裝置代碼流程的原生或主控台應用程式,請選取 公用用戶端/原生 (行動和桌面),並輸入
http://localhost。
- 對於單頁應用程式 (SPA),請選取 單頁應用程式 (SPA),並輸入您的重新導向 URI (例如
- 選取 註冊。在概觀頁面上,記下 應用程式 (用戶端) 識別碼。要求權杖時需要此值。
-
將 PlayFab API 權限新增至您的應用程式註冊:
- 在 Azure 入口網站中,瀏覽至您的應用程式註冊,然後選取 API 權限。
- 選取 新增權限 > 我的組織使用的 API。
- 搜尋 PlayFab 應用程式識別碼
448adbda-b8d8-4f33-a1b0-ac58cf44d4c1並選取它。 - 選取 委派的權限,核取 plugin 權限,然後選取 新增權限。
如果您的案例需要機密 (Web 應用程式) 用戶端,您也需要在 憑證及祕密 下建立用戶端祕密。本文著重於不需要祕密的公用用戶端流程。如需機密用戶端流程的詳細資訊,請參閱 Microsoft 身分識別平台和 OAuth 2.0 授權碼流程。
設定 PlayFab 工作室存取權
PlayFab 會根據工作室成員資格驗證 Entra ID 權杖。呼叫的使用者必須已新增至 PlayFab 工作室,並獲授與適當的角色。- 請工作室系統管理員登入 Game Manager。
- 瀏覽至工作室的 使用者 區段。
- 選取 新增使用者,並輸入需要 API 存取權之開發人員的 Microsoft 帳戶電子郵件。
- 選取 Microsoft 作為驗證提供者。
- 為使用者指派包含 Admin 或 Server API 存取權的角色。使用者至少必須是其需要呼叫 API 之遊戲的 遊戲系統管理員。
- 選取 新增使用者 以傳送邀請。
取得存取權杖
您的應用程式負責讓使用者登入,並從 Entra ID 取得委派存取權杖。下列範例顯示常見的公用用戶端流程。互動式瀏覽器流程 (建議用於桌面和主控台應用程式)
互動式瀏覽器流程會開啟系統瀏覽器視窗以進行登入。這是桌面應用程式和本機開發工具的建議選項。具有 PKCE 的授權碼 (建議用於 SPA)
具有程式碼交換證明金鑰 (PKCE) 的授權碼流程是單頁應用程式的建議方法。下列 JavaScript 範例使用 Microsoft 驗證程式庫 (MSAL):使用存取權杖呼叫 PlayFab API
在您的 PlayFab API 要求中,將 Entra ID 存取權杖以 Bearer 權杖的形式包含在Authorization 標頭中,而不是使用 X-SecretKey 標頭。
範例要求
您不能在同一個要求中同時使用
X-SecretKey 和 Authorization: Bearer。每個呼叫請使用一種驗證方法。C# 範例
下列範例使用 Microsoft 驗證程式庫 (MSAL) 取得權杖,並呼叫Server/GetTime API。請將 your-client-id 取代為您應用程式註冊中的 應用程式 (用戶端) 識別碼。
Node.js 範例
下列範例使用@azure/msal-node 程式庫取得權杖,並呼叫 Server/GetTime API。請將 your-client-id 取代為您應用程式註冊中的 應用程式 (用戶端) 識別碼。
權杖重新整理
Entra ID 存取權杖為短期有效 (通常為 60–90 分鐘)。如果您使用 MSAL,請在每個要求之前呼叫AcquireTokenSilent (C#) 或檢查權杖快取。當有可用的快取重新整理權杖時,MSAL 會自動處理重新整理。
如果您手動管理權杖,請在目前權杖到期之前,使用相同的登入流程要求新權杖。
如果權杖在使用期間到期,PlayFab 會傳回
401 Unauthorized 回應。您的應用程式應透過要求新權杖並重試呼叫來處理此錯誤。疑難排解
範例錯誤回應
當 Bearer 權杖遺失、格式不正確或已過期時,PlayFab 傳回的401 Unauthorized 如下所示:
403 Forbidden 如下所示:
限制
PlayFab SDK 目前不支援 Entra ID 驗證。若要現在使用 Entra ID 權杖呼叫 PlayFab API,請使用直接 HTTP 呼叫並自行設定Authorization: Bearer <token> 標頭,如 C# 和 Node.js 範例所示。SDK 支援已規劃於未來版本中推出。
