パブリック クライアント アプリケーションと機密クライアント アプリケーション
Microsoft Authentication Library (MSAL) には、パブリック クライアントと機密クライアントの 2 種類のクライアントが定義されています。 その 2 種類のクライアントは、認証サーバーを使用してセキュリティを確保した認証を行い、クライアント資格情報の機密性を維持する能力によって区別されます。
機密クライアント アプリケーションとは、Web アプリ、Web API アプリ、サービス アプリやデーモン アプリなど、サーバー上で実行されるアプリです。 これらはアクセスが困難であると考えられているため、アプリケーション シークレットを保持することができます。 機密クライアントは、構成時のシークレットを保持することができます。 クライアントの各インスタンスに個別の構成 (クライアント ID とクライアント シークレットを含む) があります。 これらの値を、エンド ユーザーが抽出することは困難です。 Web アプリは最も一般的な機密クライアントです。 クライアント ID は Web ブラウザーを介して公開されますが、シークレットはバック チャネルでのみ渡され、直接公開されることはありません。
機密クライアント アプリ:
パブリック クライアント アプリケーションは、デバイス、デスクトップ コンピューター、または Web ブラウザーで実行されるアプリです。 それらにはアプリケーション シークレットを安全に保持するという信頼がないため、ユーザーに代わって Web API にアクセスすることしかできません また、これらではパブリック クライアント フローのみがサポートされます。 パブリック クライアントは構成時のシークレットを保持できないため、クライアント シークレットを持つことはできません。
パブリック クライアント アプリ:
MSAL.js では、パブリック クライアント アプリと機密クライアント アプリは分離されません。 MSAL.js ではクライアント アプリをユーザー エージェントベースのアプリ (クライアント コードが Web ブラウザーなどのユーザー エージェント内で実行されるパブリック クライアント) として表します。 これらのクライアントでは、シークレットは格納されません。ブラウザーのコンテキストが公開されアクセス可能であるからです。
クライアントの種類の比較
パブリック クライアント アプリと機密クライアント アプリの共通点および相違点をいくつか以下に示します。
- どちらの種類のアプリもユーザー トークン キャッシュを保持しており、トークンを暗黙的に取得できます (トークンが既にトークン キャッシュ内にある場合)。 機密クライアント アプリには、アプリ自体のためのトークン用のアプリ トークン キャッシュもあります。
- どちらの種類のアプリでもユーザー アカウントを管理し、ユーザー トークン キャッシュからアカウントを取得することや、識別子からアカウントを取得すること、またはアカウントを削除することができます。
- パブリック クライアント アプリには、4 つの個別の認証フローを通じてトークンを取得する 4 つの方法があります。 機密クライアント アプリには、トークンを取得する 3 つの方法と、ID プロバイダー承認エンドポイントの URL を計算する 1 つの方法があります。 詳細については、トークンの取得に関するページを参照してください。
MSAL ではクライアント ID ("アプリケーション ID" または "アプリ ID" とも呼ばれる) がアプリケーションの構築時に 1 回渡されます。 アプリがトークンを取得する際にこれが再度渡される必要はありません。 これは、パブリックと機密の両方のクライアント アプリに当てはまります。 機密クライアント アプリのコンストラクターにも、ID プロバイダーと共有するシークレットであるクライアント資格情報が渡されます。
次のステップ
アプリケーションの構成とインスタンス化の詳細については、以下を参照してください。