共用方式為


呼叫 Web API 的桌面應用程式:程式碼設定

適用於白色複選標記符號的綠色圓圈。 工作人員租戶 白色圓圈內有灰色 X 符號。 外部租戶(深入了解

現在您已建立應用程式,您將了解如何使用應用程式的座標來設定程式碼。

支援桌面應用程式的 Microsoft 程式庫

下列 Microsoft 程式庫支援桌面應用程式:

語言/架構 專案啟動
GitHub
包裹 開始
開始
用戶登入 存取 Web API 正式發行 (GA)
公開預覽1
Electron MSAL Node.js msal-node 函式庫可以要求用於使用者登入的ID憑證。 程式庫可以要求受保護 Web API 的存取權杖。 公開預覽
Java MSAL4J msal4j 程式庫可以要求用戶登入時的 ID 權杖。 程式庫可以要求受保護 Web API 的存取權杖。 GA
macOS (Swift/Obj-C) 適用於 iOS 和 macOS 的 MSAL MSAL (部分機器翻譯) 教學課程 庫可以要求識別權杖以供使用者登入。 程式庫可以要求受保護 Web API 的存取權杖。 GA
UWP MSAL.NET Microsoft.Identity.Client 教學課程 程式庫可以請求用戶簽到的 ID 權杖。 程式庫可以要求受保護 Web API 的存取權杖。 GA
WPF(Windows Presentation Foundation) MSAL.NET Microsoft.Identity.Client 教學課程 程式庫可以要求用戶登入的 ID 權杖。 函式庫可以請求受保護 Web API 的存取權限。 GA

1在線服務的通用授權條款適用於公開預覽中的圖書館。

公用用戶端應用程式

從程式碼的觀點來看,桌面應用程式是公用用戶端應用程式。 根據您是否使用互動式驗證,設定會有一點不同。

您必須建立和操作 MSAL.NET IPublicClientApplication

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 桌面應用程式:

具有設定選項的完整範例

想象一下包含下列 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 方法來覆寫您的設定,如先前所示。

下一步

請前往本案例中的下一篇文章:取得桌面應用程式的權杖