ログイン機能の仕組みを整理!認証・認可・SSO・OAuthの違いとは

ログイン機能の仕組みを整理!認証・認可・SSO・OAuthの違いとは

「OAuthで認証機能を実装する」「SSOとSAMLはどう違う?」

Web開発や情シス業務に携わっていると、このような会話の中で用語が混ざってしまい、混乱することは珍しくありません。ログイン周りの用語は、言葉の響きが似ていても「指しているレイヤー(階層)」がまったく異なります。

結論から言うと、これらは以下のように分類することでスッキリ整理できます。

  • 認証・認可:行為の定義(誰か? 何ができるか?)
  • SSO:ユーザーが得られる便利な「体験」
  • フェデレーション:システム同士の信頼の「仕組み」
  • OAuth / OIDC / SAML:情報を受け渡すための「ルール(規格)」

この記事では、混同しがちなログイン周りの用語を、なるべく分かりやすく紐解いていきます。

目次

認証(Authentication)と認可(Authorization)の違い:すべての基礎

まず最初に区別しなければならないのが、「認証(Authentication / AuthN)」と「認可(Authorization / AuthZ)」の違いです。英単語も似ていますが、セキュリティの観点では明確に役割が分かれています。

認証(AuthN)は、「あなたが誰であるか」を確認するプロセスです。

IDとパスワードの入力、生体認証、多要素認証などがこれにあたります。システムが「この操作をしているのは、間違いなく登録されている田中さん本人だ」と特定する作業と言い換えられます。

認可(AuthZ)は、「あなたが何をしてよいか」という権限を与えるプロセスです。

たとえ本人確認(認証)が済んでいても、管理者権限がなければ設定画面には入れません。この「アクセス権限の制御」が認可です。

分かりやすい例として、ホテルのチェックインを想像してみてください。

フロントで身分証を見せて本人確認をするのが「認証」。そこで渡されたカードキーを使って、特定の部屋やラウンジだけに入れるようにするのが「認可」です。Webシステムでの「401エラー(認証が必要)」と「403エラー(権限不足)」の違いも、この概念に基づいています。

シングルサインオン(SSO)とフェデレーション:体験と仕組み

次に整理すべきなのが、SSO(シングルサインオン)とフェデレーションの関係です。これらは対立する言葉ではなく、「目的」と「手段」に近い関係性を持っています。

SSOは、ユーザー視点の「体験」を指す言葉です。

一度のログイン処理だけで、メール、チャット、勤怠管理など、複数の異なるサービスを利用できる状態を指します。ユーザーにとっては「パスワードを何回も入力しなくて済む」「パスワード管理の手間が減る」というメリットがあります。

一方、フェデレーションはシステム視点の「信頼の仕組み」です。

Aというシステムで行った本人確認の結果を、信頼関係にあるBやCという別のサービスでも「よし、その結果を信じよう」と受け入れる構成を指します(ID連携とも呼ばれます)。

企業などでSaaSの導入数が増えると、社員1000人分のIDをサービスごとに作成・管理するのは現実的ではありません。そこで、「会社の中心となるシステムで一度だけ認証し、各SaaSはその認証結果を信頼して受け入れる」というフェデレーションの仕組みを使って、SSOという快適な体験を実現しているのです。

IdP(Identity Provider)とSP(Service Provider):登場人物の役割

フェデレーション(ID連携)を実現するためには、明確な役割分担が必要です。ここで登場するのがIdPSP(またはRP)という2つの主要なプレイヤーです。

IdP(Identity Provider)は、「IDの提供者」つまり認証を行う親元です。

ユーザー情報のデータベースを持ち、パスワードなどを検証して「この人は本人です」というお墨付き(認証トークンなど)を発行します。Google、Microsoft Entra ID(旧Azure AD)、Oktaなどが代表的なIdPです。

SP(Service Provider)は、IdPの認証結果を利用する「サービス提供者」です。

Salesforce、Slack、ZoomなどのSaaS側がこれに当たります。SPは自前でパスワード認証を行う代わりに、IdPが発行したお墨付きを受け取り、検証してユーザーをログインさせます。なお、OIDCの文脈ではRP(Relying Party)と呼ばれることもありますが、役割はほぼ同じです。

この関係性を理解すると、「IdPで障害が起きると、連携しているすべてのSPにログインできなくなる」といったリスク構造も見えてくるようになります。

OAuth 2.0 / OIDC / SAML の違いと使い分け:規格の整理

IdPとSPの間で「認証済みですよ」「権限を与えますよ」という情報をやり取りするためには、共通の言語(プロトコル)が必要です。それがOAuth 2.0、OIDC、SAMLです。

それぞれの特徴と違いを以下の表に整理しました。

スクロールできます
規格名主な役割データ・通信の形式主な利用シーン
OAuth 2.0認可(権限の委譲)JSON(レスポンス)
※トークン形式は未規定
API連携(「Googleフォトの写真を印刷アプリに渡す」など)
OIDC
(OpenID Connect)
認証 + 認可JWT / JSONスマホアプリやWebサービスの「Googleでログイン」など
SAML 2.0認証 + 認可XML企業の社内システムやSaaSへのSSO(業務利用が主流)

SAML(サムル)は歴史が長く、XML形式を使うため少し重厚ですが、セキュリティ要件の厳しい企業間SSOで標準的に使われています。

一方、OIDC(オープンアイディーコネクト)は、OAuth 2.0の仕組みの上に「認証レイヤー」を追加した規格です。OIDCはOAuth 2.0に依存しており単独では動作しませんが、JSONベースで扱いやすく、モバイルアプリやモダンなWeb開発の現場では主流となっています。

OAuthとOIDCが混同される理由と解決策

OAuthとOIDCが混同される理由と解決策

ここまでの解説で一番ややこしいのが、「OAuth 2.0」と「OIDC」の関係です。

「OAuthでログイン機能を実装しました」と言うエンジニアがいますが、厳密にはOAuthは「認可(権限委譲)」のプロトコルであり、認証(本人確認)のためのものではありません。

OAuthの本来の使い方は、「家の合鍵(パスワード)は渡さないけれど、特定の部屋に入れるチケット(アクセストークン)だけ渡す」ようなものです。

なお、OAuth 2.0の仕様ではこの「チケット(アクセストークン)」の形式を定めていません(不透明な文字列の場合もあれば、JWTの場合もあります)。いずれにせよ、これだけでは「チケットを持っているのが誰か(ID情報)」までは保証されません。

そこで、OAuthの仕組みの上に「本人確認機能(IDトークン)」を乗せたのがOIDCです。

OIDCでは、認可のための「アクセストークン」に加え、身分証明書にあたる「IDトークン(JWT形式)」がセットで発行されます。これにより、アプリ側は「誰がログインしたか」を安全に知ることができるのです。

「API連携で機能を使わせたいだけならOAuth」、「ユーザーとしてログインさせたいならOIDC」と使い分けるのが基本です。

まとめ

ログイン周りの技術は、用語の「レイヤー」を意識することで整理できます。

  • 行為:認証(本人確認)と認可(権限付与)は別物。
  • 体験:SSOはユーザーにとってのメリット。
  • 仕組み:フェデレーションで信頼関係を結ぶ。
  • 役割:IdPが証明し、SPがそれを使う。
  • ルール:SAMLは企業向け、OIDCはモダンなWeb/アプリ向け。

開発の現場やツールの選定において、「今、体験の話をしているのか? 通信規格の話をしているのか?」を意識するだけで、コミュニケーションのズレは劇的に減ります。ぜひこの地図を頭の片隅に置いて、認証基盤の設計や運用に役立ててください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次