SAML認証とは?仕組みやOAuthとの違いなどわかりやすく解説
近年、クラウドサービスの普及によってシングルサインオン(SSO)への注目度が高まっていますが、SSOに欠かせない技術のひとつがSAML認証です。
しかし、SAMLという名称を聞いたことがあっても、どのような認証方式なのか分からないという方は少なくないでしょう。
そこで、ここではSAMLの仕組みやメリットなどについて解説していきます。
SAMLとは?
SAML(サムルまたはサムエル)とは、異なるドメイン間でユーザー認証をつなげるマークアップ言語です。
「Security Assertion Markup Language」の略称で、OASISにより規格化されています。
一つのシステムにログインすることで、複数のシステムが利用可能となるシングルサインオン(SSO)の実現に重要な役割を果たしている技術で、ログインの際にユーザーだけでなく属性情報も認証できるという特徴があります。
これにより、単にシングルサインオンを実現できるだけでなく、ユーザーのアクセス制限をかけることも可能です。なお、SAMLは2002年に策定されましたが、2005年にSAML2.0にバージョンアップされており、単にSAMLと言う場合はSAML2.0を指すのが一般的です。
SAML誕生の背景
従来、ユーザーはシステムごとにログインをしなければなりませんでしたが、システムや認証が複雑化・巨大化するに伴い、認証をシステムから切り離して複数システムで共有したいというニーズが生まれました。
認証が共通化できれば、システム変更に合わせて仕組みを調整したり、組み直したりする必要がなくなるとともに、一度の認証で複数システムへのログインが可能となります。
一方で、認証の共通化の流れが始まったころは、システム側と認証側のやり取りの方式は開発者独自のものだったため、クラウドサービスをはじめとした外部サービスとの連携が難しいという問題がありました。
この問題を解決する方法として登場したのがSAMLで、SAMLの登場以後はクラウドサービスをはじめとした幅広いシステムに対応可能となりました。
SAML認証の仕組み
SAML認証では、ユーザー・SP・IdPの三者の間で情報のやり取りが行われます。
SPとは「Service Provider」の略で、クラウドサービスなどの認証を要求する側のサービスを指します。
IdPとは「Identify Provider」の略で、認証情報を提供するシステムのことです。
SAML認証の大まかな仕組みとしては、まずユーザーがSPにアクセスしようとすると、SPはSAML認証要求を作成し、その要求を付与した上でIdPにリダイレクトします。
認証要求を受け取ったIdPはユーザーのPCにログイン画面を表示させるので、ユーザーは認証を実施しますが、ユーザーが行うのは通常のログインと同じようにIDとパスワードの入力のみです。
その後、IdPはログインを試みたユーザーの認証情報を確認し、既存ユーザーとしてログイン済みかを判断します。
ユーザーがログイン済みであると確認できたら、IdPはSAML認証応答を作成してSPに送信しますが、SPはIdPの公開鍵によってその情報を確認します。
IdPから取得した情報をもとにユーザーの状況の確認ができたら、ユーザーにアクセス許可を与えるという仕組みです。
SAML認証のメリット
ここまでSAML認証の概要や仕組みについて解説してきましたが、ここからはSAMLを用いたシングルサインオンのメリットを確認していきましょう。
1.セキュリティの向上
SAMLを用いたシングルサインオンを導入するメリットとしてまず挙げられるのは、セキュリティの向上につながることです。
従来は、利用するシステムごとにパスワードを設定・管理する必要がありました。
システムごとに異なるパスワードを利用することはリスクの分散につながりますが、実際にはパスワードを使いまわしたり、覚えやすい単純なパスワードを使ったりするケースが少なくありません。
しかし、全てのシステムへのログインが同じパスワードで行えるシングルサインオンを導入すれば、長く複雑なパスワードを設定してもユーザーにかかる負担が少なくなります。
これにより従来の方式よりも、セキュリティの向上につながります。
2.管理の一元化と利便性向上
SAMLによるシングルサインオンを導入すると、各ユーザーが管理するパスワードは1種類のみとなります。
複雑なパスワードをいくつも管理する必要がなくなるので、ユーザーにかかる負担を大幅に軽減することが可能です。
また、シングルサインオンでは一度のログインで複数システムへのログインが自動化されるので、ユーザーの利便性も向上します。
通常は、異なるシステムを利用するたびにログイン作業を行う必要がありますが、シングルサインオンを導入すればその手間が省けるので業務効率の向上が期待でき、生産性の向上にもつながるでしょう。
SAML認証のデメリット
SAML認証のデメリットとしては、全てのシステムに対応していないことが挙げられます。
対応していないシステムには導入できないので、これまでと同様に個別のパスワードを設定する必要があります。
ただし、SAML以外の認証方式でも対応していないシステムは存在するので、SAML特有のデメリットというわけではありません。
SAMLとOAuthの違い
SAMLと似た仕組みにOAuthという技術があります。OAuthは、複数のWebサービスを連動させるためのAPIを活用することで、複数サービスでのシングルサインオンを実現してくれる技術です。
SAMLとOAuthは、どちらもシングルサインオンを実現してくれる技術ですが、SAMLでは認証と許可を行うのに対し、OAuthは許可のみを行うという違いがあります。
認証とはユーザーを識別するためのプロセスであり、許可とはアクセス権限を与えるプロセスのことを指します。
OAuthでは、許可は行いますが原則として認証を行いません。認証が行われないということは、なりすましの検証がされないということを意味しているので、OAuthはSAMLと比べるとセキュリティ性は劣ります。
SAML以外のシングルサインオン
シングルサインオンの方式はいくつかありますが、ここからはリバースプロキシ方式・フェデレーション方式・代行認証方式の3種類の方式について解説していきます。
1.リバースプロキシ方式
リバースプロキシ方式は、リバースプロキシサーバーと呼ばれる中継サーバーを介して認証を行う方式です。
シングルサインオンの対象システムにエージェント型ソフトをインストールするエージェント方式とは異なり、システムにソフトをインストールする必要がないのが特徴で、導入までの工数を短縮できるというメリットがあります。
一方で、リバースプロキシ方式では、全てのアクセスをリバースプロキシサーバーを経由するようにネットワークを設計しなければなりません。
また、ロードバランサーなどを用いて、リバースプロキシサーバーにかかる負荷を分散させる必要があります。
2.フェデレーション方式
フェデレーション方式は、パスワードの代わりにチケットと呼ばれる情報を受け渡す方式です。
クラウドサービスの普及によって注目を集めるようになった方式で、海外のクラウドサービスの多くが対応しており、日本でも導入が進められています。
また、フェデレーション方式で使えるプロトコルは標準化が進められており、今回解説しているSAMLやOpenID Connectといった標準プロトコルに対応するのみで導入することが可能です。
加えて、クラウドサービス間での認証情報のやり取りにパスワードが用いられないので、セキュリティ性に優れるというメリットもあります。
3.代行認証方式
代行認証方式は、ユーザーの代わりに専用エージェントがログインIDとパスワードの入力を行う方式です。
専用エージェントは、各システムのIDとパスワードを保持した状態でPCに常駐し、各システムのログイン画面の起動を感知して自動的にIDとパスワードを入力します。
代行認証方式は、ユーザーのPCに専用エージェントを導入するとともに、アカウント情報のデータベースに接続可能な環境を構築する必要がありますが、利用するシステム側の改修は不要です。
また、シングルサインオンの対象となるシステムに制限が少ないので、導入しやすいというメリットもあります。
SAMLまとめ
現在、テレワークの普及などによってクラウドサービスの活用が拡大していますが、SAMLを用いたシングルサインオンを導入すると、高いセキュリティ性を確保できるとともに、ユーザーの利便性も向上します。
加えて、SAMLのシングルサインオンは比較的低コストで導入できるので、この機会に是非導入を検討してみてください。