>

>

SAMLとOAuthの違い

>

>

SAMLとOAuthの違い

SAMLとOAuthの違い

HC

橋爪兼続

Jul 21, 2023

認証と認可

シングル・サインオン(以下、SSO)を実現する方法として、SAMLとOAuthとがあります。この2つについて何が異なるのか良く解らないという事が多いと思います。この記事では、この2つの違いについてわかりやすく解説します。

SAMLとOAuthを理解するためには、認証と認可の違いを理解する必要があります。この2つはよく似ていますが、異なります。

認証(Authentication): 「あなたは誰ですか?」 を確認することです。例えば、次に挙げたものを確認することが認証です。

  • What you are:相手自身の特徴を確認 例)指紋認証や顔認証

  • What you have:相手が持っているものを確認 例)免許証やパスポート

  • What you know:相手が知っていることを確認 例)email と password

認可(Authorization):認可は 「あなたには、リソースにアクセスする権限がありますか?」 を確認することです。例えば次のような事例が認可です。

  • 家の鍵を持っているから、家に入ることができる

  • バスの乗車券を持っているから、バスに乗ることができる

SAMLは「認証」に対応するプロトコルであり、OAuthは「認可」に対応するプロトコルです。

SAMLとOAuthの仕組み

SAMLの仕組み

SAMLでは認証情報を提供する側を「IdP(Identity Provider)」と呼び、認証情報を利用する側(一般的にアプリケーションやサービス側)を「SP(Service Provider)」と呼びます。SAMLによる認証フローがどのようになっているのかを簡単にご紹介します。

*SP Initiatedによるフロー

シングルサインオン(SSO)に必要なSAMLとは? https://www.idearu.info/article/system/single-sign-on-saml より引用

1.アクセス要求
まず利用者(ユーザー)は使いたいサービス(SP)に対してアクセスします。

2.認証リクエスト
アクセスしてきたユーザーがSPの利用を許可されているかどうか、アカウントがあるかどうかを確認します。

3.認証依頼
ユーザーはSPを利用するために、認証が必要です。認証の証明書である認証トークンをIdPに発行してもらいます。このとき、まだログインしていない(シングルサインサービスに対してまだID・パスワードの入力をしていない)場合は、ここでID・パスワードや、設定によっては多要素認証などを求められるので必要に応じて入力します。

4.認証トークン
ID・パスワードなどが適切に入力された場合は、ユーザーに「認証トークン」という証を渡します。

5.認証トークン
IdPからもらった「認証トークン」をSPに渡します。

6.サービス提供
SPはユーザーから受け取った「認証トークン」を確認し、正規のユーザーであることをチェックします。チェックし、正規のユーザーであると認証した後、ユーザーは各サービスが利用できるようになります。

OAuthの仕組み

OAuth2.0を例に説明します。

主な用語

  • クライアント:利用するWebアプリケーションを指します

  • 認可サーバー:リソースサーバーに信頼されたサーバーで、リソースオーナーの認証を行い、リソースサーバーに対するアクセストークンを発行できます

  • リソースオーナー:Webアプリケーションを利用する人(ユーザー)のことです

  • リソースサーバー:アクセス対象のWebサーバーです。(Gmailなど)


  1. 認可サーバーへのリダイレクト クライアント(Webアプリ等)から必要なパラメーターを付与して、認可サーバーへリダイレクトします。リダイレクトを行う理由は、クライアントを識別したりする情報を付与して認可サーバーへアクセスさせるためです。

  2. 認可サーバーでの確認 認可サーバーは、リソースオーナーに対して要求されている認可の可否を確認します。リソースオーナーは、必要に応じてパスワード等で認証を行った後に、問題がなければ許可をします。

  3. 認可コードの発行 認可サーバーは、許可されるとアクセストークンを発行するための認可コードを発行します。認可サーバーからクライアントへリダイレクトします。認可コードが外部にもれないよう、リダイレクトは事前に設定されたURLのみ可能です。

  4. アクセストークンの発行 クライアントは、認可コードを認可サーバーに渡してアクセストークンを取得します。

  5. リソースサーバーへアクセス 取得したアクセストークンを使用して、保護されたリソースにアクセスします。

OpenID Connect

さて、ここでOpenID Connectについて説明します。OpenID ConnectはOAuthを拡張した規格です。

OAuth vs SAML vs OpenID Connect vs SSO それぞれの違い https://baasinfo.net/?p=4418 より引用

OAuthのフローに記載されているとおり認可のプロセスにおいて、認証が含まれるので、「認可とは別に認証は不要ではないか」と思う人もいると思います。しかしながら、認可情報は、流出する恐れがあります。

クレジットカードを例に上げると、発行する際には本人確認を行い発行します。ただ、一度発行したクレジットカードを紛失した場合、他人に利用されてしまう可能性があります。そのため、大きな金額を利用する際は署名など事後的に本人確認が可能となるプロセス(認証)が求められます。

つまり、認可だけではセキュリティとして不十分であり、このような認可(OAuth)の問題に対処するのがOpenID Connect(認証)です。

先ほど、「OpenID ConnectはOAuthを拡張した規格」と書きましたが、正確には、認可プロトコルとしてOpenID Connectが、認証プロトコルとしてOAuthが使用されることになります。ですので、OpenID Connect単独では利用できず、OpenID Connectを利用するときはOAuthにより認証を行うことになります。

SAMLとOAuthの違い

OAuthはGoogleやTwitter等のSNSの認証を目的として開発されたもので比較的簡易的なプロトコルです。一方でSAMLは、非常に複雑な権限管理を行うことができます。 このような違いにより、OAuthおよび、拡張したOpenID ConnectはFacebookやTwitterなどのSNSの認証で使用されることが多いです。また、SAMLは、Active Directoryの機能の一つであるADFS(Active Directory Fereration Service)やOktaなどIDPサービスで主に用いられています。

SAMLもOAuthもそれぞれ役割が異なります。まずは、使用するシステムがどちらに対応するかを確認する必要があるでしょう。確認の結果、どちらの方式を採用するかどうかについては、提供するサービスの目的や趣旨と照らし合わせて十分に検討して決定しましょう。

執筆者:

橋爪兼続

ライトハウスコンサルタント代表。2013年海上保安大学校本科第Ⅲ群(情報通信課程)卒業。巡視船主任通信士を歴任し、退職後、大手私鉄の鉄道運行の基幹システムの保守に従事。一般社団法人情報処理安全確保支援士会の前身団体である情報処理安全確保支援士会の発起人。情報処理安全確保支援士(第000049号)。

企業を成長させる情シスチーム推進のための3ステップ

企業を成長させる情シスチーム推進のための3ステップ

企業を成長させる情シスチーム推進のための3ステップ

業務に役立つ資料や記事を見る
Adminaでは様々な情シスのテーマに沿った資料ブログ記事を用意しています。情シスの今知りたい内容をわかりやすく解説し、次に活用できるステップをガイドで整理させていただいています。

動画で他社の事例を学ぶ
無料の情シスコミュニティ「うちの情シス」の動画を閲覧ください。事業会社で働く情シスの現場の実態や課題、解決策などネットでは公開されていないここだけの話を学ぶ事ができます。

記事をシェアする
記事が役に立つと思ったら、Twitter、FacebookまたはLinkedinで共有をお願いします。

他の記事

© 2023 Moneyforward i, Inc.
© 2023 Moneyforward i, Inc.
© 2023 Moneyforward i, Inc.