Contents
前提条件と必要なライセンス
Entra ID(旧 Azure Active Directory)でシングルサインオン(SSO)を構築する際に最初に確認すべきは、テナントが Microsoft Entra ID P1 以上のエディションであることです。本節では、ライセンスの種類とそれぞれが提供する機能、さらに管理者ロールやテナント設定の必須要件を整理します。
- P1 エディション は条件付きアクセスやアプリ登録、基本的な属性マッピングをサポートします。
- P2 エディション ではリスクベースの自動保護(Identity Protection)や高度なガバナンス機能が追加されます。
Free エディションでも「Enterprise applications」メニューは表示されますが、SSO に必要な 条件付きアクセスや属性マッピング といった機能は利用できません。そのため、実運用で SSO を有効にするには必ず P1 以上のライセンスが必要です【1】。
必要な管理者ロールとテナント前提条件
| 必要項目 | 内容 |
|---|---|
| ライセンス | Entra ID P1 以上(サブスクリプションに含まれるか、個別購入) |
| テナント所有権 | カスタムドメインを追加し、所有権確認が完了していること |
| 管理者ロール | 「全体管理者」または「アプリケーション管理者」ロールが付与されたユーザー |
結論:上記要件が満たされていれば、以降のポータル操作や SSO 設定に進めます。
Azure ポータルでの基本操作
このセクションでは、現在(2024 年 11 月時点)公開されている Azure ポータル UI を前提に、SSO 用カスタムアプリケーションを作成する手順を解説します。将来的な UI の変更は Microsoft のリリースノートで随時告知されますが、本稿では 実際に確認できる画面 に基づく説明のみを行います【2】。
ポータルへのサインインとテナント選択
管理者アカウントで Azure ポータル (https://portal.azure.com) にサインインし、対象テナントへ切り替える手順です。
1. ブラウザでポータルにアクセスし、組織アカウントでログインします。
2. 左側メニューの 「Microsoft Entra ID」(または 「Azure Active Directory」) をクリックします。
3. 画面右上のテナント名をドロップダウンから選択し、作業対象テナントに切り替えます。
エンタープライズ アプリケーションの新規作成
カスタムアプリは Enterprise applications の配下で登録します。以下は UI の主要ステップです(図は省略)。
- 左メニュー → Enterprise applications → + 新しいアプリケーション を選択
- 「自分の組織で使用するカスタム アプリ」をクリックし、任意の表示名を入力して 作成
- 作成後に表示される シングルサインオン タブでプロトコル(SAML または OpenID Connect)を選択
ポイント:この画面で「アプリ種別」は選択したプロトコルに応じて自動的に設定されます【3】。
SSO プロトコルの比較と導入シーン
SAML と OpenID Connect(OIDC)はどちらもフェデレーション認証を実現しますが、設計思想や適用領域に違いがあります。本節ではそれぞれの特徴を整理し、典型的な利用ケースを提示します。選定時の判断材料としてご活用ください。
プロトコル別の主な特長
- SAML は XML ベースで構造化された Assertion を返すため、エンタープライズ向け Web アプリや SaaS の統合に適しています。属性マッピングが豊富で、既存の IdP(例:ADFS)との互換性も高いです【4】。
- OpenID Connect は OAuth 2.0 の上位仕様であり、JSON Web Token (JWT) を利用するため軽量かつモバイル・SPA に最適です。PKCE や動的クレーム取得といった最新のセキュリティ機構も標準で提供されます。
推奨シナリオ表
| シナリオ | 推奨プロトコル | 主な理由 |
|---|---|---|
| 社内 ERP(Web) | SAML | 既存 IdP が SAML 対応、属性マッピングが必須 |
| モバイルアプリ(iOS/Android) | OIDC | JWT のサイズが小さく、ネットワーク負荷が低減 |
| SPA と MFA の組み合わせ | OIDC + PKCE | フロントエンドでの安全な認可コード取得が可能 |
結論:レガシーなエンタープライズ向けサービスは SAML、クラウドネイティブやモバイル環境は OIDC が自然な選択です。
各プロトコルの設定フロー
以下では、実際に Azure ポータル上で入力する項目とその意味を具体的に示します。表記は 2024 年版 UI に合わせてありますので、最新版でも概ね同様です(UI 名が変更された場合は公式ドキュメントをご参照ください)。
SAML 設定手順
SAML の主要パラメータは Entity ID (Identifier) と Assertion Consumer Service (ACS) URL です。属性マッピングと証明書の取り扱いも合わせて解説します。
- Identifier(Entity ID)
-
「シングルサインオン」→「SAML」画面で、
https://myapp.example.com/saml/metadataのように SP が提供するメタデータ URL を入力。 -
Reply URL(ACS URL)
-
同画面の Reply URL に
https://myapp.example.com/saml/acsを設定。「Assertion Consumer Service URL」と表記されることがありますが同義です。 -
証明書のアップロード
-
「SAML 証明書」セクションで、SP が発行した X.509 証明書(Base64)を貼り付けます。証明書の有効期限は必ず確認し、更新スケジュールを別途管理してください【5】。
-
属性マッピング
-
「ユーザー属性 & クレーム」から
email,given_name,surnameなど必要なクレームを追加し、Entra ID の属性と対応付けます。カスタムクレームは式エディタで組み立てられます。 -
保存 & テスト
- 設定完了後に「テスト」ボタンをクリックすると、SAML リクエストが生成されプレビューリンクから SP にリダイレクトできます。
OpenID Connect 設定手順
OIDC では リダイレクト URI と クライアントシークレット が最重要項目となります。スコープやカスタムクレームの設定方法も合わせて示します。
- リダイレクト URI の登録
-
「シングルサインオン」→「OpenID Connect」画面で
https://myapp.example.com/auth/callbackなどアプリが受け取るエンドポイントを追加。複数の URI をカンマ区切りで登録可能です。 -
クライアント ID / シークレット取得
- ページ下部に表示される Application (client) ID がクライアント ID です。
-
「シークレットの生成」ボタンで新しいシークレットを作成し、表示された文字列は即座に安全な場所へ保存します(再取得不可)。
-
スコープ設定
-
必須スコープ
openidに加え、profile,emailなど必要情報をカンマで追加。カスタム API がある場合は「API のアクセス許可」から対象 API を登録し、必要な権限(例:User.Read) を付与します。 -
クレーム構成
-
「Token configuration」→「+ クレーム」を選択し、標準クレーム (
email,name) やカスタムクレームを追加できます。 -
保存 & テスト
- 設定後に「テスト」リンクをクリックし、認可コードフローが正常に完了すればブラウザにアクセストークン取得画面が表示されます。
割り当て・テスト・運用のベストプラクティス
設定が完了したら、ユーザーやグループへのアプリ割り当て、条件付きアクセスの適用、実環境での検証を行います。ここでは運用上頻出する課題とその対策をまとめました。
ユーザー/グループへのアプリ割り当てと条件付きアクセスポリシー
- 割り当て手順
-
「Enterprise applications」→対象アプリ →「ユーザーとグループ」から + 割り当て を選択し、対象のユーザーまたはセキュリティ グループを指定します。
-
条件付きアクセス設定例
- Azure AD → 「条件付きアクセス」→「新規ポリシー作成」
- 対象:先ほど割り当てたグループ
- クラウド アプリ:対象アプリ
- 付与:
MFA を要求と承認済みデバイスのみ許可
条件付きアクセスポリシーは P1 以上で利用可能です【1】。
テストユーザーによるサインイン検証手順
- アプリ詳細画面の 「テスト」 ボタンをクリックし、プレビューリンクを取得。
- テストユーザーで Azure ポータルにサインインした状態でリンクを開くと、自動的に SSO が実行されます。
- 取得された属性(例:メールアドレス)が期待通りか、エラーメッセージが出ないか確認します。
主なエラーコードと対処法
| エラー | 原因例 | 推奨対応 |
|---|---|---|
| Invalid audience (OIDC) | クライアント ID とトークン aud が不一致 |
Azure ポータルで Application ID URI を正しく設定し、SP 側の期待値と合わせる |
| Certificate expired (SAML) | IdP 証明書の有効期限切れ | 新しい証明書を取得し、証明書アップロード 手順を再実行。自動リマインダーは Azure AD の監査ログで設定可 |
| User not assigned | ユーザーがアプリに割り当てられていない | 「ユーザーとグループ」から対象ユーザーを追加、または「全員に対して許可」ポリシーを利用 |
| Redirect URI mismatch | 登録したリダイレクト URI と認可要求が不一致 | 正確な URI(末尾スラッシュ含む)を再確認し、ポータルで統一 |
監査ログとトラブルシューティング
- サインインログ:Azure AD →「サインイン」から対象ユーザー・アプリをフィルタリング。エラーコードや失敗原因が一覧表示されます。
- 診断設定:Log Analytics ワークスペースへシグナリングデータを送信し、
AuthenticationDetailsクエリで詳細トレース取得可能です【5】。 - リアルタイムアラート:条件付きアクセスポリシーの失敗や証明書期限切れは Azure Monitor のアラートで自動通知できます。
セキュリティチェックリスト(運用フェーズ)
| チェック項目 | 推奨設定 |
|---|---|
| MFA 必須化 | 条件付きアクセスポリシーで全ユーザーまたは高リスクグループに MFA を強制 |
| 証明書有効期限管理 | 証明書の有効期限が 90 日以内になると Azure AD の通知機能でメール送信 |
| 最小権限の原則 | アプリへのロールは User または Reader に限定し、管理者権限は付与しない |
| トークン有効期限 | OIDC のアクセストークンは 1 時間以内、リフレッシュトークンは 90 日以内に設定(組織ポリシーに合わせて調整) |
自動化例:PowerShell と Azure CLI
| ツール | 主なコマンド例 |
|---|---|
| PowerShell (AzureAD モジュール) | New-AzureADApplication -DisplayName "MyApp" -IdentifierUris "api://myapp" Set-AzureADServicePrincipal -ObjectId $sp.ObjectId -AccountEnabled $true |
| Azure CLI | az ad app create --display-name MyApp --reply-urls https://myapp.example.com/auth/callback az ad sp credential reset --name <app-id> --credential-description "SSO secret" --years 2 |
上記スクリプトは Microsoft Learn の 「Entra ID アプリケーション自動化」 ページに掲載されている公式サンプルです【6】。
参考文献・リンク
- Microsoft Docs, Microsoft Entra ID licensing overview, 2024年10月, https://learn.microsoft.com/ja-jp/entra/identity/licensing/
- Microsoft Docs, Azure portal UI reference (2024), 2024年9月, https://learn.microsoft.com/ja-jp/azure/active-directory/fundamentals/active-directory-howto-portal
- Microsoft Docs, Add an enterprise application – SAML or OIDC, 2024年11月, https://learn.microsoft.com/ja-jp/azure/active-directory/manage-apps/add-enterprise-applications
- Microsoft Docs, SAML protocol details for Azure AD, 2023年12月, https://learn.microsoft.com/ja-jp/azure/active-directory/develop/saml-protocol-reference
- Microsoft Docs, Diagnostic logs and monitoring for Entra ID, 2024年8月, https://learn.microsoft.com/ja-jp/entra/identity/monitoring/
- Microsoft Learn, Automate Entra ID app registration with PowerShell & CLI, 2024年7月, https://learn.microsoft.com/ja-jp/training/modules/automate-app-registration/
以上の手順とベストプラクティスに従うことで、Microsoft Entra ID におけるシングルサインオン設定 を確実に行えます。公式ドキュメントは随時更新されるため、導入前後には必ず最新情報を確認してください。