SSO(シングルサインオン)を実現する仕組みとして、「SAML認証」と言うのに触れることがありました。
どういったものなのか調べたので、記事にしておこうと思います。
そもそもシングルサインオンとは?
一度のログインだけで、複数のサービス・アプリケーションにログインして利用できる仕組みです。
メリットとしては、サービスごとにログインを行う必要が無くなるので、ID/パスワードの管理が楽になることが挙げられます。
また、いくつもアカウントを作っていると、パスワード管理が煩雑になり、パスワードを使いまわしたり、簡単なパスワードにしてしまったりする問題を解決できるのかなと思います。
SAMLとは?
SAMLは「Security Assertion Markup Language」の略で「サムル」と読みます。
主にシングルサインオンで用いられる規格で、XMLをベースとしたマークアップ言語です。
シングルサインオンでログインしたときに、認証情報などSAML形式でやり取りします。
SAML認証の仕組み
SAML認証はサービスプロバイダー(SP)とユーザー(ブラウザなど)、IDプロバイダー(IdP)の間で認証情報をやり取りします。
SPは、ログイン先のアプリケーションになります。
ユーザーは、名前の通りそのアプリケーションを利用するユーザーですね。
IdPは、ユーザー情報を管理してシングルサインオンを提供するサービスになります。
認証には2パターンあり、SPを起点とした「SP Initiated」と、IdPを起点とした「IdP Initiated」があります。
SP Initiated(SP起点)
SPが起点になる場合の流れは以下になります。
- ユーザーが利用するSPにアクセス
- SPがIdPへのリダイレクト要求を返却
- ブラウザを経由して、IdPの認証画面にリダイレクト
- ユーザーがIdPの認証画面でログインを行う
- IdPで認証処理が行われ、SPへのリダイレクト要求を返却
- ブラウザを経由して、SPに認証情報を転送する
- SPは認証情報を受け取り認証処理を行い、ログイン後の画面を表示(ログイン完了)
IdP Initiated(IdP起点)
IdPが起点になる場合の流れは以下になります。
- ユーザーがIdPにアクセス
- IdPが認証画面を表示、ユーザーがIdPの認証画面でログインを行う
- IdPで認証処理が行われ、IdPのログイン後画面を表示
- ユーザーが利用するアプリケーションのアイコンをクリック
- IdPで認証処理が行われ、SPへのリダイレクト要求を返却
- ブラウザを経由して、SPに認証情報を転送する
- SPは認証情報を受け取り認証処理を行い、ログイン後の画面を表示(ログイン完了)