Microsoft Entra ID(旧Azure AD)は、全世界の数百万組織で採用されているクラウドベースのIdentity管理プラットフォームです。本記事では、Entra IDとエンタープライズアプリケーション(SaaS、オンプレミスシステム)を、SAML 2.0で安全に連携させるための完全な設定手順を解説します。
Microsoft Entra IDの概要
エンタープライズアプリケーション(Enterprise Applications)の役割
Entra IDでは、組織内で利用するすべてのアプリケーション(SaaS、オンプレミス)を「エンタープライズアプリケーション」として登録します。
Entra ID(IdP)
├─ Microsoft 365(内部アプリ)
├─ Salesforce(SAML連携)
├─ SAP SuccessFactors(SAML連携)
├─ Slack(SAML/OIDC連携)
├─ 社内基幹システム(SAML連携)
└─ ...その他SaaS
この構造により、1つの従業員アカウント(user@company.onmicrosoft.com)で、複数のアプリケーションへのシングルサインオンが実現されます。
IDaaS導入RFPテンプレート
IDaaS導入の社内稟議に使えるRFPテンプレート。SSO、MFA、プロビジョニングなどの要件を網羅したフォーマットです。
SAML連携の5つのステップ
ステップ1:エンタープライズアプリケーションの追加
1-1. Azure Portalへログイン
Azure Portal URL: https://portal.azure.com
ユーザー: Entra ID管理者アカウント
1-2. Entra IDダッシュボード → エンタープライズアプリケーション → 新しいアプリケーション
【新規アプリケーション追加ダイアログ】
- 「ギャラリーから参照」:Salesforce、Slack等の事前統合テンプレート
- 「独自のアプリケーション」:カスタムアプリケーション(オンプレミスシステム等)
1-3. アプリケーション情報を入力
例:オンプレミス基幹システムの場合
【アプリケーション設定】
- 名前:「SAP System - Production」
- ロゴ:会社ロゴ(オプション)
- ホームページURL:https://sap.company.local/
- ユーザーアクセスURL:https://sap.company.local/sso
ステップ2:SAML設定の構成
2-1. SAML設定(最初に設定を行う)タブをクリック
【[SAML認証](/article/mso/saml-authentication-implementation)構成】ページが開く
- セクション1:基本的なSAML構成
- セクション2:SAML設定(証明書、メタデータURL)
- セクション3:属性とクレーム
- セクション4:SAML署名証明書
2-2. 基本的なSAML構成(セクション1)
ここでアプリケーション側の設定情報を入力します。
【識別子(エンティティID)】
https://sap.company.local/saml/metadata
【応答URL(Assertion Consumer Service URL)**
https://sap.company.local/acs
【サインオンURL】
https://sap.company.local/sso
【ログアウトURL】(オプション)
https://sap.company.local/logout
【リレーステート】(オプション)
ユーザーがSSO後に遷移するURL
https://sap.company.local/home
重要な注意点:
- 識別子とログアウトURLは一意である必要があります(複数アプリ間での重複は不可)
- 応答URLはHTTPSであることが必須(HTTPはセキュリティリスク)
2-3. Entra IDのメタデータ情報を確認
セクション2に表示される情報:
【Entra IDが提供する情報】
- ログインURL:
https://login.microsoftonline.com/{tenant-id}/saml2
- Azure AD識別子(Entra ID のエンティティID):
https://sts.windows.net/{tenant-id}/
- ログアウトURL:
https://login.microsoftonline.com/{tenant-id}/saml2/logout
これらをアプリケーション側(SAP等)に設定します
ステップ3:属性マッピングの設定(セクション3)
Entra IDからアプリケーションへ送信されるユーザー属性を定義します。
3-1. デフォルト属性マッピング(初期状態)
Entra ID属性 → アプリケーション側のクレーム名
user.mail → http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
user.givenname → http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
user.surname → http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
user.objectid → http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
3-2. カスタム属性の追加
例:部門情報をアプリケーションに送信
【新しいクレームの追加】
クレーム名:department
ソース属性:user.department
属性値形式:urn:oasis:names:tc:SAML:2.0:attrname-format:uri
【保存】
3-3. 属性マッピングのベストプラクティス
# 最小限必須
user.mail → email
user.objectid → uid(または nameidentifier)
# 推奨
user.givenname → firstName
user.surname → lastName
user.department → department
user.officeLocation → location
# 高度な設定(カスタム拡張属性)
extension_d4d30e1b4d3c4f2e8b1a7c6f5d4e3c2b_department → dept_code
ステップ4:SAML署名証明書の管理(セクション4)
Entra IDがSAML Assertionに署名するための証明書を管理します。
4-1. 証明書情報の確認
【現在のSAML署名証明書】
- サムプリント:
3D82A8B5C4E2F1D9A6B7C8E9F0D1A2B3C4D5E6F7
- 有効期限:
2026年3月5日(約2年)
- 署名アルゴリズム:
SHA-256
- X.509証明書:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKHHCgVDRV2dMA0GCSqGSIb3...
-----END CERTIFICATE-----
4-2. 証明書のダウンロード
アプリケーション側に証明書をアップロードするため、PEM形式またはBase64形式でダウンロードします。
【証明書ダウンロード】
- Base64エンコード済み証明書(推奨:大多数のアプリ対応)
- フェデレーションメタデータXML(全ての設定情報を含む)
4-3. 証明書更新の自動化(重要)
証明書有効期限を超過すると、SSO認証が一切機能しなくなります。Entra IDは自動的に30日前から新しい証明書を発行します。
【Entra ID側の自動更新プロセス】
- T-30日:新証明書を生成(Entra ID管理画面に表示)
- T日:新証明書が自動的に有効化
- T+30日:旧証明書は無効化
アプリケーション側では、これ以前に新証明書を導入済みにしておく必要があります。
推奨手順:
- T-30日の段階で、新しい証明書をダウンロード
- アプリケーション側の管理画面で新証明書を登録
- 両証明書が並行して動作することを確認(トランジション期間)
- T+30日後、旧証明書を削除
ステップ5:テストとトラブルシューティング
5-1. シングルサインオンのテスト
Entra ID管理画面から直接テストを実施:
【テストの実施】
1. 「ユーザーを試す」ボタンをクリック
2. Entra IDのテストユーザーでログイン
3. アプリケーションのACSに正常にリダイレクト
4. アプリケーションで正常にセッションが作成される
5-2. SAML Responseの検証ツール
ブラウザの開発者ツール(F12)またはSAML検証ツールを用いて、Responseの内容を確認:
<samlp:Response>
<saml:Issuer>
https://sts.windows.net/{tenant-id}/
</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion>
<!-- Assertion内容を確認 -->
<saml:Subject>
<saml:NameID>user@example.com</saml:NameID>
</saml:Subject>
<saml:AttributeStatement>
<!-- 属性が正しく含まれているか確認 -->
<saml:Attribute Name="email">
<saml:AttributeValue>user@example.com</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
5-3. 一般的なトラブル
| エラー | 原因 | 対応 |
|---|---|---|
| エンティティIDの不一致 | 識別子の設定が間違っている | Entra ID側と APP側の識別子を確認 |
| 署名検証エラー | 証明書が期限切れ | 新しい証明書をダウンロードし再登録 |
| 属性がない | 属性マッピングが未設定 | Entra IDの属性マッピングを確認 |
| ACSへのリダイレクト失敗 | 応答URLが間違っている | HTTPS & 完全なURLを確認 |
グループベースのアクセス制御(Advanced)
Entra IDのグループ機能を用いて、アプリケーションへのアクセスを制御できます。
【グループマッピング設定】
1. Entra ID上でセキュリティグループを作成
- "SAP-Users"(全従業員)
- "SAP-Admins"(管理者のみ)
- "SAP-Finance"(経理部門のみ)
2. グループ属性をアプリケーションに送信
- アプリケーション側で、ユーザーのグループメンバーシップを確認
- グループに基づいて、アプリケーション内での権限を自動割り当て
3. Entra ID内でグループメンバーを管理
- 新入社員がグループに追加される
- 自動的にアプリケーション内でも権限が付与される
LOCKED MSO での自動化
LOCKED MSO は、Entra ID連携の複雑さを大幅に軽減します。
LOCKED MSO の役割
ユーザー → LOCKED MSO(Conditional Access層)
↓
【リスクベース認証判定】
- デバイス確認
- 異常ログイン検知
- 地理情報確認
↓
Entra ID(SAML IdP)
↓
アプリケーション(SAML SP)
LOCKED MSO を導入すると:
- Entra IDの属性に加え、LOCKED MSO側でも追加の認証・認可判定が可能
- Entra IDで管理できない細粒度の制御(IPアドレス、デバイスチェックなど)を実装
- 全ログインイベントの統一的な監査ログ(90日以上保持)
大規模企業での運用事例
日本の大手電機メーカー(従業員10,000名)
課題
- 複数国の子会社の従業員が、異なるアカウント体系で運用されていた
- オンプレミスActive DirectoryとOffice 365が同期していない箇所が存在
- SaaS申し込み時の認可フローが手動で、申請~承認に2週間要する
実装内容
- グローバルEntra IDテナント統合:6ヶ月かけて全拠点を統一テナントに移行
- SAML連携自動化:LOCKED MSO により、新規SaaS追加時の設定を1日で完了
- アクセス制御の自動化:Entra IDグループ + LOCKED MSO リスク判定で、99%自動承認
成果
- パスワードリセット:年間3,000件 → 500件(83%削減)
- SaaS申請処理時間:14日 → 1日(93%短縮)
- セキュリティインシデント(フィッシング):0件(100%防止)
まとめ
Entra IDのSAML連携は、正確な設定と証明書管理が必要ですが、一度確立すると極めて堅牢です。大企業では、複数部門のSaaS利用、ハイブリッド環境でのアクセス制御、グローバル展開など、複雑な要件に対応可能です。
LOCKED MSO を組み合わせることで、Entra IDの機能を最大限に活かしながら、追加のセキュリティ層を実装できます。
参考資料・外部リンク
関連記事
- SAML vs OAuth完全比較【プロトコル仕様から実装まで】
- SAML 2.0仕様書日本語詳解【RFC 7114準拠実装】
- Microsoft Entra ID完全解説【旧Azure ADとの違い】
- OneLogin SAML設定ガイド【メタデータ取得から実装まで】
- SSOセキュリティ課題完全対策【トークンハイジャック・セッション固定攻撃防止】
LOCKEDの詳細を見る
シングルサインオン・認証管理でお悩みなら、LOCKEDの無料デモをお試しください。