共用方式為


使用 Microsoft Entra ID 驗證應用程式使用者

應用程式的主要 Microsoft Entra ID 函式是驗證,使用者以個人識別碼 (如使用者名稱或電子郵件地址) 宣告其身分識別的流程。 系統會提供身分識別證明。 該證明可能是密碼、多重要素驗證成品、生物特徵辨識或無密碼同意。

本文說明應用程式如何使用 Microsoft Entra ID 來驗證使用者和應用程式。 這是一系列文章中的第三篇,說明獨立軟體開發人員 (ISV) 如何組建適用於 Microsoft Entra ID 的應用程式,並將其最佳化。 在此系列中,您可以深入了解下列主題:

要求權杖

應用程式會從 Microsoft Entra ID 要求權杖。 應用程式收到權杖後,就可以使用該權杖中的資訊來識別使用者。 當您在 Microsoft Entra ID 上組建時,使用者可以使用單一註冊的 Microsoft Entra ID 帳戶 (SSO) 驗證許多應用程式。 單一登入驗證方法可讓使用者使用一組認證登入多個獨立的軟體系統。

開發人員用來向 Microsoft Entra ID 要求權杖的通訊協定,會使用瀏覽器將使用者連線到 Microsoft Entra ID 網站。 這個網站可讓使用者與 Microsoft Entra ID 進行私人交談。 應用程式不是該私人交談的參與者。 應用程式會啟動 Microsoft Entra ID 網站,使用者要在此處開始驗證流程。 在驗證流程完成之後,Microsoft Entra ID 會將使用者重新導向回應用程式,並附上 (或不附上) 權杖。

很重要的是,使用者很少需要走完驗證流程。 如果使用者必須走完流程的頻率越高,就越容易遭受網路釣魚攻擊等惡意探索。

減少登入提示次數

單一登入可以減少或消除登入提示。 開發人員在減少和消除登入提示方面扮演了重要角色。 所有應用程式都必須共用瀏覽器,以存取使用者執行驗證流程的 Microsoft Entra ID 網站。 如果您的應用程式是瀏覽器型單頁應用程式 (SPA) 或 Web 應用程式,則不需要開發人員步驟。 瀏覽器中的所有應用程式都會共用瀏覽器。 針對在桌面和行動裝置上執行的原生應用程式,開發人員必須主動減少或消除登入提示。

減少或消除登入提示的最佳方法,是使用 Microsoft 驗證程式庫 (MSAL),或組建在 MSAL 上的程式庫,以及代理人驗證。 此方法會將登入提示降到最低,並提供最順暢的體驗。 如果無法組建 MSAL,則您的應用程式應該使用系統瀏覽器,將登入提示降到最低。

針對在 iOS 或 Android 中執行的應用程式,行動平台提供者有一些功能可讓此體驗更順暢。 針對具備 Chrome 自定義索引標籤 的 Android 應用程式,Google 提供了相關指導。 針對在 iOS 應用程式中透過 Web 服務驗證使用者,Apple 提供了相關指導。 請避免使用內嵌 WebViews,因為它們可能不允許跨應用程式或透過系統瀏覽器共用。

使用者驗證使用的兩種通訊協定為安全性聲明標記語言 (SAML) 2.0 和 OpenID Connect (OIDC)。 Microsoft Entra ID 完全支援使用這兩種通訊協定的應用程式,因此開發人員可以根據其需求來選擇其中一個。

這些都參考詳細的 Microsoft Entra ID SAML 支援。

Microsoft Entra ID SAML 支援有一些限制。 具體而言,您無法移轉需要這些通訊協定功能的應用程式:支援 WS-Trust ActAs 模式和 SAML 成品解析。

雖然針對以 SAML 通訊協定組建的應用程式,Microsoft Entra ID 完全支援 SAML,但Microsoft 身分識別平台不提供程式庫或其他開發工具來使用 SAML 開發應用程式。 針對開發新應用程式,我們建議使用 OpenID Connect (OIDC) 進行驗證。

Microsoft Entra ID 完全支援 OpenID Connect。 Microsoft 提供 MSAL、Microsoft Identity Web 和 Azure SDK 程式庫,以簡化 OIDC 應用程式開發流程。 Microsoft 身分識別平台上的 OpenID Connect (OIDC)詳細說明 Microsoft Entra ID OIDC 支援。 MSAL 會自動支援 OIDC。 MSAL 一律會要求具有每個權杖要求的 OIDC ID 權杖,包括應用程式存取資源的授權要求。

權杖存留期

MSAL 會根據存取權杖的到期時間快取識別碼權杖和存取權杖。 由於 Microsoft Entra ID 會以不同的方式設定識別碼權杖和存取權杖的存留期,因此您可能會在存取權杖仍在其有效存留期內時,從過期的 MSAL 快取收到過期的識別碼權杖。

MSAL 不會自動更新識別碼權杖。 MSAL 會在應用程式要求權杖時,於存取權杖生命週期結束 (或即將結束) 期間更新存取權杖。 此時,MSAL 會要求新的識別碼權杖。 若要實作 OIDC,請使用識別碼權杖中的 exp (過期) 宣告,在 MSAL 中使用 ForceRefresh 旗標來排程識別碼權杖要求。

無法在 MSAL 上組建或組建在 MSAL 上的程式庫時,您可以使用 OpenID Connect 標準來驗證目前的使用者。 若不使用 MSAL,可能就無法使用原生應用程式中的某些功能,例如確保原生應用程式是在受控裝置上執行。 無法在 MSAL 上組建時,請檢閱提高您開發的用戶端應用程式中,驗證和授權的復原能力以獲得相關指導。

Microsoft Entra ID 會實作 UserInfo 端點,作為具備特定 Microsoft Graph 路徑 (https://graph.microsoft.com/oidc/userinfo)之 Microsoft Entra ID OIDC 標準支援的一部分。 您無法新增或自訂 UserInfo 端點傳回的資訊。 由於識別碼權杖中的資訊是呼叫 UserInfo 端點所傳回資訊的超集,因此建議您使用識別碼權杖,而不是呼叫 UserInfo 端點。

驗證使用者

應用程式會與 Microsoft Entra ID 租用戶互動,以驗證使用者。 若要驗證使用者,應用程式會將瀏覽器導向 https://login.microsoftonline.com/{tenant}/v2.0,其中 {tenant} 是租用戶的識別碼或網域。 不過,我們建議 ISV 使用 Microsoft Entra ID 來組建多租用戶應用程式,以支援最廣泛的客戶。 對於多租使用者應用程式,應用程式可能要等到使用者驗證之後,才會知道使用者來自哪個租用戶,因此無法使用特定的租用戶端點。

若要啟用多租用戶應用程式,Microsoft Entra ID 提供兩個租用戶獨立的 OIDC/OAuth 2.0 端點:

  • https://login.microsoftonline.com/common/v2.0 可讓使用者驗證來自任何 Microsoft Entra ID 租用戶的應用程式,或驗證來自 outlook.com、skype.com、xbox.com、live.com 或 Hotmail.com 等網站的取用者 Microsoft 帳戶。
  • https://login.microsoftonline.com/organizations/v2.0 可讓使用者驗證任何來自 Microsoft Entra ID 租用戶的應用程式。

這些端點可讓任何來自 Microsoft Entra ID 租用戶中的任何使用者驗證您的應用程式。 如果您只想允許來自特定租用戶的使用者,請實作邏輯,只允許來自這些租用戶的使用者存取您的應用程式。 一般實作是根據權杖中的 iss (簽發者) 或 tid (租用戶識別碼) 宣告來篩選使用者,並放到您維護的租用戶允許清單。

Microsoft Entra ID 租用戶會支援可以成為租用戶一般成員或成為租用戶來賓使用者的使用者。 根據預設,租用戶中的來賓使用者能使用的功能有限。 例如,來賓使用者看不到租用戶中其他使用者的完整設定檔。 來賓使用者 (有時稱為企業對企業 (B2B) 使用者) 可讓不同的組織與 Microsoft Entra ID 保護的工具和服務共同作業。 範例案例是邀請組織外部的使用者存取租用戶中的 SharePoint 檔案。 一般而言,B2B 使用者會使用其電子郵件地址作為其 userid。 不過,他們可能會使用與主租用戶中 userid 相同的位址。 根據預設,Microsoft Entra ID 會在使用者輸入其 userid 時,將使用者登入其主租用戶。

若要以 B2B 使用者身分登入使用者,應用程式必須使用使用者是來賓的特定租用戶端點。 雖然使用者可以在應用程式使用 https://login.microsoftonline.com/organizations/v2.0 端點時指定想要存取的租用戶,但使用者可能會發現難以探索的功能。

下一步