MCP EMAとは?Enterprise-Managed AuthorizationのIdP・SSO・ID-JAG設計
MCPのEnterprise-Managed Authorization(EMA)を、IdP・SSO・ID-JAG・組織ポリシー・中央失効の順に整理。通常OAuthやClient Credentialsとの違い、client・server・管理者の確認点を解説します。
公開 2026.08.09 / 更新 2026.08.09
この記事のポイント
- EMAは組織のIdPをMCP serverアクセスの判断主体にし、ユーザーごとの個別OAuthを減らす
- SSOのIdentity Assertionを使ってID-JAGを取得し、MCP Authorization Serverのaccess tokenへ交換する
- client・server・Authorization Server・IdP・管理者の責務を分け、scope・group・role・conditional accessを確認する
- 便利なzero-touch setupだけでなく、中央失効・監査・personal/enterprise account混同防止を設計する
先に結論:EMAはMCPの認証を組織のIdPへ寄せる拡張
MCPのEnterprise-Managed Authorization(EMA)は、各ユーザーが各MCP serverへ個別にauthorizeする代わりに、組織のIdentity Provider(IdP)をアクセス判断の中心に置く拡張です。会社のSSOでユーザーがMCP clientへログインし、IdPがgroup、role、conditional accessなどのポリシーに基づいて接続可否を決めます。MCP公式ブログでは2026-06-18にEMAがstableになったと発表されていますが、実際に使えるclient・server・IdPの組み合わせは個別に確認が必要です。
EMAが解決する企業MCPの4つの負担
- 新しい社員が多数のMCP serverを一つずつauthorizeする負担
- security teamがユーザーごとの許可を追いかけ、統一したpolicyを適用しにくい問題
- 入社・異動・退職時に、各client・各serverのaccessを個別に変更する負担
- 仕事用と個人用のaccountが混ざり、意図しないdata経路ができるリスク
EMAでは、組織の管理者が承認済みMCP serverとアクセスpolicyをIdP側で管理します。ユーザーは会社のidentityでログインし、IdPの判断により接続できるserverだけが利用可能になります。個人開発者が単一serverを自分だけで使う場合は、EMAの導入コストがメリットを上回る可能性があります。
通常OAuth・Client Credentials・EMAの違い
| 方式 | アクセス主体 | 管理の中心 | 向く状況 |
|---|---|---|---|
| 通常MCP OAuth | 個人ユーザー | ユーザーのconsentとserver単位のgrant | 個人が自分のdataへ接続する対話型作業 |
| Client Credentials | サービス / application | client credential、scope、token lifecycle | CI/CD、daemon、server-to-server |
| EMA | 組織に所属するユーザー | 企業IdPのgroup、role、conditional access | 複数serverを組織で一元管理するenterprise |
EMAを導入しても、MCP server側のtool権限、scope、data classification、監査はなくなりません。IdPが接続可否を決める層と、MCP Authorization Serverがtokenとresourceを検証する層を分けて設計します。
EMAの登場人物と責務
| 役割 | 責務 | レビュー項目 |
|---|---|---|
| Enterprise IdP | 組織identity、access policy、approved server、ID-JAGを管理 | group、role、conditional access、revocation、audit |
| MCP client | SSOで得たIdentity Assertionを使い、ID-JAGをaccess tokenへ交換 | capability、設定面、token scope、redirectしないflow |
| MCP server | EMAを要求することをauthorization metadataで示す | 必須拡張、resource、tool scope、client対応 |
| MCP Authorization Server | ID-JAGを検証し、MCP server向けaccess tokenを発行 | signature、audience、issuer、expiry、claims mapping |
| 組織管理者 | IdP admin consoleでserverとpolicyを承認・変更 | onboarding、offboarding、least privilege、監査 |
基本フロー:SSOからID-JAG、access tokenへ
- ユーザーがenterprise IdPを使ってMCP clientへSSOする
- clientがIdentity Assertion(OpenID ID TokenまたはSAML assertion)を保持する
- MCP serverがenterprise-managed authを要求したら、clientがIdPのauthorization endpointへID-JAGを要求する
- clientがID-JAGをMCP Authorization Serverへ渡し、MCP server向けaccess tokenへ交換する
- clientがscopeとresourceを確認し、MCP serverへtool requestを送る
- IdPのgroup、role、conditional accessにより、許可されないserverのtokenは発行されない
{
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/enterprise-managed-authorization": {}
}
}
}clientはper-request capabilitiesでEMA対応を宣言します。宣言できることは、IdP policyが正しいことやMCP serverへの権限があることを意味しません。client、server、Authorization Serverが同じextension identifierを扱い、必要なscopeとfallbackを確認します。
IdP側で設計するpolicy
| policy軸 | 例 | 注意点 |
|---|---|---|
| Server registry | 組織が承認したMCP serverだけを一覧化 | 似た名前の未承認serverを混ぜない |
| Group | 部署・project・環境で利用対象を分ける | 異動時の剥奪が遅れないか |
| Role | read-only、operator、adminを分ける | role名だけでtool権限が広がらないか |
| Conditional access | device、network、risk、時間帯で条件を追加 | 例外と緊急時のfallbackを記録 |
| Lifecycle | onboarding、offboarding、休職、委託終了 | 中央revokeがclientへ反映されるか |
| Audit | 誰がどのserverへいつ接続したか | token実値や個人dataを過剰に保存しない |
EMAの便利さは、ユーザーが一度ログインすれば多くのserverへ接続できることより、管理者が承認・変更・失効を組織単位で扱えることにあります。承認済みserverのregistry、group・roleの棚卸し、offboardingのrevoke、監査ログを運用に組み込みます。
ID-JAGとMCP access tokenを同じものにしない
ID-JAGはenterprise IdPからMCP Authorization Serverへ渡すためのIdentity Assertion JWT Authorization Grantです。MCP serverへ最終的に送るaccess tokenとは役割が違います。Authorization ServerはID-JAGのsignature、audience、issuer、expiration、scope・resource情報を検証し、MCP server向けtokenを発行します。受け取ったassertionやtokenを別のserverへ転送しない境界を保ちます。
| token / assertion | 発行・利用する場所 | 確認すること |
|---|---|---|
| Identity Assertion | enterprise IdPからMCP clientへ | SSO、subject、期限、保存場所 |
| ID-JAG | IdPからMCP Authorization Serverへ | signature、audience、issuer、expiration、claims |
| MCP access token | MCP Authorization Serverからclientへ、serverが受け取る | resource、scope、expiry、server audience |
scopeはEMAでも狭く、組織policyとtool権限を合わせる
- IdPのgroupやroleが許可されても、MCP serverのtool scopeを自動で全許可にしない
- organization、project、environment、read/write/deleteを別のscopeまたはpolicyとして表にする
- standard MCP OAuthと異なるscope制限が出る可能性をclient側で扱う
- scope不足をユーザーへ再同意させるのではなく、IdP policyと管理者承認の不足として切り分ける
- access tokenがあることと、全toolを安全に実行できることを分ける
中央失効とアカウント混同を検証する
EMAの中心的な効果は、ユーザーの退職や権限変更をIdPで処理し、MCP serverへのaccessを中央でrevokeできることです。管理者がgroupを外したあと、既存session、refresh、cache、client表示、server側token検証がどのタイミングで拒否に変わるかをテストします。アカウント連携では、公式ガイドがsubjectを主な安定識別子とし、既存アカウントの照合にemailを補助的に使う考え方を示しています。email文字列だけを恒久IDにしない設計が安全です。
| テスト | 期待する確認 |
|---|---|
| Groupから削除 | 新しいtokenが発行されず、既存accessもpolicyに従って拒否される |
| Roleをreadからwriteへ変更 | 必要なscopeだけが増え、無関係なtoolは広がらない |
| User offboarding | 全client・serverで中央revokeが反映される |
| 個人account混入 | corporate identityとpersonal identityを同じsubjectとして扱わない |
| IdP停止・metadata変更 | 接続を止め、管理者へ通知し、無理なfallbackをしない |
client・server・Authorization Serverの導入チェック
- clientがEMA extensionをcapabilityで宣言し、企業IdPのSSOとIdentity Assertionを扱える
- serverがauthorization metadataでenterprise-managed flowを要求する条件を示す
- Authorization ServerがID-JAGのsignature、audience、issuer、expirationを検証する
- IdP claimsをMCPのscope、resource、accountへ安全にmappingする
- 組織管理者がper-userではなくorganization-level settingsでserverとpolicyを管理できる
- scope不足、未承認server、IdP失敗、revoke、account linkingをテストできる
- client matrixで、使うclient・server・IdPの対応状況とversionを確認する
EMAを導入しない方がよいケース
| 状況 | 理由 | 候補になる考え方 |
|---|---|---|
| 個人が一つのMCP serverを試す | IdP registryや管理者運用のコストが大きい | 通常OAuthを小さく試す |
| ユーザー不在のjob | ユーザーのgroupではなくサービスidentityが主体 | Client Credentialsを検討する |
| ユーザーごとに別のconsentが必要 | 組織一括の許可では意図と合わない | 通常OAuthとserver側scopeを使う |
| clientがEMA非対応 | extensionがopt-inで自動fallbackしない | 対応clientを確認し、通常flowへ戻す |
| IdPのpolicy・監査が未整備 | centralized controlの前提がない | 承認・revoke・ログの運用を先に作る |
client supportは『EMAがstable』だけで判断しない
EMAの公式拡張ページでは、client supportはclientごとに異なり、extensionはopt-inで自動有効ではないと説明されています。公式ブログのstable発表は拡張の状態を示すもので、あなたのCodex、Claude Code、MCP host、server、IdPの組み合わせがすぐ利用できるという意味ではありません。support matrix、clientの管理者設定、serverのauthorization metadataを同じ日付で確認します。
| 確認先 | 確認項目 |
|---|---|
| MCP extension page | flow、capability、client/server/ASの責務 |
| Client support matrix | 使うhost・CLI・IDEのEMA対応と条件 |
| IdP管理画面 | approved server、group、role、conditional access、revoke |
| MCP server | EMA要求、resource descriptor、scope、tool allowlist |
| 運用ログ | subject、server、decision、scope、revoke結果。token実値は除外 |
企業MCP導入前の最小チェックリスト
- EMAが必要な組織課題(server数、onboarding、offboarding、監査、account混同)を言語化した
- 承認済みMCP serverのregistryと、IdPで管理するgroup・role・conditional accessを作った
- client・server・Authorization ServerがEMAの同じextension identifierを扱うと確認した
- SSO、Identity Assertion、ID-JAG、MCP access tokenの保存場所と有効期限を分けた
- ID-JAGのsignature、audience、issuer、expiration、claims mappingをテストした
- MCP tool scopeと組織policyをread/write/delete、environment、project単位で最小化した
- group変更・offboarding・IdP障害・scope不足・未承認serverをテストした
- client support matrixと管理者設定の確認日・versionを記録した
MCP EMAのFAQ
MCP EMAとは何ですか?
Enterprise-Managed Authorizationの略で、組織のIdPをMCP serverアクセスの判断主体にする拡張です。ユーザーが各serverへ個別にOAuth同意する代わりに、SSO、group、role、conditional access、中央revokeで管理します。
EMAは通常のOAuthやClient Credentialsと同じですか?
違います。通常OAuthは個人ユーザーのserver単位の同意、Client Credentialsはユーザー不在のサービスidentity、EMAは組織ユーザーのアクセスをIdPで一元管理する仕組みです。
ID-JAGはMCP access tokenですか?
同じものではありません。ID-JAGはenterprise IdPからMCP Authorization Serverへ渡すIdentity Assertion JWT Authorization Grantで、その検証後にMCP server向けaccess tokenが発行されます。
EMAならユーザーごとの権限確認は不要ですか?
不要にはなりません。IdPのgroup、role、conditional accessと、MCP serverのresource・scope・tool権限を合わせて確認します。中央管理は権限レビューの代替ではありません。
EMAはすべてのMCP clientで使えますか?
使えるとは限りません。公式拡張はopt-inで、client supportは異なります。利用するhost・CLI・IDE、server、IdPの対応と管理者設定を個別に確認してください。
個人開発でもEMAを使うべきですか?
一人で単一serverを試す段階では、通常OAuthの方が運用しやすい可能性があります。複数server、組織アカウント、onboarding・offboarding、監査、中央revokeが必要になったらEMAを検討します。
まとめ:zero-touchの前に、central policyとrevokeを作る
MCP EMAは、SSOで接続を簡単にするだけの機能ではなく、組織のIdPを承認済みserver、group、role、conditional access、監査、中央失効の中心へ置く拡張です。ID-JAGとMCP access tokenを分け、client・server・Authorization Server・管理者の責務を確認し、最初はread-onlyと小さなserver registryから始めます。公式ブログでstableと案内されていても、client・server・IdPの実装対応は別に検証してください。