セキュリティ・ID

SAMLとは|印の多さの代償は6.3倍から始まり、属性が増えるほど3.6倍まで縮んだ

どれだけ大きくなるのか何を確かめる必要があるのか有効な時間はどれくらいか

同じ中身を2つの書き方で表しました。属性1個なら247文字と1568文字で6.3倍です。

属性50個では3.6倍まで縮みます。増えるのは中身なので、印の分は薄まっていきます。

この記事の要点

  • 属性1個で6.3倍
  • 属性50個で3.6倍
  • 読み取りは1.8倍
  • 有効期間は70分

印の多さの代償は6.3倍から始まり、属性が増えるほど3.6倍まで縮んだ

固定でかかる部分が大きいので、中身が少ないときほど比が開きます。

SAMLの券は、XMLで書かれた文書です。中には署名が入ります。

出典は署名の要素には、送り元を確かめ、主張の完全性を検証するために利用側が使える電子署名が含まれると説明しています。

署名の長さは書き方によりません。差が出るのは、その周りの印です。同じ中身を2つの形で作って測りました。

属性の数を変える

署名の部分はどちらにも同じ長さを入れてあります。差は印の分だけです。

text
同じ中身を2つの書き方で表す。属性の数を変えて大きさを見る
署名の部分は、どちらも同じ長さ(344文字)を入れてある

属性の数  印の少ない形  印の多い形  比  1000回読み取る時間(少ない形/多い形)
1個                 247文字      1568文字  6.3倍                         0.8ms / 0.9ms
5個                 391文字      2048文字  5.2倍                         1.0ms / 1.2ms
20個                957文字      3876文字  4.1倍                         1.8ms / 3.2ms
50個               2117文字      7556文字  3.6倍                         3.4ms / 6.0ms

属性1個では6.3倍です。中身がほとんどないのに、1568文字になります。

属性50個では3.6倍まで縮みます。比が半分近くになりました。

縮む理由

印の多い形には、属性の数によらずかかる部分があります。名前空間の宣言や、主体・条件・認証の記述です。

この部分が約1300文字を占めます。中身が増えれば、その1300文字の割合は下がります

だから「XMLは何倍も重い」という言い方は、属性が少ない場合にだけ当てはまります

読み取りの時間も同じ向きです。属性50個で3.4msと6.0ms、1000回あたり2.6msの差でした。

印の分は一定なので、中身が増えるほど薄まる。

属性1個印の少ない形ぶん印の多い形で増える分13211568文字属性5個39116572048文字属性20個95729193876文字属性50個211754397556文字署名は344文字ぶんを両方に入れてある。増える分の伸びが下段より緩やかなので、比は6.3倍から3.6倍へ縮む。
図1 ── 属性の数と、券の長さ
出典Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform)2026-08-18 確認
The Signature element contains a digital signature that the cloud service can use to authenticate the source to verify the integrity of the assertion.
原文Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform) この内容の有効期限2027-02-18

確かめる項目は形が違っても同じ

書き方はXMLでも、確認すべきものは発行元・宛先・期限・署名で変わりません。

SAMLの券でも、宛先の一致は必須です。出典は発行元の値と同じく、宛先の値は、利用側を表す名前のいずれかと厳密に一致しなければならないと定めています。

「厳密に一致」です。前方一致や部分一致では通してはいけません

確かめる4つ

  1. 署名。送り元と、途中で変えられていないこと
  2. 発行元。想定した提供元から出ていること
  3. 宛先。自分に向けた券であること
  4. 有効期間。開始前でも終了後でもないこと

この4つは、印の少ない形の券でも同じです。形式が違っても、確かめる中身は変わりません

確認を落としたときに何が通るかはOpenID Connectの記事で数えていて、署名まで確かめただけでは42.6%しか止まりませんでした。

この形に固有の注意

XMLには、印の少ない形にはない難しさがあります。署名の対象がどこまでかを、文書の中で指し示す形になっている点です。

そのため、署名を確かめた部分と、値を読み取った部分がずれることがあり得ます。読み取る前に、署名の対象と読み取り対象が同じかを確かめる必要があります。

印の少ない形では、券全体が1つの署名の対象なのでこのずれが起きません。確認の項目は同じでも、実装の手数は増えます

出典Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform)2026-08-18 確認
Like the Issuer value, the Audience value must exactly match one of the service principal names that represents the cloud service in Microsoft Entra ID.
原文Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform) この内容の有効期限2027-02-18

有効期間は70分に固定されている

受け取る側では縮められません。短くしたい場合は、受け取った側の判断で弾くことになります。

SAMLの券には有効期間が入ります。出典は終了時刻の値は、開始時刻の値より70分あとになると明記しています。

この70分は発行する側が決めています。受け取る側が短くしたければ、自分の判断で弾くしかありません。

70分が意味するもの

券が漏れた場合、最大70分は使えます。平均すれば35分です。

券を使うのは最初の1回だけなので、使い終わった券を弾く仕組みがあれば、この70分は縮みます。

その仕組みは、券に入っている識別子を記録して使い回しを弾くものです。OpenID Connectの記事の計測では、この確認が最後の15.8ポイントを止めていました。

時計のずれ

出典はもう1点、注意を書いています。発行する側は、自分と利用側の時刻差を考慮せず、余裕も足さないという点です。

つまりずれの吸収は受け取る側の仕事です。どれだけ許すかを自分で決めることになります。

許した幅がそのまま期限の延長になることはOpenID Connectの記事で数えていて、60秒許すと期限切れの13.33%が通りました。

有効期間は発行側が決め、ずれの吸収は受け取り側が決める。

全 3 段余裕は足さない発行側が開始時刻を打つ受け取る側では縮められない70分後を終了時刻にする許した分だけ延びる受け取る側がずれを許す使い終わった券を記録して弾けば、実際に使える時間は70分より短くできる。
図2 ── 券が有効な時間の決まり方
余談 この計測での注意

券の長さの比較では、印の多い形をこちらで組み立てています。実際の実装では属性名がもっと長い(名前空間つきの完全な名前)ため、比はここより大きくなります。署名も344文字ぶんを両方に入れた前提です。読み取りの時間は編集部環境での実測で、印の多い形の読み取りは正規表現で行っているため、実際の解析器はこれより重くなります。ここで見せているのは、印の代償が固定でかかり、中身が増えるほど薄まるという関係です。

出典Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform)2026-08-18 確認
The value of the NotOnOrAfter attribute is 70 minutes later than the value of the NotBefore attribute.
原文Microsoft Learn「Single sign-on SAML protocol」(Microsoft identity platform) この内容の有効期限2027-02-18

よくある質問

SAMLの券はどれだけ大きいですか
この計測では属性1個で1568文字、印の少ない形の6.3倍でした。属性50個では3.6倍まで縮みます。
なぜ比が縮むのですか
印の分が一定だからです。中身が増えるほど、固定でかかる部分の割合が下がります。
読み取りは重いですか
属性50個で6.0msと3.4msでした。1000回あたりの差は2.6msです。
券はいつまで有効ですか
この実装では70分です。開始時刻の70分後が終了時刻として設定されます。

まとめ

  • XMLで身元を伝える
  • 印の分だけ大きくなる
  • 属性が増えると比は縮む
  • 有効期間は70分

今日から始められること

  1. 受け取っている券の長さを測る
  2. 載せている属性の数を数える
  3. 宛先の確認が入っているか確かめる
  4. 有効期間が何分になっているか確かめる

実務で組んだSAMLのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る