12
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SAMLについて、理解しやすいように例えてみる

Last updated at Posted at 2018-09-25

はじめに

SAMLって専門用語が多くてわかりにくくないですか?
仕事で初めて使う事になった時、非常に大変でした。
専門知識が無い方でもある程度、わかりやすいように表現してみようと思います。

SAMLとは?

IT用語辞典
SAMLとは、ユーザー認証に用いる情報を複数の企業やインターネットサービスプロバイダ(ISP)間で安全に交換するための言語仕様のことである。

この時点で、すでに難しいですよね。
とりあえずは、**「インターネット上で利用される認証の仕組み」**と思ってください。

SAMLってどんな仕組み?

どんな仕組みなんでしょうか?

身近なケースで例えてみます。
病院に行く場合を想像してみましょう。

身分を証明するためには、受付で「保険証」を出しますよね。

絵にしてみます。

image.png

ここでは、自分の身分を証明するために、
第三者機関の発行した「証明書」を利用しています。

SAMLも基本的にはこれと同じような考え方だと思っています。
仕組みを理解するうえで、上図にすこし説明を加えます。

image.png

このやり取りの中の要素が見えてきたかと思います。

では、ここで、SAMLの仕組みをみてみましょう。

クラウド時代のシングルサインオン基礎講座より抜粋
image.png

この図、どこか似ていないでしょうか?

概念としては、先程の例とほぼ同じだと思います。
整理すると以下です。

Identity Provider(IdP) = 保険団体 = 証明するヒト
ユーザー = 患者 = 証明されるヒト
Service Provider(SP) = 病院 = 証明を確認するヒト
アサーション = 保険証 = ヒトを証明するモノ

これを踏まえた上で図を見比べていただけると、理解が進むかと思います。

アサーションって何?

上図(図4 SAMLによるSSOの概要)を見ていると、
アサーションってどんなものなんだろう?という疑問がわかないでしょうか?
私は最初パッとイメージができませんでした。

こちらも少し解説しておきたいと思います。

SAMLの仕組みの中では、HTTPリクエストにのせて
以下のような証明書(アサーション)が飛び交います。

サンプルSAMLアサーションより抜粋
image.png

先程の例えを思い出してください。

「保険証」には何が記されているでしょうか?

以下のような情報が書かれているかと思います
・氏名
・保険証発行元
・被保険者の属性情報
 生年月日、性別など

SAMLアサーションも同じです。
・認証済みのユーザーID
image.png

・認証元IdP
image.png

・属性情報
image.png

「保険証のような証明書がコード化(xml)されたものがアサーションなんだ。」
と理解するとわかりやすいのではないでしょうか?

最後に

「パッときいただけでは拒否反応を示してしまいそうなIT用語も、
現実の世界のなにかに置き換えることで、より身近で理解しやすくなる。」
と思ってこの記事を書きました。

アサーション = 我々が普段持っている証明書 というイメージがわけば、
SAMLに関する仕様がスッと頭に入ってくると思います。

読んでいただいたあなたの理解が、少しでもすすめば幸いです。

※私の理解が間違えていた場合、土下座案件です。

12
14
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
12
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?