エンタープライズシステムのシングルサインオン SSOで認証・認可を検討する際に、「SAMLを使うべきか、OAuthを使うべきか」という判断は避けられない課題です。本記事では、両者の本質的な違い、実装方法、選定基準を技術者向けに詳しく解説します。
SAMLとOAuthの根本的な違い
認証(Authentication)vs 認可(Authorization)
SAML(Security Assertion Markup Language) は、ユーザーがだれであるかを証明する「認証」に特化したプロトコルです。XMLベースで、エンタープライズグレードのセキュリティ要件に対応するため、デジタル署名による改ざん検知、属性情報の詳細な交換が可能です。
一方、OAuth 2.0 はユーザーの「認可」、つまり「このアプリケーションが私のリソースにアクセスすることを許可する」という権限委譲に設計されています。ただし、OpenID Connectを組み合わせることで、認証機能も実現できます。
フォーマット:XML vs JSON
SAMLはXML形式のアサーション(認証情報)を用いるため、冗長性は高いものの、セキュリティクリティカルな情報の完全性が必要な環境での信頼性が高いです。一方、OAuthはJSON形式を多用し、RESTful APIとの親和性が高く、モバイルアプリケーションやコンシューマー向けサービスでの実装が容易です。
適用範囲:エンタープライズ vs コンシューマー
SAMLは大企業やセキュリティ要件が厳格な組織向けの標準として、Office 365、Salesforce、Workdayなどのエンタープライズアプリケーションで広く採用されています。一方、OAuthはFacebook、Google、GitHubなどのプラットフォームで採用され、ユーザー中心のセキュアな認可フローを実現しています。
IDaaS導入RFPテンプレート
IDaaS導入の社内稟議に使えるRFPテンプレート。SSO、MFA、プロビジョニングなどの要件を網羅したフォーマットです。
プロトコルフロー比較
SAML認証フロー(3段階)
ユーザー → SP(Service Provider) → IdP(Identity Provider) → SP → ユーザー
(ブラウザ) (企業アプリ) (認証サーバ) (アサーション)
- ユーザーがSP内のリソースにアクセスを試みます
- SPはユーザーをIdPへリダイレクトします
- IdPで認証後、XMLアサーションがPOSTでSPに返されます
- SPはアサーションを検証し、ユーザーにセッションを付与します
OAuth 2.0認可フロー(4段階)
Resource Owner → Client → Authorization Server → Client → Resource Server
(ユーザー) (アプリ) (認可サーバ) (アプリ) (リソースサーバ)
- ユーザーがアプリケーションで「Google でログイン」をクリック
- アプリケーションがユーザーをGoogleへリダイレクト
- ユーザーが権限付与に同意し、認可コードを取得
- アプリケーションがこのコードでアクセストークンを交換
- アプリケーションがトークンを使ってユーザーのリソースにアクセス
技術的詳細比較
| 項目 | SAML | OAuth 2.0 |
|---|---|---|
| 用途 | 認証(Authentication) | 認可(Authorization) |
| フォーマット | XML | JSON |
| 署名・暗号化 | デジタル署名・XML暗号化必須 | TLSベース(署名はOpenID Connect時) |
| メタデータ交換 | 事前のメタデータ交換が必須 | 不要(エンドポイント直接指定) |
| 導入難易度 | 高い(複雑な仕様) | 低い(直感的) |
| リフレッシュメカニズム | セッションベース | リフレッシュトークン |
| 属性情報 | 詳細な属性を標準サポート | OpenID Connect必須 |
実装上の選定基準
SAMLを選ぶべき場合
- 大企業のエンタープライズシステム統合:複数の企業アプリケーション間でユーザー認証を一元化したい
- セキュリティ要件が最優先:金融機関や医療機関など、改ざん防止、監査ログが必須
- オンプレミス環境でのIdentity管理:Active DirectoryやOpenLDAPとの連携が必要
- 既存SAML環境の拡張:組織内で既にSAML導入実績がある
OAuthを選ぶべき場合
- モバイルアプリケーション開発:ネイティブアプリでのセキュアな認可が必要
- コンシューマーサービス:ユーザーが複数のプラットフォームアカウントで利用する想定
- APIファーストの開発:REST APIを中心とした疎結合なアーキテクチャ
- 段階的な権限管理:アプリごとに異なる権限範囲(スコープ)を指定したい場合
ハイブリッドアプローチ
実際の運用では、SAMLとOAuthを組み合わせる企業が増えています。例えば:
- 従業員向けシステム:SAML SSO(Active Directory連携)で実装
- 顧客向けSaaS:OAuth 2.0 + OpenID Connectで実装
- パートナー企業連携:SAMLフェデレーション
LOCKED MSO での両プロトコル対応
LOCKED MSO は、SAML 2.0、OAuth 2.0、OpenID Connectの全対応により、エンタープライズSSO・認可管理を統一的に実現します。
主要な対応機能
- マルチプロトコル同時運用:SAML、OAuth、OIDCを同一の管理画面で構成可能
- 動的属性マッピング:Active Directory、Google Workspace、Microsoft Entra IDからの属性を自動マッピング
- リスクベース認証:異常ログイン検知時の追加認証自動トリガー
- 詳細な監査ログ:全認証・認可イベントの90日以上の保持と可視化
設定の具体例
# SAML設定
Protocol: SAML 2.0
MetadataURL: https://idp.example.com/metadata
NameIDFormat: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
AttributeMapping:
email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
# OAuth設定
Protocol: OAuth 2.0
Scope: openid profile email
TokenEndpoint: https://auth.example.com/oauth/token
UserInfoEndpoint: https://auth.example.com/oauth/userinfo
よくある実装課題と対応策
課題1:SAMLメタデータの期限切れ
問題:メタデータに含まれる署名用証明書の有効期限が切れると、認証ができなくなります。
対応:
- LOCKED MSO の「メタデータ自動更新機能」で、週1回の定期確認
- 証明書更新30日前に情シス担当者に自動通知
- テスト環境での事前検証フロー
課題2:OAuth スコープ権限の過剰付与
問題:不要なスコープを要求すると、セキュリティリスクになります。
対応:
- 必要最小限のスコープのみ指定(openid, profile, emailなど)
- 権限レビュー時に自動監査ログを確認
- 過剰スコープ検知時の警告アラート
実装事例:大手IT企業(社員1,500名)
この企業は、ActiveDirectoryベースのSAML SSO導入後、API連携強化のため段階的にOAuth対応を進めました。
フェーズ1(SAML SSO):3ヶ月で全社導入、パスワード管理コスト年間1,200時間削減 フェーズ2(OAuth API):6ヶ月で開発環境の権限委譲を実装、開発生産性が15%向上
最終的にLOCKED MSO導入により、プロトコル切り替えが容易になり、セキュリティ標準化のサイクルが6ヶ月から3ヶ月に短縮されました。
まとめ
SAMLとOAuthは、用途と要件に応じて選び分けるべきプロトコルです。SAMLはセキュリティと属性情報の詳細さが必要なエンタープライズシーン、OAuthはモバイルアプリやAPI経由のアクセス管理に向いています。LOCKED MSO なら両者を統一管理でき、組織成長に応じた段階的な移行も容易です。
参考資料・外部リンク
関連記事
- SAML 2.0仕様書日本語詳解【RFC 7114準拠実装】
- OpenID Connect完全実装ガイド【OAuth 2.0との違いを徹底解説】
- Microsoft Entra ID完全解説【旧Azure ADとの違い】
- Google Workspace×SSO設定完全ガイド【実装6ステップ】
- SSOセキュリティ課題完全対策【トークンハイジャック・セッション固定攻撃防止】
LOCKEDの詳細を見る
シングルサインオン・認証管理でお悩みなら、LOCKEDの無料デモをお試しください。