適用於:
員工租戶 (瞭解更多資訊)
本文包含指示,可協助您使用應用程式的座標來設定程式碼。
先決條件
- 在 Microsoft Entra 系統管理中心註冊新的應用程式, 僅針對此組織目錄中的帳戶進行設定。 如需詳細資訊 ,請參閱註冊應用程式 。 從應用程式 [概 觀 ] 頁面記錄下列值,以供稍後使用:
- 應用程式 (用戶端) 識別碼
- 目錄(租戶)識別碼
新增平台重新導向網址(URI)
若要在應用程式註冊中指定您的應用程式類型,請遵循下列步驟:
- 在 [管理] 底下,選取 [驗證]> [新增平台>] 行動和桌面應用程式
- 根據您使用的驗證方法,選擇下列其中一個選項:
- 對於使用內嵌瀏覽器的應用程式,請使用確切值:
https://login.microsoftonline.com/common/oauth2/nativeclient - 對於使用系統瀏覽器的應用程式,請使用精確值:
http://localhost - 適用於 macOS 的 Objective-C 或 Swift 應用程式:
msauth.<your.app.bundle.id>://auth。 - Node.js Electron 應用程序:
msal{Your_Application/Client_Id}://auth
- 對於使用內嵌瀏覽器的應用程式,請使用確切值:
備註
針對 Web 驗證管理員 (WAM) 應用程式,MSAL 中不需要重新導向 URI。
啟用公開客戶端流程
若要使用常駐程式應用程式中使用的用戶端認證流程,將裝置程式碼流程、整合式 Windows 驗證,以及使用者名稱和密碼與機密用戶端應用程式區分開來,這些應用程式都不需要重新導向 URI,請將其設定為公用用戶端應用程式。 若要達成此設定
若要將您的應用程式識別為公用用戶端,請遵循下列步驟:
在 [管理] 底下,選取 [驗證]。
在 [進階設定] 下方的 [允許公用用戶端流程],選取 [是]。
選取儲存以儲存變更。
支援桌面應用程式的 Microsoft 程式庫
下列 Microsoft 程式庫支援桌面應用程式:
| 語言/架構 | 專案啟動 GitHub |
包裹 | 開始 開始 |
用戶登入 | 存取 Web API | 正式發行 (GA) 或 公開預覽1 |
|---|---|---|---|---|---|---|
| 電子 | 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 方法來覆寫您的設定,如先前所示。
下一步
請前往本案例中的下一篇文章:取得桌面應用程式的權杖。