はじめに
SAML、OAuth 2.0、Kerberos(ケルベロス)──認証まわりの用語は聞き覚えはあっても、どれが何をしていてどう使い分けられているのかが混乱しやすい領域です。
僕自身、SSO(シングルサインオン)について調べていた際に「SAMLとOAuthの違いって何?」「Kerberosって古い?」などと疑問だらけでした。
そこで今回は、 SSOの実現に関わる代表的な技術(SAML / Kerberos / OAuth 2.0 / OpenID Connect) を中心に、それぞれの役割や登場シーン、関係性を整理してまとめました。
似たような混乱に陥った方の整理メモとして少しでも役立てば嬉しいです。
シングルサインオン(SSO)とは
SSO(Single Sign-On)は、一度のログインで複数のサービスに再ログインなしでアクセス可能にする仕組みである。
たとえばGoogleアカウントでSlackにログインしたり、Windows端末にログインするだけで社内ファイルサーバーにもアクセスできるといった例がSSOにあたる。
Googleアカウントのような外部サービス連携ではSAMLやOIDCが、社内LANでのアクセス制御にはKerberosが使われることが多い。
このSSOを実現するためにさまざまな技術が利用されている。
特に代表的なものが、 SAML / Kerberos / OAuth 2.0 / OpenID Connect(OIDC) である。
各技術の役割と使われ方
以下は各技術の主な役割と用途を簡単に整理した。
| 技術 | 役割 | 主な用途 | 備考 |
|---|---|---|---|
| SAML | 認証 | Webサービス間のSSO(Google, Slack など) | XMLベース。IdPとSPで構成される |
| Kerberos | 認証+チケット発行 | 社内ネットワークでのSSO(AD環境など) | TCP通信を用いたチケット認証方式 |
| OAuth 2.0 | 認可 | APIや外部アプリへのアクセス権限の委譲 | 認証ではなく「権限移譲」が目的 |
| OpenID Connect | 認証 | 「Googleでログイン」などのSSO | OAuth 2.0をベースとした認証プロトコル |
OAuth 2.0はSSOなのか?
OAuth 2.0はよくSSOと混同されるが、 本来はSSOそのものではない 。
OAuth 2.0は、他のアプリにアクセス権限を与える「 認可(Authorization) 」の仕組みであり、ユーザーの本人確認(認証)は目的としていない。
SSOに必要な「 認証(Authentication) 」の役割を担うのが、OAuth 2.0の拡張仕様である OpenID Connect(OIDC) である。
たとえば、以下のようなログイン方式は OAuth 2.0 + OIDC によって構成されている。
-
Googleアカウントでログイン
-
LINEログイン
-
Appleでサインイン
このように、 OAuth 2.0はSSOの基盤技術にはなるが、それ単体ではSSOを実現できない 点に注意が必要である。
SAMLとKerberosの違いと使い分け
SAMLとKerberosはいずれもSSOを実現する技術だが、使われる環境がまったく異なる。
| 比較項目 | SAML | Kerberos |
|---|---|---|
| 主な用途 | Webサービス間のSSO(SaaS連携など) | 社内ネットワークのSSO(ファイル共有、社内Webなど) |
| 通信プロトコル | HTTP + XML | TCP + 暗号化チケット |
| 認証基盤 | IdP(Identity Provider:例 Azure AD、Okta) | KDC(Key Distribution Center) |
| 利用環境 | ブラウザベースのインターネット環境 | LAN内、Windowsドメイン |
| 代表例 | Google Workspace、Slack | Active Directory配下のWindows端末 |
まとめると、 社外SaaSとのSSOにはSAMLまたはOIDC 、 社内ネットワーク内のSSOにはKerberos が適している。
SSOの実現方式と技術の関係性
SSOにはさまざまな実現方式が存在し、それぞれに対応する技術がある。
| 実現方式 | 概要 | SAMLとの関係 | Kerberosとの関係 |
|---|---|---|---|
| フェデレーション方式 | トークン(SAMLやOIDC)を通じてサービス間で認証情報を共有 | ◯ 主役 | ✕ 無関係 |
| チケット方式 | チケットを用いて社内リソースへ認証付きアクセスを行う | ✕ 無関係 | ◯ 主役 |
| リバースプロキシ方式 | プロキシが認証・認可を中継。SAMLやKerberosと併用されることも | △ 補助的 | △ 補助的 |
| エージェント方式 | アプリに認証モジュールを組み込む | △ 拡張次第 | △ 拡張次第 |
| クッキー共有方式 | 認証Cookieをサブドメイン間で共有 | ✕ 無関係 | ✕ 無関係 |
技術マッピングまとめ
以下の図式で整理できる。
| 【用途】 | 【技術】 |
|---|---|
| 社外WebサービスSSO | SAML / OpenID Connect(OAuth 2.0拡張) |
| 社内LAN環境SSO | Kerberos |
| 認可(アクセス権の委譲) | OAuth 2.0 |
| 認証(Web向けSSO) | OpenID Connect(OAuth 2.0拡張) |
おわりに
SSOまわりは用語が似ていたり役割が重なっていたりするため最初は混乱しやすい領域です。
僕自身も用語の整理と使い分けの観点をはっきりさせることで理解が進みました。
同じように「どれがどの技術で、どう使われるのか?」と迷っている方の参考になれば幸いです。