SSO・SAML・OIDCの違いをやさしく解説:情シスが知っておきたい認証の基礎
認証と認可の違い、IdPとSPの間でブラウザーがリダイレクトされるSSOの流れ、SAMLとOIDCの比較表、IdaaSの選び方、MFA・条件付きアクセスとの関係、導入時の落とし穴を情シス向けに解説します。

SSO(シングルサインオン)とは、IdP(IDプロバイダー)の1つのアカウントで認証を済ませ、複数のサービスにパスワードを入力せずにログインできる仕組みです。SAMLとOIDCは、IdPとサービスの間で「この人は認証済みです」という証明を安全に受け渡すための2つの標準プロトコルで、どちらを使うかは基本的にサービス側の対応状況で決まります。
混同されやすい「認証と認可」の区別から始めて、ブラウザーのリダイレクトで進むSSOの実際の流れ、SAMLとOIDCの違い、Entra ID・Google・Okta・国内IDaaSを比較するときの軸、MFAや条件付きアクセスとの関係、そして導入現場で繰り返し起きる落とし穴を整理します。
この記事でわかること
- 認証(誰か)と認可(何を許すか)の違い、OAuth 2.0とOIDCの関係
- SP-InitiatedとIdP-InitiatedのSSOの流れと、IdPで無効化してもSPのセッションが残る理由
- SAMLとOIDCの違い(形式、通信、鍵の更新、モバイル対応)と、両対応のときの選び方
- IDaaSを比較するときの軸と、「契約済みのスイートに付随するIdPを使う」判断の条件
- 証明書の期限切れ、NameIDの不一致、SSO必須化での締め出しなど、典型的な落とし穴と対処
認証と認可の違い
認証(Authentication)は「あなたは誰か」を確かめることで、認可(Authorization)は「あなたに何を許すか」を決めることです。Google Workspaceにパスワードとパスキーでログインするのが認証、そのユーザーが経理部の共有ドライブを開けるかどうかを決めるのが認可にあたります。SAMLとOIDCが運ぶのは認証の結果(誰が、いつ、どの方法で認証されたか)と、名前・メールアドレス・所属グループといった属性です。認可そのものは、サービス側のロール設定や、IdPから渡されたグループ情報をサービスがどう解釈するかで決まります。
ここで混乱を生むのがOAuth 2.0です。OAuth 2.0は「このアプリに私のカレンダーの読み取りを許可する」という認可の委任の仕組みで、本来はログインのための規格ではありません。「OAuthでログイン」と呼ばれているものは、アプリがアクセストークンでプロフィール情報を取りに行き、それをもって本人とみなす、という各社バラバラの実装でした。OIDC(OpenID Connect)は、OAuth 2.0の上に「IDトークン」という署名付きの認証結果を追加して、認証にも安全に使えるように標準化した仕様です。管理コンソールで「Googleでログインを許可する」と「Googleドライブへのアクセスを許可する」が別の設定になっているのは、この認証と認可の区別がそのまま現れたものです。
SSOの流れ:IdP・SP・ブラウザーのリダイレクト
登場するのは3者です。認証する側のIdP(Entra ID、Google、Oktaなど)、認証結果を受け取ってログインさせる側のSP(Service Provider。OIDCではRP=Relying Partyと呼びます)、そして両者の間を行き来するユーザーのブラウザーです。IdPとSPは直接つながっておらず、証明はブラウザーのリダイレクトで運ばれます。
| 役割 | SAMLでの呼び方 | OIDCでの呼び方 | 中身 |
|---|---|---|---|
| 認証する側 | IdP(Identity Provider) | OP(OpenID Provider)。実務ではIdPと呼ばれる | Entra ID、Google、Oktaなど |
| 認証結果を受け取る側 | SP(Service Provider) | RP(Relying Party)、クライアント | SaaSや社内アプリ |
| 認証の証明 | SAMLアサーション(XML、XML署名付き) | IDトークン(JWT、JWS署名付き) | 誰が・いつ・どの方法で認証されたか、属性(クレーム) |
| 証明の送り先 | ACS URL(Assertion Consumer Service) | リダイレクトURI | SPが証明を受け取るURL |
| 相手の識別子 | エンティティID | クライアントID | IdPとSPが互いを特定するID |
| ユーザーの識別子 | NameID | subクレーム(またはemail) | SPが自分のユーザーを引き当てるキー |
| 設定情報の交換 | メタデータXML | /.well-known/openid-configuration | URLや署名鍵をまとめて取り込むための情報 |
SPから始まるSP-Initiatedの流れは次の通りです。
- ユーザーがSaaSのURLを開く。SPは自分のセッションCookieがないことを確認し、入力されたメールアドレスのドメインから使うIdPを決める
- SPはブラウザーをIdPへリダイレクトする。SAMLでは認証要求(AuthnRequest)、OIDCでは認可リクエスト(client_id、redirect_uri、scope=openid、state、nonce)をURLに載せる
- IdPは自分のセッションを確認する。なければパスワードとMFAを求め、条件付きアクセスのようなポリシーをここで評価する
- IdPが証明を発行する。SAMLではアサーションをHTMLフォームに埋め込み、ブラウザーが自動でACS URLへPOSTする。OIDCでは短命の認可コードをリダイレクトURIに返し、SPがサーバー間通信(バックチャネル)でコードをIDトークンに交換する
- SPは署名、発行者、宛先(Audience)、有効期限を検証し、NameIDまたはsubで自分のユーザーを引き当て、自分のセッションCookieを発行する
- 以後、SPのセッションが切れるまで、SPはIdPに問い合わせない
最後の手順が、運用で最も多くの事故を生む箇所です。IdPでユーザーを無効化しても、すでに発行されたSPのセッションはSP側の有効期限(製品によっては数週間)まで生きています。「退職者をIdPで止めたのにSaaSを使えていた」という事故はここから起きます。SPのアカウント自体を無効化するには、SCIMによるプロビジョニング連携か、SP側での手動無効化が必要で、詳しくはSSO/SCIM対応チェックリストで扱っています。
もうひとつの流れがIdP-Initiatedで、EntraのMyAppsポータルやGoogleのアプリランチャーのタイルをクリックすると、IdPが要求なしにアサーションをSPへPOSTします。SAML固有の機能で、OIDCには相当するものがありません(OIDCのタイルは単にSPのURLを開き、SP-Initiatedとして始まります)。
IdP-InitiatedのSAMLは、SPが「自分が出した要求への応答か」を確認できないため、攻撃者が用意したアサーションを被害者のブラウザーに送り込んで攻撃者のアカウントでログインさせる、といった悪用の余地があります。SPが選ばせてくれるなら、SP-Initiatedを既定にし、IdP-Initiatedはポータルからの利便性が必要な場合に限定してください。
SAMLとOIDCの違い
| 比較軸 | SAML 2.0 | OIDC(OpenID Connect) |
|---|---|---|
| 策定と基盤 | 2005年に標準化。XMLとXML署名(XML-DSig) | 2014年に標準化。OAuth 2.0の上にJSONとJWTを載せたもの |
| 証明の運び方 | ブラウザー経由のHTTP POST/Redirectバインディング | ブラウザーのリダイレクトで認可コードを渡し、SPがバックチャネルでトークンに交換 |
| 得意な領域 | 企業向けWebアプリ。長年の実績で企業向けSaaSのほぼ全てが対応 | Webに加えてモバイル・ネイティブアプリ・SPA・API。新しいSaaSや自社開発はこちらが中心 |
| API呼び出しの認可 | 仕組みなし。別途OAuthなどが必要 | 認証と同時にアクセストークンが得られ、APIの認可まで一体で扱える |
| 署名鍵の管理 | IdPの証明書をSPに手動登録。期限切れで全員ログイン不能になる事故が定番 | JWKSエンドポイントから鍵を自動取得し、ローテーションも自動 |
| 設定情報の交換 | メタデータXMLのアップロードまたはURL指定 | /.well-known/openid-configurationからの自動検出 |
| ログアウト | シングルログアウト(SLO)の仕様はあるが、実装はSaaSごとにまちまち | RP-Initiated Logoutなどの仕様はあるが、こちらも実装はまちまち |
| IdP-Initiated | あり | なし(ポータルのリンクからSP-Initiatedで開始) |
| 実装上の注意 | XML署名の検証ミス(署名ラッピング攻撃)への対策がSP実装頼み | PKCE、state、nonceの検証をSPが正しく実装する必要がある |
| トラブル時の調査 | XMLをブラウザー拡張のSAMLトレーサーで読む | JWTをデコードすればクレームが読める(署名検証は別途) |
SaaSが両方に対応しているなら、OIDCを選ぶ理由のほうが多いというのが私の判断です。決め手は鍵の自動ローテーションで、SAMLで最も多い障害(証明書の期限切れ)が構造的に起きません。モバイルアプリからのログインもOIDCのほうが素直に動きます。ただし、SaaS側のOIDC実装が新しくてグループクレームの受け渡しに制限がある場合や、IdP-Initiatedのポータル運用が必須な場合はSAMLを選びます。SAMLしか対応していないSaaSでSAMLを使うことに問題はなく、期限管理さえ運用に組み込めば安定して動きます。
IDaaSの選択肢:Entra ID・Google・Oktaの比較軸
IDaaS(Identity as a Service)は、IdPをクラウドサービスとして提供するものです。比較で見るべきは、契約済みのスイートに付随しているか、アプリの連携テンプレートの数、SCIMの対応範囲、MFAとアクセス制御の種類、ライフサイクル自動化、オンプレADとの接続、そして費用の考え方です。以下は執筆時点の整理で、機能やプラン構成は変わるため、最新は各社の公式情報で確認してください。
| 比較軸 | Microsoft Entra ID | Google Workspace / Cloud Identity | Okta | 国内IDaaS(HENNGE Oneなど) |
|---|---|---|---|---|
| 前提となる環境 | Microsoft 365の契約に付随(Free。条件付きアクセスはP1) | Workspaceの契約に付随。Workspaceなしでも Cloud Identityとして利用可 | 特定のスイートに依存しない独立系 | 国内SaaSとの連携と日本語サポートが中心 |
| アプリ連携テンプレート | エンタープライズアプリケーションのギャラリー+カスタムSAML/OIDC | SAMLアプリカタログ+カスタムSAML。OIDCは「Googleでログイン」として提供 | Okta Integration Networkが大規模 | 国内SaaS向けテンプレートが多い |
| SCIM | ギャラリーアプリの多くで対応(P1以上) | 対応アプリの自動プロビジョニング(エディションで設定数に上限) | 多くの連携で対応 | 製品による |
| MFA・パスキー | Authenticator、FIDO2、Windows Hello for Business、認証強度 | Googleプロンプト、セキュリティキー、パスキー | Okta Verify、FIDO2ほか | 製品による |
| アクセス制御ポリシー | 条件付きアクセス(P1)、リスクベース(P2) | コンテキストアウェアアクセス(上位エディション) | 適応型MFA、デバイス信頼 | IP制限や端末証明書が中心の製品が多い |
| ライフサイクル・HR連携 | 動的グループ、ライフサイクルワークフロー(Entra ID Governance) | ディレクトリ同期とグループ管理 | Workflows、HRシステム連携が豊富 | 製品による |
| オンプレADとの接続 | Entra Connectで同期 | Google Cloud Directory Sync | AD Agent | 製品による |
| 費用の考え方 | Microsoft 365のプランに同梱。単体はユーザー単価 | Workspaceに同梱。Cloud Identityは無料版と有料版 | ユーザー単価に機能ごとの加算 | ユーザー単価 |
判断の既定値は「すでに費用を払っているスイートのIdPを使う」です。Microsoft 365中心ならEntra ID、Google Workspace中心ならGoogleで、追加費用なしにSSOが始められます。独立系のIDaaSを検討する条件は、Microsoft 365とWorkspaceを両方使っていてどちらかに寄せられない、HRシステム起点の入退社自動化を重視する、連携したいSaaSがスイート側のテンプレートにない、のいずれかです。国内IDaaSは、国内SaaSのテンプレートや日本語サポート、IP制限中心の運用に慣れた会社に向きますが、条件付きアクセスやSCIMの範囲は製品ごとに差があるので、必要な機能を先に列挙してから比較してください。
MFA・条件付きアクセスとの関係
SSOの価値は「認証が起きる場所を1か所に集める」ことにあり、MFAと条件付きアクセスはその1か所に掛ける制御です。IdPでMFAを必須にすれば、SSO対応のSaaSすべてがMFAで守られます。SSOなしでは、SaaSごとにMFA設定が違い、MFAを強制できないSaaSも残るため、「全社MFA」は宣言だけになります。MFAの全社導入を進めるうえで、SSOは前提のインフラです。
条件付きアクセスが評価されるのは、IdPで認証が行われる瞬間だけです。SPのセッションが生きている間はIdPを通らないため、端末が非準拠になってもSPのセッションは続きます。重要度の高いアプリには、IdP側の「サインインの頻度」を短く(管理系なら1〜4時間)設定して再評価の機会を増やします。SaaS側のMFAは、IdPでMFA済みなら二重に求めない設定にし、SSO対象外のブレークグラス管理者だけSaaS側MFAを残します。パスキーなどフィッシング耐性のある認証方法もIdPに1回登録すれば全SPに効くので、条件付きアクセスで管理者に認証強度を要求する構成と相性がよいです。
導入のよくある落とし穴
| 症状 | 原因 | 対処 |
|---|---|---|
| SSO後に「ユーザーが見つかりません」となる、または同じ人のアカウントが2つできる | NameIDにUPNを使い、SaaS側はメールアドレスで登録済み。大文字小文字やエイリアスの違い | NameIDをuser.mailにするか、UPNとメールを一致させる。移行前に両方のユーザー一覧を突き合わせる |
| ある日突然、全員がそのSaaSにログインできない | SAML署名証明書の期限切れ(Entra IDの既定は3年) | 期限をSaaS台帳に記録し1か月前に通知。可能ならOIDCに切り替えて自動ローテーションにする |
| 「SSO必須」にした直後、管理者も締め出された | SSO対象外のブレークグラス管理者を残していない | SaaS側にパスワード+MFAの管理者を1名残し、認証情報を金庫かパスワードマネージャーの管理者領域に保管 |
| IdPで無効化したユーザーがまだ使えている | SPのセッションとモバイルアプリのトークンが残っている | SCIMで無効化し、SP側の強制ログアウト機能を使う。SCIM非対応なら手動無効化を退職手順に入れる |
| 「アサーションの時刻が無効」で拒否される | NotBefore/NotOnOrAfterと、SPまたはIdPの時計のずれ | 両方のNTP同期を確認。自社ホストのSPで起きやすい |
| SSOを入れたのにパスワードでログインしている人がいる | SaaS側が「SSO任意」のまま | 「SSO必須」に切り替え、パスワードログインを無効化する |
| 見積もりが想定の倍になった | SSOが上位プラン限定で、全員分のプランを上げる必要があった | 契約前にSSO/SCIM込みの総額で比較する |
| 業務SaaSに個人のGoogleアカウントでログインしている | 「Googleでログイン」を会社ドメインに限定していない | SaaS側でログイン可能なドメインを制限し、台帳の認証方式に記録する |
SAML証明書の期限切れは、事前通知の宛先を設定していないと当日まで気づけません。Entra IDではエンタープライズアプリの「シングルサインオン → SAML証明書 → 通知用メールアドレス」に情シスのグループアドレスを入れ、他のIdPでも同等の通知設定を確認したうえで、期限をSaaS台帳にも記録してください。担当者個人のアドレスにしていると、異動後に誰にも届きません。
よくある質問
SAMLとOIDCはどちらを選ぶべき?
SaaSが片方しか対応していなければ選択の余地はなく、どちらでも安全に運用できます。両対応なら、署名鍵が自動でローテーションされて証明書の期限切れ事故が起きないこと、モバイルアプリとAPI認可を一体で扱えることから、OIDCを優先します。自社開発のアプリにSSOを組み込む場合も、ライブラリの充実度からOIDCが標準的な選択です。
SSOを導入するとパスワードは不要になりますか?
SaaSごとのパスワードは不要になりますが、IdPのアカウントには認証手段が残ります。IdPでパスキーやWindows Hello for Businessを使えば、ユーザーが日常的にパスワードを入力する場面はほぼなくなります。ただし、SSOに対応していないSaaSや取引先のポータル、共有アカウントのパスワードは残るので、それらはパスワードマネージャーで管理する前提で計画してください。
IdPが止まったらどうなりますか?
新しいログインはできなくなり、すでにログイン済みのセッションはSP側の有効期限まで使えます。対策は、SaaSごとにSSO対象外の緊急用管理者を用意すること、IdPの障害情報ページと連絡手順を決めておくこと、そしてIdP側にも緊急アクセス用アカウントを持つことです。IdPを自社で二重化するより、大手IDaaSの可用性に依存し、障害時の手順を整える方が現実的です。
まとめ
SSOは「認証をIdPに集めて、そこにMFAと条件付きアクセスを掛ける」ための土台で、SAMLとOIDCはその証明を運ぶ手段の違いにすぎません。両対応なら鍵の自動ローテーションがあるOIDC、SAMLしかなければ証明書の期限管理を運用に入れてSAML、という判断で十分です。IdPは契約済みのスイートに付随するものから始め、独立系は複数スイートの併用やHR連携の必要が出てから検討してください。SSOを入れても、SPのセッションはIdPの無効化で消えないことと、SSO必須化の前に緊急用管理者を残すことの2点は、必ず運用手順に書いておくべき事項です。
次に読む
- SaaSのSSO/SCIM対応チェックリスト:契約前の確認項目と、IdP側・SaaS側の設定手順
- Entra IDの条件付きアクセス入門:IdPに集めた認証にMFAと端末条件を掛ける
- ゼロトラストとは?最初の90日で取り組む実践ステップ:IDを中心にしたアクセス制御の全体像