同じ中身を2つの書き方で表しました。属性1個なら247文字と1568文字で6.3倍です。
属性50個では3.6倍まで縮みます。増えるのは中身なので、印の分は薄まっていきます。
固定でかかる部分が大きいので、中身が少ないときほど比が開きます。
SAMLの券は、XMLで書かれた文書です。中には署名が入ります。
出典は署名の要素には、送り元を確かめ、主張の完全性を検証するために利用側が使える電子署名が含まれると説明しています。
署名の長さは書き方によりません。差が出るのは、その周りの印です。同じ中身を2つの形で作って測りました。
署名の部分はどちらにも同じ長さを入れてあります。差は印の分だけです。
同じ中身を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の差でした。
印の分は一定なので、中身が増えるほど薄まる。
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つは、印の少ない形の券でも同じです。形式が違っても、確かめる中身は変わりません。
確認を落としたときに何が通るかはOpenID Connectの記事で数えていて、署名まで確かめただけでは42.6%しか止まりませんでした。
XMLには、印の少ない形にはない難しさがあります。署名の対象がどこまでかを、文書の中で指し示す形になっている点です。
そのため、署名を確かめた部分と、値を読み取った部分がずれることがあり得ます。読み取る前に、署名の対象と読み取り対象が同じかを確かめる必要があります。
印の少ない形では、券全体が1つの署名の対象なのでこのずれが起きません。確認の項目は同じでも、実装の手数は増えます。
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
受け取る側では縮められません。短くしたい場合は、受け取った側の判断で弾くことになります。
SAMLの券には有効期間が入ります。出典は終了時刻の値は、開始時刻の値より70分あとになると明記しています。
この70分は発行する側が決めています。受け取る側が短くしたければ、自分の判断で弾くしかありません。
券が漏れた場合、最大70分は使えます。平均すれば35分です。
券を使うのは最初の1回だけなので、使い終わった券を弾く仕組みがあれば、この70分は縮みます。
その仕組みは、券に入っている識別子を記録して使い回しを弾くものです。OpenID Connectの記事の計測では、この確認が最後の15.8ポイントを止めていました。
出典はもう1点、注意を書いています。発行する側は、自分と利用側の時刻差を考慮せず、余裕も足さないという点です。
つまりずれの吸収は受け取る側の仕事です。どれだけ許すかを自分で決めることになります。
許した幅がそのまま期限の延長になることはOpenID Connectの記事で数えていて、60秒許すと期限切れの13.33%が通りました。
有効期間は発行側が決め、ずれの吸収は受け取り側が決める。
券の長さの比較では、印の多い形をこちらで組み立てています。実際の実装では属性名がもっと長い(名前空間つきの完全な名前)ため、比はここより大きくなります。署名も344文字ぶんを両方に入れた前提です。読み取りの時間は編集部環境での実測で、印の多い形の読み取りは正規表現で行っているため、実際の解析器はこれより重くなります。ここで見せているのは、印の代償が固定でかかり、中身が増えるほど薄まるという関係です。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る