初始化用戶端應用程式

已完成

使用 MSAL.NET 3.x 時,建議您透過使用應用程式建立器 PublicClientApplicationBuilderConfidentialClientApplicationBuilder 來將應用程式具現化。 它們提供強大的機制,可從程式碼或組態檔設定應用程式,甚至是透過混合這兩種方法。

在應用程式初始化之前,您必須先註冊該應用程式,讓您的應用程式可以與 Microsoft 身分識別平台整合。 註冊之後,您可能需要下列資訊 (您可以在 Azure 入口網站中找到):

  • 應用程式 (用戶端) 識別碼 - 這是代表 GUID 的字串。
  • 目錄 (租用戶) 識別碼 - 將身分識別與存取權管理 (IAM) 功能提供給您組織所使用的應用程式和資源。 其可以指定您是否只要針對您的組織撰寫企業營運應用程式 (也命名為單一租用戶應用程式)。
  • 應用程式的識別提供者 URL (命名為「執行個體」) 和登入對象。 這兩個參數統稱為授權單位。
  • 用戶端認證 - 這可以採用應用程式秘密 (用戶端密碼字串) 或憑證 (類型為 X509Certificate2) (如果其為機密用戶端應用程式)。
  • 針對 Web 應用程式,有時適用於公用用戶端應用程式 (特別是當您的應用程式需要使用訊息代理程式時),您需要設定「重新導向 URI」,其中識別提供者將使用安全性權杖連線回應用程式的位置。

以程式碼初始化公用和機密用戶端應用程式

下列程式碼會將公用用戶端應用程式具現化,並透過使用者的公司和學校帳戶,或是使用者的個人 Microsoft 帳戶,將使用者登入 Microsoft Azure 公用雲端。

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId).Build();

同樣地,下列程式碼會將機密應用程式 (位於 https://myapp.azurewebsites.net 的 Web 應用程式) 具現化,並透過使用者的公司和學校帳戶,或是使用者的個人 Microsoft 帳戶,處理 Microsoft Azure 公用雲端中來自使用者的權杖。 應用程式會透過共用用戶端密碼來向識別提供者識別身分:

string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithRedirectUri(redirectUri )
    .Build();

建立器修飾詞

在使用應用程式建立器的程式碼片段中,.With 方法可當作修飾詞套用 (例如 .WithAuthority.WithRedirectUri)。

  • .WithAuthority 修飾詞:.WithAuthority 修飾詞可將應用程式預設授權單位設定為 Microsoft Entra 授權單位,可選擇 Azure 雲端、對象、租用戶 (租用戶識別碼或網域名稱),或直接提供授權單位 URI。

    IPublicClientApplication app;
    app = PublicClientApplicationBuilder.Create(clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
        .Build();
    
  • .WithRedirectUri 修飾詞:.WithRedirectUri 修飾詞會覆寫預設重新導向 URI。

    IPublicClientApplication app;
    app = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .WithRedirectUri("http://localhost")
        .Build();
    

公用和機密用戶端應用程式通用的修飾詞

下表列出您可以在公用或機密用戶端上設定的一些修飾詞。

修飾詞 描述
.WithAuthority() 將應用程式預設授權單位設定為 Microsoft Entra 授權單位,可選擇 Azure 雲端、對象、租用戶 (租用戶識別碼或網域名稱),或直接提供授權單位 URI。
.WithTenantId(string tenantId) 覆寫租用戶識別碼或租用戶描述。
.WithClientId(string) 覆寫用戶端識別碼。
.WithRedirectUri(string redirectUri) 覆寫預設重新導向 URI。 這適用於需要訊息代理程式的情況。
.WithComponent(string) 使用 MSAL.NET 設定程式庫的名稱 (基於遙測原因)。
.WithDebugLoggingCallback() 如果呼叫,應用程式只會呼叫 Debug.Write 啟用偵錯追蹤。
.WithLogging() 如果呼叫,則應用程式將會呼叫具有偵錯追蹤的回呼。
.WithTelemetry(TelemetryCallback telemetryCallback) 設定用來傳送遙測的委派。

機密用戶端應用程式特有的修飾詞

您可以在 ConfidentialClientApplicationBuilder 類別中找到機密用戶端應用程式建立器特有的修飾詞。 您可以在 Azure SDK for .NET 文件中找到不同的方法。

.WithCertificate(X509Certificate2 certificate).WithClientSecret(string clientSecret) 這類修飾詞互斥。 如果您提供這兩者,則 MSAL 會擲回有意義的例外狀況。