Skip to content

MS_SAMLImplementationVerification

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

SAMLの実装を検証する。

概要

  • IdP 側のテスト
    テスト用 SP を使用してテストすると良い。

    • SimpleSAMLphp
    • SAML 2.0 Test Service Provider
  • SP 側のテスト
    著名な IdP を使用してテストすると良い。

移行メモ: 元ページは「著名、IdPを使用して」となっていたので、
「著名な IdP を使用して」に整えた。

補足(テストで必ず確認すべき異常系): 正常系(ログインできる)だけでは
検証にならない。次の異常系がすべて「拒否」されることを確認する。
これらは SAML Profiles の処理規則に対応する。

# 細工 期待する結果
1 署名を削除する 拒否
2 署名は残し、<NameID> の値を書き換える 拒否(ダイジェスト不一致)
3 別の(信頼していない)鍵で署名し直す 拒否
4 署名アルゴリズムを SHA-1 に落とす 拒否
5 <Audience> を別の SP の EntityID にする 拒否
6 NotOnOrAfter を過去にする 拒否
7 Recipient を別 URL にする 拒否
8 InResponseTo を書き換える/削除する 拒否
9 同じアサーションを 2 回 POST する 2 回目は拒否(リプレイ)
10 署名済み <Assertion> を複製し、片方を改ざん(XSW) 拒否
11 DTD / 外部実体を含む XML を送る(XXE) 拒否・外部アクセスしない

特に 9(リプレイ)と 10(XSW) は、
正常系のテストだけでは絶対に見つからないうえ、
実際に多数の製品で脆弱性として報告されている。
一度は手で細工した XML を投げてみること。

詳細

IdP側のテスト

  • SimpleSAMLphp
  • SAML 2.0 Test Service Provider

以下の参考を参照。

補足(現在使えるテスト SP): 元ページ記載のもの以外にも、
現在は次が使いやすい。

ツール 形態 用途
SAMLTool.com(OneLogin) オンライン エンコード / デコード、署名、検証
samltest.id オンライン Shibboleth ベースのテスト IdP / SP
SimpleSAMLphp 自前ホスト IdP / SP どちらにもなれる
Keycloak 自前ホスト(Docker) IdP。SAML / OIDC 両対応
SAML-tracer(ブラウザ拡張) ブラウザ やり取りされる SAML を復号して表示

特に SAML-tracer は必携である。
Base64 + Deflate されたメッセージを自動で展開して表示してくれるため、
「何が送られているか」を目視できる。

オンライン ツールに本番の鍵やアサーションを貼らないこと
SAMLを実装する。を参照)。

SP側のテスト

  • Okta Developer

以下の参考を参照。

補足: SP 側のテストでは、
複数の IdP と繋いでみることが重要である。
IdP ごとに次が異なるため、1 つで動いても他で壊れることが多い。

  • <Response><Assertion> のどちらに署名するか
  • 名前空間プレフィックスの付け方(SAML Core を参照)
  • NameIDFormat の既定値
  • 属性名の形式(URI 形式 / 短い名前)
  • 時刻の粒度・有効期間の長さ

参考

Shinya Yamaguchi(Qiita)

naohiro.fujie

OSSコンソーシアム

Okta Developer


Tags: 移行, IT国際標準, 認証基盤, クレームベース認証, SAML

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally