Microsoft 認証ライブラリを調査する

完了

Microsoft 認証ライブラリ (MSAL) を使用すると、Microsoft Graph、その他の Microsoft API、または独自の Web API への安全なアクセスを提供できます。 MSAL は、.NET、JavaScript、Java、Python、Android、iOS などの、さまざまなアプリケーション アーキテクチャとプラットフォームをサポートします。

MSAL では、多くのプラットフォームで API に一貫性があり、さまざまな方法でトークンを取得できます。 MSAL の使用には次のような利点があります。

  • アプリケーションのプロトコルに対して OAuth ライブラリまたはコードを直接使用する必要がありません。
  • ユーザーやアプリケーション (プラットフォームに適用できるとき) の代わりにトークンを取得します。
  • トークン キャッシュを保持し、有効期限が近づくとトークンを自動更新します。 トークンの期限切れを自分で処理する必要はありません。
  • どの対象ユーザーがアプリケーションにサインインするかを指定するのに役立ちます。
  • 構成ファイルからアプリケーションを設定する作業を支援します。
  • アクション可能な例外、ログ記録、テレメトリを公開することでアプリの問題解決を支援します。

アプリケーションの種類とシナリオ

MSAL 内では、Web アプリケーション、Web API、シングルページ アプリ (JavaScript)、モバイル アプリケーション、ネイティブ アプリケーション、デーモン、サーバー側アプリケーションといったさまざまな種類のアプリケーションからトークンを取得できます。 MSAL は現在、次の表にあるプラットフォームとフレームワークをサポートしています。

ライブラリ サポートされているプラットフォームとフレームワーク
MSAL for Android Android
MSAL Angular Angular と Angular.js のフレームワークを使用したシングルページ アプリ
iOS および macOS 用の MSAL iOS と macOS
MSAL Go (プレビュー) Windows、macOS、Linux
MSAL Java Windows、macOS、Linux
MSAL.js Vue.js、Ember.js、Durandal.js など、JavaScript と TypeScript のフレームワーク
MSAL.NET .NET Framework、.NET Core、Xamarin Android、Xamarin iOS、ユニバーサル Windows プラットフォーム
MSAL Node Express を使用した Web アプリ、Electron を使用したデスクトップ アプリ、クロスプラットフォーム コンソール アプリ
MSAL Python Windows、macOS、Linux
MSAL React React と React ベースのライブラリ (Next.js、Gatsby.js) を使用したシングルページ アプリ

認証フロー

次の表は、Microsoft 認証ライブラリ (MSAL) によって提供されるさまざまな認証フローの一部をまとめたものです。 このようなフローはさまざまなアプリケーション シナリオで利用できます。

Flow 説明
Authorization code (承認コード) ネイティブ アプリや Web アプリがユーザーの名前でトークンを安全に取得する
クライアントの資格情報 サービス アプリケーションがユーザー操作なしで実行される
On-Behalf-Of アプリケーションがサービスまたは Web API を呼び出し、それが次に Microsoft Graph を呼び出す
暗黙 ブラウザー ベースのアプリケーションで使用される
デバイス コード ブラウザーを備えた別のデバイスを使用してデバイスへのサインインを有効にする
統合 Windows Windows コンピューターがドメインに参加しているときにアクセス トークンをサイレントに取得する
Interactive モバイルおよびデスクトップ アプリケーションがユーザーの名前で Microsoft Graph を呼び出す
ユーザー名/パスワード ユーザーが自分のユーザー名とパスワードを使用してアプリケーションにサインインする

パブリック クライアント アプリケーションと機密クライアント アプリケーション

複数の種類のアプリケーションがセキュリティ トークンを取得できます。 これらのアプリケーションは、次の 2 つのカテゴリに分けられます。 それぞれ、併用するライブラリとオブジェクトが異なります。

  • パブリック クライアント アプリケーション: デバイスやデスクトップ コンピューターか、または Web ブラウザーで実行されるアプリです。 それらにはアプリケーション シークレットを安全に保持するという信頼がないため、ユーザーに代わって Web API にアクセスすることしかできません (パブリック クライアント フローのみがサポートされます)。パブリック クライアントは構成時のシークレットを保持できません。そのため、クライアント シークレットを備えていません。

  • 機密クライアント アプリケーション: サーバーで実行されるアプリです (Web アプリ、Web API アプリ、場合によってはサービスまたはデーモン アプリ)。 これらはアクセスが困難であると考えられているため、アプリケーション シークレットを保持することができます。 機密クライアントは、構成時のシークレットを保持することができます。 クライアントの各インスタンスに個別の構成 (クライアント ID とクライアント シークレットを含む) があります。