認証のシナリオと推奨事項
Azure App Service で Web アプリまたは API を実行している場合は、それを要求するユーザーまたはアプリケーションの ID に基づいて、そのアプリへのアクセスを制限できます。 App Service は、この目標の達成に役立ついくつかの認証ソリューションを提供しています。 この記事では、さまざまな認証オプション、その長所と短所、特定のシナリオにどの認証ソリューションを使うかについて説明します。
認証ソリューション
- Azure App Service 組み込み認証 - Web アプリ、RESTful API あるいはモバイル バックエンドにおいて、最小限のコードの記述、あるいはコードなしでのユーザーのサインインとデータへのアクセスを可能とします。 これはプラットフォームに直接組み込まれており、特定の言語、ライブラリ、セキュリティの専門知識、あるいはコードの使用すらも必要ありません。
- Microsoft Authentication Library (MSAL) - 開発者が Microsoft ID プラットフォームからセキュリティ トークンを取得して、ユーザーを認証しセキュリティで保護された Web API にアクセスすることを可能とします。 これらは、サポートされている複数のプラットフォームとフレームワークで使用できて、さまざまなホスト環境で使用できる汎用目的のライブラリです。 開発者は、Microsoft Entra、Facebook、Google、X などの複数のサインイン プロバイダーと統合することもできます。
- Microsoft.Identity.Web - MSAL.NET をラップする高レベル ライブラリであり、Microsoft ID プラットフォームと統合された Web アプリと Web API への認証サポートの追加を簡略化する一連の ASP.NET Core 抽象化を提供します。 ASP.NET Core、その認証ミドルウェア、MSAL.NET を結び付ける単一サーフェス API の便利なレイヤーを提供します。 このライブラリは、さまざまなホステッド環境のアプリで使用できます。 ユーザーは、Microsoft Entra、Facebook、Google、X などの複数のサインイン プロバイダーと統合できます。
シナリオに関する推奨事項
次の表に、各認証ソリューションと、それをいつ使用するべきか判断するための重要な要素を示します。
認証方法 | 使用する場合 |
---|---|
組み込み App Service 認証 | * 所有および管理するコードを減らしたい。 * アプリの言語や SDK で、ユーザーのサインインや認可が提供されていない。 * アプリのコードを変更する能力がない (レガシ アプリを移行する場合など)。 * コードではなく、構成を使用して認証を処理する必要がある。 * 外部ユーザーまたはソーシャル ユーザーをサインインさせる必要がある。 |
Microsoft Authentication Library (MSAL) | * いくつかの異なる言語のいずれかでのコードソ リューションが必要である * カスタム認可ロジックを追加する必要がある。 * 増分同意をサポートする必要がある。 * コード内でサインインしているユーザーに関する情報が必要である。 * 外部ユーザーまたはソーシャル ユーザーをサインインさせる必要がある。 * アプリは、ユーザーに再サインインさせることなく、有効期限切れのアクセス トークンに対処する必要がある。 |
Microsoft.Identity.Web | * ASP.NET Core アプリを持っている。 * ローカル開発時に IDE でシングル サインオンのサポートが必要である。 * カスタム認可ロジックを追加する必要がある。 * 増分同意をサポートする必要がある。 * Web アプリで条件付きアクセスが必要である。 * コード内でサインインしているユーザーに関する情報が必要である。 * 外部ユーザーまたはソーシャル ユーザーをサインインさせる必要がある。 * アプリは、ユーザーに再サインインさせることなく、有効期限切れのアクセス トークンに対処する必要がある。 |
次の表に、認証シナリオと、使用するべき認証ソリューションを一覧表示します。
シナリオ | App Service 組み込み認証 | Microsoft Authentication Library | Microsoft.Identity.Web |
---|---|---|---|
組織内のユーザーに対してアクセスを制限する高速かつ簡単な方法が必要ですか? | ✅ | ❌ | ❌ |
アプリケーション コードを変更できませんか (アプリの移行シナリオ)? | ✅ | ❌ | ❌ |
アプリの言語とライブラリでユーザーのサインイン/認可がサポートされていますか? | ❌ | ✅ | ✅ |
コード ソリューションを使用できる場合でも、できればライブラリは使用したく "ない" ですか? メンテナンスの負担は避けたいですか? | ✅ | ❌ | ❌ |
Web アプリで増分同意を提供する必要がありますか? | ❌ | ✅ | ✅ |
Web アプリで条件付きアクセスが必要ですか? | ❌ | ❌ | ✅ |
* アプリは、ユーザーに再サインインさせることなく、(更新トークンを使用して) 有効期限切れのアクセス トークンに対処する必要がありますか? | ✅ | ✅ | ✅ |
サインインしているユーザーに関するカスタム認可ロジックまたは情報が必要ですか? | ❌ | ✅ | ✅ |
外部 ID プロバイダーまたはソーシャル ID プロバイダーからユーザーをサインインさせる必要がありますか? | ✅ | ✅ | ✅ |
ASP.NET Core アプリをお持ちですか? | ✅ | ❌ | ✅ |
シングル ページ アプリまたは静的 Web アプリをお持ちですか? | ✅ | ✅ | ✅ |
Visual Studio 統合が必要ですか? | ❌ | ❌ | ✅ |
ローカル開発時に IDE でシングル サインオンのサポートが必要ですか? | ❌ | ❌ | ✅ |
次の手順
組み込み App Service 認証の使用を開始するには、次を参照してください。
Microsoft Authentication Library (MSAL) の使用を開始するには、次を参照してください。
- Web アプリに Microsoft でのサインインを追加する
- 認証されたユーザーにのみ Web API へのアクセスを許可する
- シングルページ アプリケーション (SPA) にユーザーをサインインさせる
Microsoft.Identity.Web の使用を開始するには、次を参照してください。
App Service 組み込み認証および認可の詳細を確認してください