6
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

SAMLってなに?シングルサインオンってなに?

Last updated at Posted at 2024-01-08

SAMLとは

SAMLは「シングルサインオン」の実現方法の一つである。

シングルサインオンとは

シングルサインオンとは1度ログイン操作を行うと、連携している複数のサービスに自動でログインできる仕組みのこと。
以下に、複数の社内サービス、社外クラウドサービスを利用する企業の利用者の例を示す。

■シングルサインオンを使わない場合
saml-ページ3.drawio.png

■シングルサインオンを使う場合
saml-ページ2.drawio.png

シングルサインオンを使う場合の利用者、システム管理者のメリットは以下の通り。

利用者のメリット

  • 一か所に一度ログインすればそこと連携したサービスに自動的にログインできる。
  • あちこちのサービスのユーザ名/パスワードを覚えずに済む。(よって、パスワードの使いまわしのリスクが下がる。)

システム管理者のメリット

  • ユーザにどのサービスを使うことを許可するかを一か所で集中管理できる。

再び、SAMLとは

SAMLとは、wikipediaよると、

Security Assertion Markup Language (SAML、発音は SAM-el、/ˈsæməl/)は、特にアイデンティティプロバイダーとサービスプロバイダーの間で認証および認可データを交換するための公開標準である。
SAMLは、セキュリティアサーション (サービスプロバイダーがアクセス制御の決定を行うために使用するステートメント)のための XML ベースのマークアップ言語である。

とある。
(公開標準 : 使用に当たっての各種権利を伴って公然と利用可能な標準(wikipedia))

「アイデンティティプロバイダー」と「サービスプロバイダー」という言葉が出てきたが、前述の図に「アイデンティティプロバイダー(IDP)」と「サービスプロバイダー(SP)」を追記した図を以下に示す。

saml-ページ4.drawio.png

アイデンティティプロバイダー(IDP)は、ユーザーを認証するサービスである。
サービスプロバイダー(SP)は、IDPで認証したユーザが利用するサービスである。

SAMLの信頼関係構築

SAMLによるシングルサインオンは、ログイン操作を始める前にIDPとSPの間で「信頼関係」を構築する必要がある。

信頼関係を構築するために、IDPからSPへ、またSPからIDPへ「メタデータ」を渡す。(メタデータの詳細についてはここでは割愛)
IDPまたはSPのシステム管理者がメタデータの交換を行い、受け取ったメタデータをIDPまたはSPに設定する。

■IDPからSPにメタデータを渡す
saml-ページ6.drawio.png

■SPからIDPにメタデータを渡す
saml-ページ5.drawio.png

信頼関係を結ぶことによって、

  • SAMLの通信(SAMLリクエスト/レスポンスの送受信)
  • 認証結果に改竄がないことの確認

ができるようになる。

SAMLによるログイン

i)SAMLログイン開始、SAMLリクエスト送信

利用者はSP上の指定のURLにブラウザでアクセスすることによってSAMLログインを開始する。(1)
※ここではSPInitiatedログインのみを扱う。

saml-ページ7.drawio.png

利用者が1を操作するとそれをトリガーとして、SPがIDPに向けてHTTPで「SAMLリクエスト」を自動的に送信(リダイレクト)する。(2,3)

ii)SAML認証、ユーザ名とパスワードの入力

IDPはSAMLリクエストを受け取とったあと、利用者がIDPにログイン済みかどうかを確認する。
まだログインしていなければ、利用者のブラウザにログイン画面を表示し、ユーザ名、パスワードの入力を促す。(4)
利用者によるユーザ名、パスワードの入力が終わったら認証を行う。(5)

saml-ページ8.drawio.png

ログイン済みの場合は4,5は行わない。

iii)SAMLレスポンス送信、認証完了

認証が終わると、認証結果(アサーション)を含んだ「SAMLレスポンス」を作成し、X.509証明書を使ってアサーションまたはSAMLレスポンスに署名する。(6)
IDPはSAMLレスポンスをSPに向けてHTTPでSAMLレスポンスを送信(POSTまたはリダイレクト)する。(7,8)
SPはSAMLレスポンスを受け取ると、署名が正しいかどうか(改竄がないかどうか)を信頼関係構築時にIDPから受け取ったX.509証明書を使って確認する。(9)

saml-ページ9.drawio.png

以上で、SAML認証完了。

IDP/SPの例

IDPの例

SPの例

SAML IDP/SPのオープンソース実装例

6
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?