見出し画像

#03 シングルサインオンについてまとめてみた|情報処理安全確保支援士

会社でoffice365等のID/パスを入力しておくと複数のサービスにシームレスにログインできるといった場面に遭遇したことがないだろうか。それがまさにシングルサインオン。

もちろんここで取り扱うからには情報処理安全確保支援士試験にも登場する。試験にも出るし仕事でも使うし、やらない手はないということでまとめていきます。


シングルサインオン(SSO)とは


Single-Sign-Onの頭文字を取ってSSOと表記される。認証を必要とする複数のサービスに対して、1度認証に成功すれば利用するサービスを切り替えてもその後も認証プロセスなしで利用できる仕組みのこと。バックグラウンドで認証は行われるが、利用者は認証を意識することなくシームレスにサービスを切り替えて利用できる。

SSOのメリット

  • 利用者のサービス利便性

  • 認証情報の統一管理

利用者は何度も認証処理を行う必要がなく、複数の認証情報を管理する必要もないためセキュリティリスクを下げることができる。

SSOのデメリット

1つのID/パスワードの流出により複数のシステム・サービスが不正に利用出来てしまう点はデメリットといえる。

シングルサインオンの仕組み


エージェント型SSO

Cookieを利用してユーザー識別情報を交換し認証を行う仕組み。認証が必要なWebサーバにエージェントと呼ばれるソフトウェアをインストールする。このエージェントが認証サーバにアクセスして認証処理を行う。

<認証プロセス>
①クライアントからアクセス要求
②エージェントが要求のCookieに認証済みの識別情報が含まれているか確認し、含まれていない場合認証サーバへリダイレクトしてIDパスを入力させる。
③クライアントがログインを実施する。
④エージェントは③で入力された情報をもとに認証サーバへアクセスし認証処理を行う。
⑤エージェントが認証済み識別情報をCookieに入れてクライアントへ返す。
⑥他サーバへのアクセス時、②の動作にてCookieを確認し、認証済みであればエージェントがバックグラウンドで認証を行う。これによりクライアントは都度入力する手間を省くことができる。

エージェント型SSOのイメージ

リバースプロキシ型SSO

Webサーバへのアクセスをリバースプロキシサーバに集約して認証を行う仕組み。クライアントがログインするとリバースプロキシサーバが利用するサーバーにアクセスし、代理で認証を行う。

リバースプロキシ型SSOのイメージ

SAML方式SSO

エージェント型やリバースプロキシ型のSSOで対応出来ないサービスやネットワーク構成(クラウドサービスや異なるドメインのサービス等)に対してSAML(Security Assertion Markup Language)方式が利用されます。異なるドメイン間で使用できる点を抑えておくと、前述のSSO形式と区別できる。

SAMLで扱う情報
・認証アサーション(試験に出てた)
・属性アサーション
・認可決定アサーション

SAML方式SSOシステムの構成
SP(サービスプロバイダ)
 利用者にサービスを提供する。
IdP(Identify Provider)
 利用者のアカウント情報管理と認証を行う。
・ブラウザ
 利用者のブラウザ

以下の画像は過去出題された際に問題中で示されたSAML方式SSOのフロー。

SAMLによるSSOのイメージ

①ブラウザからSPにアクセスし、サービスを要求する。
※ここで⑤で発行した有効なCookieがあれば⑥に移行
②SPはSAMLRequestを発行し、ブラウザ経由でIdPにリダイレクトする。
③ユーザーはIdPのログイン画面でIDパスワードを認証する。
④IdPはアサーションを生成してSAMLResponseメッセージをブラウザ経由でSPにリダイレクトする。
⑤SPはデジタル署名と認証アサーションを検証して、問題なければCookieを発行する。
⑥SPはユーザーにサービスを提供する。

ここまでの流れを終えると、ユーザーはID連携しているSP群のサービスを再認証なしで利用できる。

まとめ


ここまでエージェント型、リバースプロキシ型、SAML方式をまとめました。試験対策としては午前問題では上記でまとめた内容を覚えていれば選択肢を絞ることができると思います。優先度としてはSAML方式>リバースプロキシ>エージェントでしょうか。
まずはそれぞれの方式がどのような流れで認証が行われるのかをイメージできることが大事かなと思います。会社で導入されているクラウドサービスなんかもSAML方式を利用しているパターンが多いはずなので、実体験に落とし込んで考えてみるとイメージしやすいかもしれませんね。

いいなと思ったら応援しよう!