呼叫 Web API 的桌面應用程式:程式碼設定
現在您已建立應用程式,您將了解如何使用應用程式的座標來設定程式碼。
支援精靈應用程式的 Microsoft 程式庫
下列 Microsoft 程式庫支援桌面應用程式:
語言/架構 | 專案平台 GitHub |
套件 | 開始 啟動 |
登入使用者 | 存取 Web API | 正式發行 (GA) 或 公開預覽1 |
---|---|---|---|---|---|---|
Electron | MSAL Node.js | msal-node | — | 公開預覽 | ||
Java | MSAL4J | msal4j | — | GA | ||
macOS (Swift/Obj-C) | 適用於 iOS 和 macOS 的 MSAL | MSAL (部分機器翻譯) | 教學課程 | GA | ||
UWP | MSAL.NET | Microsoft.Identity.Client | 教學課程 | GA | ||
WPF | MSAL.NET | Microsoft.Identity.Client | 教學課程 | GA |
1 在線服務的通用授權條款適用於公開預覽中的連結庫。
公用用戶端應用程式
從程式碼的觀點來看,桌面應用程式是公用用戶端應用程式。 根據您是否使用互動式驗證,設定會有一點不同。
您必須建立和操作 MSAL.NET IPublicClientApplication
。
專用的程式碼
下列程式碼會將公用用戶端應用程式具現化,並透過使用者的公司和學校帳戶,或是使用者的個人 Microsoft 帳戶,將使用者登入 Microsoft Azure 公用雲端。
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
.Build();
如果您想要使用互動式驗證或裝置程式碼流程 (如先前所示),請使用 .WithRedirectUri
修飾元。
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.Build();
使用組態檔
下列程式碼會從設定物件將公用用戶端應用程式具現化,該設定物件可透過程式設計方式填入或從設定檔讀取。
PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
.WithDefaultRedirectUri()
.Build();
更詳細的設定
您可以藉由新增一些修飾元來詳細地建立應用程式。 例如,如果您想要讓應用程式成為國家雲端中的多租用戶應用程式,例如美國政府,您可以撰寫:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
AadAuthorityAudience.AzureAdMultipleOrgs)
.Build();
MSAL.NET 也包含 Active Directory 同盟服務2019 的修飾元:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAdfsAuthority("https://consoso.com/adfs")
.Build();
最後,如果您想要取得 Azure Active Directory (Azure AD) B2C 租用戶的權杖,請指定您的租用戶,如下列程式碼片段所示:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
.Build();
深入了解
若要深入了解如何設定 MSAL.NET 桌面應用程式:
- 如需所有
PublicClientApplicationBuilder
可用的修飾詞清單,請參閱參考文件 PublicClientApplicationBuilder。 - 如需
PublicClientApplicationOptions
中所公開之所有選項的說明,請參閱參考文件中的 PublicClientApplicationOptions。
具有設定選項的完整範例
想象一下包含下列 appsettings.json
設定檔的 .NET 主控台應用程式:
{
"Authentication": {
"AzureCloudInstance": "AzurePublic",
"AadAuthorityAudience": "AzureAdMultipleOrgs",
"ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"WebAPI": {
"MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
}
}
您可以使用 .NET 提供的設定架構,以少量的程式碼來讀取此檔案:
public class SampleConfiguration
{
/// <summary>
/// Authentication options
/// </summary>
public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }
/// <summary>
/// Base URL for Microsoft Graph (it varies depending on whether the application runs
/// in Microsoft Azure public clouds or national or sovereign clouds)
/// </summary>
public string MicrosoftGraphBaseEndpoint { get; set; }
/// <summary>
/// Reads the configuration from a JSON file
/// </summary>
/// <param name="path">Path to the configuration json file</param>
/// <returns>SampleConfiguration as read from the json file</returns>
public static SampleConfiguration ReadFromJsonFile(string path)
{
// .NET configuration
IConfigurationRoot Configuration;
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path);
Configuration = builder.Build();
// Read the auth and graph endpoint configuration
SampleConfiguration config = new SampleConfiguration()
{
PublicClientApplicationOptions = new PublicClientApplicationOptions()
};
Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
config.MicrosoftGraphBaseEndpoint =
Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
return config;
}
}
現在,若要建立您的應用程式,請撰寫下列程式碼:
SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
.WithDefaultRedirectUri()
.Build();
在呼叫 .Build()
方法之前,您可以使用 .WithXXX
方法的呼叫來覆寫您的設定,如先前所示。
下一步
請前往本案例中的下一篇文章:取得桌面應用程式的權杖。