分享方式:


Microsoft 身分識別平台最佳做法和建議 (部分機器翻譯)

本文強調與 Microsoft 身分識別平台 整合時的最佳做法、建議和常見監督。 此檢查清單將引導您進行高品質且安全的整合。 定期檢閱此清單,以確保您維護應用程式與身分識別平臺整合的品質和安全性。 檢查清單不適合檢閱整個應用程式。 檢查清單的內容可能會隨著我們對平臺的改善而變更。

如果您剛開始使用,請參閱 Microsoft 身分識別平台 檔,以了解驗證基本概念、Microsoft 身分識別平台 中的應用程式案例等等。

使用下列檢查清單,以確保您的應用程式已有效地與 Microsoft 身分識別平台 整合。

提示

整合 小幫手 可協助您套用其中許多最佳做法和建議。 選取任何應用程式註冊,然後選取 [整合小幫手] 功能選單項以開始使用小幫 手。

基本概念

核取方塊 閱讀並瞭解 Microsoft平台原則。 請確定您的應用程式遵守其設計來保護使用者和平臺時所概述的字詞。

擁有權

核取方塊 請確定與您用來註冊和管理應用程式的帳戶相關聯的資訊是最新的。

商標

核取方塊遵循應用程式的商標指導方針。

核取方塊 為您的應用程式提供有意義的名稱和標誌。 此資訊會出現在應用程式的 同意提示中。 請確定您的名稱和標誌代表您的公司/產品,讓使用者可以做出明智的決策。 請確定您不違反任何商標。

隱私權

核取方塊 提供應用程式服務條款和隱私聲明的連結。

安全性

核取方塊 管理您的重新導向 URI:

  • 維護所有重新導向 URI 的擁有權,並保留其最新 DNS 記錄。
  • 請勿在 URI 中使用通配符 \ 。
  • 針對 Web 應用程式,請確定所有 URI 都是安全且加密的(例如,使用 HTTPs 配置)。
  • 針對公用用戶端,如果適用,請使用平臺特定的重新導向 URI(主要適用於 iOS 和 Android)。 否則,請使用具有大量隨機性的重新導向 URI,以避免在回呼應用程式時發生衝突。
  • 如果應用程式正從隔離的 Web 代理程式使用,您可以使用 https://login.microsoftonline.com/common/oauth2/nativeclient
  • 定期檢閱和修剪所有未使用或不必要的重新導向 URI。

核取方塊 如果您的應用程式已在目錄中註冊,請最小化並手動監視應用程式註冊擁有者清單。

核取方塊除非明確要求,否則請勿啟用 OAuth2 隱含授與流程的支援。 在這裡瞭解有效的案例

核取方塊 移至使用者名稱/密碼之外。 請勿使用直接處理使用者密碼的資源擁有者密碼認證流程 (ROPC)。 此流程需要高度信任和使用者暴露,而且只有在其他更安全的流程無法使用時才應該使用。 在某些案例中仍需要此流程(例如 DevOps),但請注意,使用它會對您的應用程式施加限制。 如需更現代化的方法,請參閱 驗證流程和應用程式案例

核取方塊 保護及管理 Web 應用程式、Web API 和精靈應用程式的機密應用程式認證。 使用 憑證認證,而非密碼認證(用戶端密碼)。 如果您必須使用密碼認證,請勿手動進行設定。 請勿將認證儲存在程式碼或設定中,且絕不允許人類處理認證。 可能的話,請使用 Azure 資源的受控識別或 Azure 金鑰保存庫 來儲存並定期輪替您的認證。

核取方塊 請確定您的應用程式要求最低許可權許可權。 請只要求應用程式絕對需要的許可權,而且只有在您需要許可權時。 瞭解不同類型的 許可權。 僅在必要時才使用應用程式許可權;盡可能使用委派的許可權。 如需Microsoft Graph 許可權的完整清單,請參閱此 許可權參考

核取方塊如果您要使用 Microsoft 身分識別平台 來保護 API,請仔細思考它應該公開的許可權。 請考慮解決方案的正確粒度,以及需要系統管理員同意的許可權。 先檢查傳入令牌中的預期許可權,再進行任何授權決策。

實作

核取方塊 使用新式驗證解決方案 (OAuth 2.0, OpenID Connect) 安全地登入使用者。

核取方塊 請勿直接針對 OAuth 2.0 和 Open ID 等通訊協議進行程序設計。 請改用Microsoft驗證連結 庫 (MSAL) 。 MSAL 連結庫會將安全性通訊協定安全地包裝在易於使用的連結庫中,而且您可以取得 條件式存取 案例、全 裝置單一登錄 (SSO) 和內建令牌快取支援的內建支援。 如需詳細資訊,請參閱支援Microsoft 用戶端連結庫的清單。 如果您必須手動撰寫驗證通訊協定的程式代碼,您應該遵循 Microsoft SDL 或類似的開發方法。 請密切關注每個通訊協議的標準規格中的安全性考慮。

核取方塊請勿查看存取令牌值,或嘗試將它剖析為用戶端。 他們可以變更值、格式,甚至變成加密而不發出警告 - 如果您的用戶端需要瞭解使用者的相關內容,請一律使用標識符令牌。 只有 Web API 應該剖析存取令牌(因為它們是定義格式和設定加密金鑰的 API)。 用戶端直接將存取令牌傳送至 API 是安全性風險,因為它們是授與特定資源的存取權的敏感性認證。 開發人員不應該假設用戶端可以信任來驗證存取令牌。

核取方塊 將現有的應用程式從 Azure Active Directory 驗證連結庫 (ADAL) 遷移至 Microsoft 驗證連結庫。 MSAL 是Microsoft最新的身分識別平台解決方案,可在 .NET、JavaScript、Android、iOS、macOS、Python 和 Java 上使用。 深入瞭解移 轉 ADAL.NETADAL.js和 ADAL.NET 和 iOS訊息代理程式 應用程式。

核取方塊 針對行動應用程式,請使用應用程式註冊體驗來設定每個平臺。 為了讓應用程式利用單一登錄的 Microsoft Authenticator 或 Microsoft 公司入口網站,您的應用程式需要設定「訊息代理程式重新導向 URI」。 這可讓Microsoft在驗證之後將控制權傳回您的應用程式。 設定每個平臺時,應用程式註冊體驗會引導您完成此程式。 使用快速入門來下載可運作的範例。 在 iOS 上,盡可能使用訊息代理程式和系統 Web 檢視。

核取方塊 在 Web 應用程式或 Web API 中,每個帳戶保留一個令牌快取。 針對 Web 應用程式,令牌快取應該由帳戶標識碼進行密鑰處理。 針對 Web API,帳戶應該以用來呼叫 API 的令牌哈希來撰寫密鑰。 MSAL.NET 提供 .NET 和 .NET Framework 中的自定義令牌快取串行化。 基於安全性和效能考慮,我們建議將每個使用者一個快取串行化。 如需詳細資訊,請參閱 令牌快取串行化

核取方塊 如果您的應用程式所需的數據可透過 Microsoft Graph 取得,請使用 Microsoft Graph 端點來要求此資料的許可權,而不是個別 API。

終端使用者體驗

核取方塊瞭解同意體驗,並設定應用程式的同意提示片段,讓使用者和系統管理員有足夠的資訊來判斷他們是否信任您的應用程式。

核取方塊 在互動式流程之前嘗試無訊息驗證(無訊息令牌取得),將使用者在使用應用程式時需要輸入登入認證的次數降到最低。

核取方塊 請勿針對每個登入使用 「prompt=consent」。。 只有在您判斷需要要求同意以取得其他許可權時,才使用 prompt=consent(例如,如果您已變更應用程式的必要許可權)。

核取方塊 如果適用,請使用使用者數據擴充您的應用程式。 使用 Microsoft Graph API 是一種簡單的方法。 可協助您開始使用的 Graph 總管工具。

核取方塊 註冊應用程式所需的完整許可權集,讓系統管理員可以輕鬆地將同意授與其租使用者。 在運行時間使用 累加同意 ,協助使用者了解為什麼您的應用程式在初次啟動時要求使用者時可能會擔心或混淆用戶的許可權。

核取方塊 實作全新的單一 註銷體驗。 這是隱私權和安全性需求,而且提供良好的用戶體驗。

測試

核取方塊 測試 可能會影響使用者使用應用程式能力的條件式存取 原則。

核取方塊 使用您計劃支援的所有可能帳戶測試您的應用程式(例如公司或學校帳戶、個人Microsoft帳戶、子帳戶和主權帳戶)。

其他資源

探索 v2.0 的深入資訊: