シングルサインオンとは
シングルサインオン(以下SSO)は、クラウドサービスや社内の業務アプリケーションを利用する際の本人認証をシームレスに行う仕組みです。
SSOを導入することで、複数のアプリケーションに何度もログインをする必要がなくなり、最初に一度の認証を行うだけですべてのアプリケーションへログインできるようになります。
使い方
SSOは、ログイン対象のすべてのアプリケーションが信頼する中央サーバーを経由することで機能します。認証をしてないユーザーがアプリケーションを利用する際、中央サーバーにリダイレクトされて認証画面が表示されます。中央サーバーで認証に成功すると認証トークンが発行され、アプリケーションにリダイレクトされてログイン処理が行われます。2つ目以降のアプリケーションを利用する際は、発行された認証トークンによって自動的にログイン処理が行われます。
SSOの種類
認証トークンを取得した後に行われる、アプリケーションへの自動ログインにはいくつかの手法があります。
リバースプロキシ型
アプリケーションサーバーの前面にリバースプロキシサーバーを配置し、プロキシサーバー内のエージェントがアクセス制御を行う方法です。
- メリット
- 1つのプロキシサーバーで複数のアプリケーションに適応できる
- アプリケーションごとのパスワード管理が不要
- デメリット
- アプリケーションの改修が必要
- セキュリティ
- ネットワーク上にID/パスワードが流れないためセキュア
- 多くの製品ではリバースプロキシにセキュリティ機能があり、リバースプロキシをDMZに配置することでパブリックネットワークからのアクセスが可能
エージェント型
アプリケーションと同じWebサーバー内にインストールしたエージェントがアクセス制御を行う方式です。
- メリット
- アプリケーションサーバーにエージェントをインストールするため負荷に強い
- アプリケーションごとのパスワード管理が不要
- デメリット
- Webサーバーごとにエージェントの配置する必要があるため、Webサーバーを拡張する際、追加の作業が発生する
- アプリケーションの改修が必要
- セキュリティ
- ネットワーク上にID/パスワードが流れないためセキュア
代理認証型
リバースプロキシサーバにインストールしたエージェントがアプリケーションにユーザーIDとパスワードを送信する方式です。
- メリット
- アプリケーションの改修が不要
- デメリット
- アプリケーションごとのパスワード管理が必要
- セキュリティ
- ネットワーク上にID/パスワードが流れるためネットワークセキュリティに配慮が必要
代行認証型
WebのSSOとは区別することがありますが、同様の動作を提供する仕組みです。クライアント端末にインストールしたエージェントがIDとパスワードを送信する方式です。エージェントには「ネィティブアプリ」「ブラウザ拡張機能」「専用ブラウザ」などがあり、Webアプリケーションに限らずネィティブアプリケーションにもSSOが適応できるもの(ネイティブアプリ)、特定のWebブラウザに特化して認証強化できるもの(ブラウザ拡張機能)、クライアント証明書等で認証強化できるもの(専用ブラウザ)など、製品によって色々な付加機能が提供されています。
- メリット
- アプリケーションの改修が不要
- SSOサーバー以外のサーバーが不要
- デメリット
- 端末へのエージェントインストールが必要
- アプリケーションごとのパスワード管理が必要
- セキュリティ
- ネットワーク上にID/パスワードが流れるためネットワークセキュリティに配慮が必要
フェデレーション型
WebのSSOとは区別することがありますが、同様の動作を提供する仕組みです。
エンタープライズで利用されている「SAML 2.0」、コンシュマサービスで利用される「OpenID Connect(OIDC)」などのいくつかのプロトコルがあり、いずれも中央サーバーで発行された認証トークンをブラウザに渡して、アプリケーションへ自動ログインする仕組みです。
- メリット
- アプリケーションの改修が不要
- アプリケーションごとのパスワード管理が不要
- デメリット
- プロトコルに対応しているアプリケーションしか適応できない
- セキュリティ
- ネットワーク上にIDパスワードが流れないためセキュア
シングルログアウト(またはシングルサインオフ)
SSOしたアプリケーションをまとめてログアウトする仕組みとしてシングルログアウト(以下SLO)があります。
中央サーバーからログアウトするだけですべてのアプリケーションからログアウトできるため、ユーザーはアプリケーションごとのログイン状態を意識する必要がなくなり、セキュリティも向上します。
ただ、多くのSSOではSLOはサポートされておらず、SAML 2.0に対応したアプリケーションでも多くがSLOには未対応です。