初始化用戶端應用程式
使用 MSAL.NET 3.x 時,建議您透過使用應用程式建立器 PublicClientApplicationBuilder
和 ConfidentialClientApplicationBuilder
來將應用程式具現化。 它們提供強大的機制,可從程式碼或組態檔設定應用程式,甚至是透過混合這兩種方法。
在應用程式初始化之前,您必須先註冊該應用程式,讓您的應用程式可以與 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 會擲回有意義的例外狀況。