應用程式組態選項

若要驗證和取得令牌,您可以在程式代碼中初始化新的公用或機密用戶端應用程式。 當您在 Microsoft 驗證連結庫 (MSAL) 中初始化用戶端應用程式時,可以設定數位組態選項。 這些選項分為兩個群組:

授權單位

授權單位是一個 URL,指出 MSAL 可以從中要求令牌的目錄。

共同授權單位如下:

通用授權單位 URL 使用時機
https://login.microsoftonline.com/<tenant>/ 僅登入特定組織的使用者。 <tenant> URL 中的 是 Microsoft Entra 租使用者的租使用者標識碼(GUID),或其租用戶網域。
https://login.microsoftonline.com/common/ 使用公司及學校帳戶或個人 Microsoft 帳戶登入使用者。
https://login.microsoftonline.com/organizations/ 使用公司與學校帳戶登入使用者。
https://login.microsoftonline.com/consumers/ 僅使用個人 Microsoft 帳戶登入使用者(MSA)。

您在程式代碼中指定的授權單位必須與您在 應用程式註冊 Azure 入口網站 中為應用程式指定的支持帳戶類型一致

授權單位可以是:

  • Microsoft Entra 雲端授權單位。
  • Azure AD B2C 授權單位。 請參閱 B2C 細節
  • Active Directory 同盟服務 (AD FS) 授權單位。 請參閱 AD FS支援

Microsoft Entra 雲端授權單位有兩個部分:

  • 識別提供者 實例
  • 應用程式的登入物件

實例和物件可以串連並提供為授權單位 URL。 下圖顯示授權單位 URL 的組成方式:

授權單位 URL 的撰寫方式

雲端實例

實例可用來指定您的應用程式是否從 Azure 公用雲端或國家雲端簽署使用者。 在程式代碼中使用 MSAL,您可以使用列舉或將 URL 傳遞至國家雲端實例做為Instance成員,來設定 Azure 雲端實例

如果同時 Instance 指定 和 AzureCloudInstance ,MSAL.NET 會擲回明確的例外狀況。

如果您未指定實例,您的應用程式會以 Azure 公用雲端實例為目標(URL https://login.onmicrosoftonline.com的實例)。

應用程式物件

登入物件取決於您應用程式的商務需求:

  • 如果您是企業營運 (LOB) 開發人員,您可能會產生單一租使用者應用程式,而該應用程式只會在您的組織中使用。 在此情況下,請依其租用戶標識碼(Microsoft Entra 實例的標識符)或與 Microsoft Entra 實例相關聯的功能變數名稱來指定組織。
  • 如果您是ISV,您可能會想要使用任何組織或某些組織 (多租使用者應用程式) 中的公司與學校帳戶來登入使用者。 但您可能也想要讓使用者使用其個人 Microsoft 帳戶登入。

如何在程式代碼/組態中指定物件

在程式代碼中使用 MSAL,您可以使用下列其中一個值來指定物件:

  • Microsoft Entra 授權物件列舉
  • 租用戶標識碼,可以是:
    • 單一租使用者應用程式的 GUID (Microsoft Entra 實例的識別碼)
    • 與您的 Microsoft Entra 實例相關聯的功能變數名稱(也適用於單一租使用者應用程式)
  • 其中一個佔位元作為租用戶標識符,取代 Microsoft Entra 授權單位物件列舉:
    • organizations 多租用戶應用程式
    • consumers 僅使用其個人帳戶登入使用者
    • common 使用其公司及學校帳戶或其個人 Microsoft 帳戶登入使用者

如果您同時指定 Microsoft Entra 授權單位物件和租使用者標識碼,MSAL 將會擲回有意義的例外狀況。

建議指定對象,因為許多租使用者,且部署在其中的應用程式將會有來賓使用者。 如果您的應用程式會有外部使用者,最好避免 和 organization 的端點common。 如果您未指定物件,您的應用程式會將 Microsoft Entra ID 和個人 Microsoft 帳戶作為物件,且行為會 common 如同已指定一樣。

有效物件

應用程式的有效物件將會是您在應用程式中設定的物件下限,以及應用程式註冊中指定的物件數目下限(如果有交集)。 事實上,應用程式註冊 體驗可讓您指定應用程式的物件(支援的帳戶類型)。 如需詳細資訊,請參閱快速入門:向 Microsoft 身分識別平台 註冊應用程式。

目前,讓應用程式只使用個人 Microsoft 帳戶登入使用者的唯一方法是設定這兩個設定:

  • 將應用程式註冊物件設定為 Work and school accounts and personal accounts
  • 將程式代碼/組態中的物件設定為 AadAuthorityAudience.PersonalMicrosoftAccount (或 TenantID =“consumers” )。

用戶端識別碼

用戶端識別碼是註冊應用程式時,由 Microsoft Entra ID 指派給應用程式的唯 一應用程式(用戶端) 標識碼。 您可以在 Identity>Applications Enterprise> 應用程式中應用程式的 [概觀] 頁面上找到應用程式識別符。

重新導向 URI

重新導向 URI 是識別提供者將安全性令牌傳回的 URI。

公用用戶端應用程式的重新導向 URI

如果您是使用 MSAL 的公用用戶端應用程式開發人員:

  • 您想要在桌面或 通用 Windows 平台 (UWP) 應用程式中使用 .WithDefaultRedirectUri() (MSAL.NET 4.1+)。 方法 .WithDefaultRedirectUri() 會將公用用戶端應用程式的重新導向 URI 屬性設定為公用用戶端應用程式的預設建議重新導向 URI。

    平台 重新導向 URI
    傳統型應用程式 (.NET Framework) https://login.microsoftonline.com/common/oauth2/nativeclient
    UWP WebAuthenticationBroker.GetCurrentApplicationCallbackUri()的值。 這可讓瀏覽器使用單一登錄,方法是將值設定為WebAuthenticationBroker.GetCurrentApplicationCallbackUri(),您需要註冊
    .NET https://localhost 可讓使用者使用系統瀏覽器進行互動式驗證,因為目前 .NET 沒有內嵌網頁檢視的UI。
  • 如果您要建置不支援訊息代理程式重新導向 URI 的 Xamarin Android 和 iOS 應用程式,則不需要新增重新導向 URI。 它會自動設定為 msal{ClientId}://auth Xamarin Android 和 iOS。

  • 在 應用程式註冊 中設定重新導向 URI:

    重新導向 應用程式註冊 中的 URI

您可以使用 屬性來覆寫重新導向 URI RedirectUri (例如,如果您使用訊息代理程式)。 以下是該案例的重新導向 URI 範例:

  • RedirectUriOnAndroid = “msauth-5a434691-ccb2-4fd1-b97b-b64bcfbc03fc://com.microsoft.identity.client.sample”;
  • RedirectUriOnIos = $“msauth。{Bundle.ID}://auth“;

如需更多 iOS 詳細數據,請參閱 將使用 Microsoft Authenticator 的 iOS 應用程式從 ADAL.NET 移轉至 MSAL.NET利用 iOS 上的訊息代理程式。 如需更多 Android 詳細數據,請參閱 Android 中的代理驗證。

機密用戶端應用程式的重新導向 URI

對於 Web 應用程式,重新導向 URI(或回復 URL)是 Microsoft Entra ID 用來將令牌傳回應用程式的 URI。 如果機密應用程式是其中之一,URI 可以是 Web 應用程式/Web API 的 URL。 重新導向 URI 必須在應用程式註冊中註冊。 當您部署一開始在本機測試的應用程式時,註冊特別重要。 接著,您必須在應用程式註冊入口網站中新增已部署應用程式的回復 URL。

針對精靈應用程式,您不需要指定重新導向 URI。

用戶端密碼

這個選項會指定機密用戶端應用程式的客戶端密碼。 客戶端密碼(應用程式密碼)是由應用程式註冊入口網站提供,或在使用PowerShell Microsoft Entra ID、PowerShell AzureRM 或 Azure CLI 進行應用程式註冊期間提供給 Microsoft Entra ID。

記錄

為了協助偵錯和驗證失敗疑難解答案例,MSAL 提供內建記錄支援。 下列文章涵蓋每個連結庫中的記錄:

下一步

瞭解如何 使用 MSAL.NET 具現化用戶端應用程式,並使用 MSAL.js具現化用戶端應用程式。