SAML認証について

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が起点になる場合の流れは以下になります。

  1. ユーザーが利用するSPにアクセス
  2. SPがIdPへのリダイレクト要求を返却
  3. ブラウザを経由して、IdPの認証画面にリダイレクト
  4. ユーザーがIdPの認証画面でログインを行う
  5. IdPで認証処理が行われ、SPへのリダイレクト要求を返却
  6. ブラウザを経由して、SPに認証情報を転送する
  7. SPは認証情報を受け取り認証処理を行い、ログイン後の画面を表示(ログイン完了)

IdP Initiated(IdP起点)

IdPが起点になる場合の流れは以下になります。

  1. ユーザーがIdPにアクセス
  2. IdPが認証画面を表示、ユーザーがIdPの認証画面でログインを行う
  3. IdPで認証処理が行われ、IdPのログイン後画面を表示
  4. ユーザーが利用するアプリケーションのアイコンをクリック
  5. IdPで認証処理が行われ、SPへのリダイレクト要求を返却
  6. ブラウザを経由して、SPに認証情報を転送する
  7. SPは認証情報を受け取り認証処理を行い、ログイン後の画面を表示(ログイン完了)