シングルサインオンを実現する「SAML」とは
まずはSAMLの概要を見ていきましょう。
SAML認証とは?シングルサインオンを実現する認証プロトコル
SAMLとは、「Security Assertion Markup Language」の略で、インターネット上でユーザーの認証情報を安全にやり取りするための認証プロトコルです。
このプロトコルを使った認証方式は、一般にSAML認証と呼ばれ、企業や教育機関などのさまざまな組織で採用されています。特に、クラウドサービスとの認証連携やセキュリティ強化を目的としたシステムにおいて活用されています。
シングルサインオンとは、1度のログインで複数のサービスへの同時ログインを実現する仕組みです。その実現手段の1つとして、SAMLが広く使われています。
プロトコルとは、コンピュータ同士が情報をやり取りするための規格です。スムーズな情報のやり取りのためには、各コンピュータが同じプロトコルに準拠している必要があります。コンピュータ同士が会話に用いる言語の文法のような役割を持つものだと考えましょう。
シングルサインオンの課題を解決するSAML
SAMLが採用される前のシングルサインオンは、いくつかの問題を抱えていました。
その1つは外部のサービスとの連携が難しいことです。クラウドサービスの普及に伴い、これらにもシングルサインオンできる環境が必要とされていました。しかし、当時は社内のシステムにはシングルサインオンができても、クラウドサービスまでは不可能でした。
また、規格が統一されておらず、適合性が不明確な点も課題でした。独自の認証システムを採用しているサービスは、シングルサインオンと連携はできません。
これらの問題をまとめて解決する方法としてSAMLが登場しました。クラウドサービスにも対応でき、このプロトコルに準拠することでシングルサインオンとの連携が可能になるのです。
2005年から採用されている「SAML2.0」
SAMLが策定されたのは2002年です。2005年にはSAML2.0にバージョンアップされ、現在は単にSAMLといえばSAML2.0を指します。
従来のシングルサインオンにはクッキーを用いていました。ブラウザにログイン情報を保持した認証クッキーを保存することで、ログイン状態を可能にします。
しかし、クッキーによる情報伝達は同一ドメイン内でしか成立しません。つまり、Gmailなどの他社から提供されるサービスと連携ができなかったのです。また、第三者に悪用されて、なりすましが発生するリスクが指摘されていました。
SAML2.0であればそれらの課題を解決できます。クッキーに依存することなくシングルサインオンを成立させ、PKIなどのセキュリティに優れた認証環境に対応しています。
なお、GoogleやFacebookなどのSNSアカウントを使ってログインする「ソーシャルログイン」も、シングルサインオンの一種です。ただし、これらはOAuthという異なる認証技術を使っており、SAMLとは異なる仕組みです。

SAMLを利用したシングルサインオンの仕組み
SAMLを使ってシングルサインオンを実現するには、IdP(Identity Provider)とSP(Service Provider)の2者を設定し、双方がSAMLに準拠している必要があります。ここでの役割は以下のとおりです。
- ●IdP:ユーザーの認証情報を提供する側のサービス。例:社内の認証サーバやクラウドIDサービスなど。
- ●SP:認証情報を要求する側。例:勤怠管理やグループウェアなど、実際に利用するサービス。
それでは、SAMLによるシングルサインオンの基本的な仕組みを見ていきましょう。

- 1.SPがIdpへSAML認証要求を行う
- ユーザーがSPにログインを試みると、SPはSAMLリクエストを付与してIdpにリダイレクトします。Idpはそのユーザーの認証情報を確認し、既存のユーザーとしてログイン済みかどうか判断します。
- 2.IdpがSPへ認証情報を発行する
- ユーザーがログイン済みだと確認できれば、IdpはSPにSAMLResponseとして認証情報を送信します。SPはIdpの公開鍵でこの情報を確認します。
- 3.SPが認証情報を確認し、ログインを許可
- SPがIdpから取得した情報によりユーザーのログイン状況を確認できれば、SPへのログインが許可されます。
SAMLを利用したシングルサインオン導入のメリット
それでは、SAMLを利用したシングルサインオンを導入することで、どのようなメリットが得られるのでしょうか。
利便性が向上する
シングルサインオンでは、1つのサービスでログインすれば、ほかのサービスのログインの手間を省けます。そのため、多くのサービスを利用している人にとっては、大幅な負担軽減が期待できます。
企業に導入する場合は、従業員の業務負担が軽減します。業務効率が上がり、生産性向上につながるでしょう。
セキュリティが強化される
従来はログインするサービスごとにパスワードを設定し、管理する必要がありました。
ところが長いパスワードをいくつも覚えるのは大変です。そのため、パスワードの使いまわしや、覚えやすく推測されやすいパスワードの設定が頻発していました。社内では付箋にパスワードを書いて机に貼っておくなど、セキュリティ上問題のある管理方法も横行しています。
シングルサインオンでは、すべてのサービスへのログインを1つのパスワードで実現できます。パスワードを1つしか覚えなくてよいため、セキュリティに優れた長いパスワードを設定しても負担が少なく済むでしょう。
導入期間が短くコストが低い
もっとも理想的なログイン管理の仕組みはID統合です。すべてのサービスのIDを統合してしまえば、個別にIDやパスワードを管理する必要がありません。ユーザー情報の変更も一括して行えるため、利便性に優れています。
しかし、ID統合はコストがかかるのが難点です。対象のサービスすべてに改修が求められ、導入期間も長くなります。シングルサインオンであれば、ID統合ほどコストがかかりません。改修もあまり必要なく、短期間で導入できます。
SAML認証を理解し、シングルサインオンを活用しよう
SAMLはシングルサインオンに使われるプロトコルです。SPとIdpのやり取りを可能にし、高いセキュリティを実現します。
SAMLによるシングルサインオンでは、ユーザーがログインするとSPとIdPの間でリダイレクトを行い、SPの認証要求やIdPによる応答をSAMLのプロトコルで実行します。
SAMLのシングルサインオンは低コストで導入でき、セキュリティや利便性が高まるため一度検討してみてはいかがでしょうか。
