シングルサインオン(Single Sign-On)はSSOと略されますが、
複数の認証が必要なシステムに対して、最初に1回認証を行えば、システムが変わっても以降の認証は全て許可されて実行できるシステムのことを言います。
ユーザ側の負担が減るので、必要性の高いシステムです。
ただし、SSOが使用できるのは主にWebアプリケーションによるシステムになります。
SSOを実現するためには、以下のことを満たす必要があります。
・各個人のユーザIDとパスワードを統一する
・各アプリケーションの認証をWebブラウザを用いた方式に統一する
・各アプリケーションに対してアクセス制御を実施する
SSOの実現の仕組みには複数あります。
エージェント型SSOシステム
これはWebアクセス時に生成されるクッキーを用いたSSOのシステムです。
(クッキーとは、Webサーバが自らのサイトにアクセスしてきたクライアントを識別するためのものです。
クライアントへ一時的な書き込みを行います。)
まず、Webサーバに「エージェント」と呼ばれるソフトウェアをインストールします。
そのエージェントと認証サーバが連携し、最初のログインの際に認証を行い、
エージェントはその認証済みの識別情報をクッキーに入れてクライアントに返します。
以降の認証の際は、そのクッキー情報をもとにエージェント(Webサーバ)が認証サーバにアクセスし認証を行います。
このシステムでは、ネットワーク構成を変更する必要はありませんが、
・エージェントをインストールする必要があり、エージェントが対応していないWebサーバには使用できない
・クライアントでクッキーを制限している場合は使用できない
・クッキーが有効な同一ドメイン内でしか使用できない
といった制限事項があります。
リバースプロキシ型SSOシステム
全てのWebサーバへ認証サーバを挟んでアクセスを行うシステムです。
クライアントはまず認証サーバで認証を行い、ログインに成功すると認証サーバは
Webサーバへ代理アクセスを行います。
(二度目から認証情報を覚えているので入力の必要がない。)
このシステムでは、クッキーの利用やエージェントをインストールする必要はありませんが、
・認証サーバのアクセスが集中し、負荷が高まる
・認証サーバを経由しないとWebサーバにアクセスできないようにネットワーク構成を変更する必要がある
といったデメリットがあります。
SAMLによるSSOシステム
SAML(Security Assertion Markup Language)とは、異なるWebサーバ間でユーザID・パスワードなどの認証情報を安全に交換するためのフレームワークです。
これはOASISという団体によって策定されています。
SAMLでは三つのアサーションと呼ばれる情報を使用します。
・認証アサーション・・・認証結果の情報
・属性アサーション・・・アカウント属性の情報
・認可決定アサーション・・・アクセス制御の情報
また、構成要素としてIdPとSPがあります。
・IdP(Identity Provider)・・・ユーザのアカウント情報の管理及び認証を行う
・SP(Service Provider)・・・ユーザにサービスを提供する
IdPとSPは連携し、要求メッセージ(SAMLRequest)と応答メッセージ(SAMLResponse)を
送受信します。
そのための方法として以下のような種類があります。
・SOAPバインディング・・・SOAPというXMLをベースにメッセージを伝え合うプロトコルを用いてアサーションを送る
・HTTP Redirect バインディング・・・HTTP GET メソッドでアサーションを送る
・HTTP POST バインディング・・・HTTP POST メソッドでアサーションを送る
認証の仕組みについて以下、概要図にて示します。
① ユーザがクラウドサービスへアクセス
② IdPにリダイレクトしSAML認証要求(SAML Request)
③ IdPがSAML認証を解析し、ユーザ認証
④ IdPがSAML認証応答(SAML Response)
⑤ クラウドサービスがSAML認証応答を受け取り、ユーザログインを許可(サービス提供)
コメント