Web API を呼び出すデスクトップ アプリ:コード構成
お使いのアプリケーションを作成したところで、アプリケーションの座標を使用してコードを構成する方法について説明します。
デスクトップ アプリをサポートする Microsoft ライブラリ
次の Microsoft ライブラリはデスクトップ アプリをサポートしています。
言語/フレームワーク | プロジェクト GitHub |
Package | 取得 started |
ユーザーのサインイン | 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 フェデレーション サービス (AD FS) 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
メソッドを呼び出すことで構成を上書きできます。
次のステップ
このシナリオの次の記事であるデスクトップ アプリのトークンの取得に関する記事に進みます。