分享方式:


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

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

支援精靈應用程式的 Microsoft 程式庫

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

語言/架構 專案平台
GitHub
套件 開始
啟動
登入使用者 存取 Web API 正式發行 (GA)
公開預覽1
Electron MSAL Node.js msal-node 程式庫可以要求使用者登入的識別碼權杖。 程式庫可以要求受保護 Web API 的存取權杖。 公開預覽
Java MSAL4J msal4j 程式庫可以要求使用者登入的識別碼權杖。 程式庫可以要求受保護 Web API 的存取權杖。 GA
macOS (Swift/Obj-C) 適用於 iOS 和 macOS 的 MSAL MSAL (部分機器翻譯) 教學課程 程式庫可以要求供使用者登入的識別碼權杖。 程式庫可以要求受保護 Web API 的存取權杖。 GA
UWP MSAL.NET Microsoft.Identity.Client 教學課程 程式庫可以要求供使用者登入的識別碼權杖。 程式庫可以要求受保護 Web API 的存取權杖。 GA
WPF MSAL.NET Microsoft.Identity.Client 教學課程 程式庫可以要求供使用者登入的識別碼權杖。 程式庫可以要求受保護 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 方法的呼叫來覆寫您的設定,如先前所示。

下一步

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