はじめに
SAMLって専門用語が多くてわかりにくくないですか?
仕事で初めて使う事になった時、非常に大変でした。
専門知識が無い方でもある程度、わかりやすいように表現してみようと思います。
SAMLとは?
IT用語辞典
SAMLとは、ユーザー認証に用いる情報を複数の企業やインターネットサービスプロバイダ(ISP)間で安全に交換するための言語仕様のことである。
この時点で、すでに難しいですよね。
とりあえずは、**「インターネット上で利用される認証の仕組み」**と思ってください。
SAMLってどんな仕組み?
どんな仕組みなんでしょうか?
身近なケースで例えてみます。
病院に行く場合を想像してみましょう。
身分を証明するためには、受付で「保険証」を出しますよね。
絵にしてみます。
ここでは、自分の身分を証明するために、
第三者機関の発行した「証明書」を利用しています。
SAMLも基本的にはこれと同じような考え方だと思っています。
仕組みを理解するうえで、上図にすこし説明を加えます。
このやり取りの中の要素が見えてきたかと思います。
では、ここで、SAMLの仕組みをみてみましょう。
この図、どこか似ていないでしょうか?
概念としては、先程の例とほぼ同じだと思います。
整理すると以下です。
Identity Provider(IdP) = 保険団体 = 証明するヒト
ユーザー = 患者 = 証明されるヒト
Service Provider(SP) = 病院 = 証明を確認するヒト
アサーション = 保険証 = ヒトを証明するモノ
これを踏まえた上で図を見比べていただけると、理解が進むかと思います。
アサーションって何?
上図(図4 SAMLによるSSOの概要)を見ていると、
アサーションってどんなものなんだろう?という疑問がわかないでしょうか?
私は最初パッとイメージができませんでした。
こちらも少し解説しておきたいと思います。
SAMLの仕組みの中では、HTTPリクエストにのせて
以下のような証明書(アサーション)が飛び交います。
サンプルSAMLアサーションより抜粋
先程の例えを思い出してください。
「保険証」には何が記されているでしょうか?
以下のような情報が書かれているかと思います
・氏名
・保険証発行元
・被保険者の属性情報
生年月日、性別など
「保険証のような証明書がコード化(xml)されたものがアサーションなんだ。」
と理解するとわかりやすいのではないでしょうか?
最後に
「パッときいただけでは拒否反応を示してしまいそうなIT用語も、
現実の世界のなにかに置き換えることで、より身近で理解しやすくなる。」
と思ってこの記事を書きました。
アサーション = 我々が普段持っている証明書 というイメージがわけば、
SAMLに関する仕様がスッと頭に入ってくると思います。
読んでいただいたあなたの理解が、少しでもすすめば幸いです。
※私の理解が間違えていた場合、土下座案件です。