@kyanny's blog

My thoughts, my life. Views/opinions are my own.

SAML入門

自社製品が SAML 認証をサポートしている関係でたまに問い合わせ対応するのだが、SAML の基礎知識も実用経験もないまま雰囲気で触っている状態だったので、理解を深めるために買った。

ちなみに仕事で触れ始めるまでは「SAML?Memcached の認証方式の一つで、なんか設定がめっちゃ難しいやつだっけ?一度も使ったことない」という前提知識しかなかった、とこれを書いてる最中に「ん?SAML だっけ?」と調べたら SASL の間違いだった。十何年もこんな勘違いを放置してたくらい SAML を知らなかった。

概要をつかむのが目的だったので、仕様の細かい解説、SAML Request/Response の詳細などはざっと流した。それでもいくつか有益な内容があり、読んで良かった。

  • SP-initiated と IP-initiated という二種類の認証フローがある。
    • SP-initiated はシングルサインオンしたいサイトにアクセスして「SSO でログイン」的な動線から IdP に遷移し、IdP でログイン・認証して SP に戻ってくるパターン。GitHub の organization に SSO ログインするのはこのパターン。
    • IP-initiated は IdP 側のダッシュボード・アプリケーション一覧みたいな画面から SSO ログインしたいサイトを選んでログインするパターン。Okta のタイルとかはこれ。IdP にはログイン済み、つまり認証は済んでいるのでワンクリックで SSO できる。
  • SAML における、SP-IP 間での情報の渡し方にも二種類ある。HTTP Redirect Binding と HTTP Post Binding。
    • HTTP Redirect Binding は SAML メッセージを URL に含めて、ユーザーのブラウザを中継して SP-IP 間をリダイレクトする。
    • HTTP Post Binding は HTML の Form POST で SAML メッセージを送る。これもユーザーのブラウザを中継する。ちょっと動作イメージがモデル化しきれてないが、通常はユーザーに Form 送信操作(ボタンクリックなど)をさせず、JavaScript で自動送信させたりするものらしい。

このあたりまでなんとなく把握できただけで、この本を読む目的は達成した。初歩的な内容の解説は易しく、読みやすかった。「技術の泉」シリーズを読むのは初めてだったかもしれないが、表紙イラストのイメージで「技術同人誌=文章や構成のクオリティはあまり期待しない方がよい」という先入観があり、まあカチッとした商業出版の本と比べると差は感じたが、十分読める品質だったとは思う。

後半には SP のサンプル実装を OSS の IP 実装と連携させて実際に SAML SSO を手元で試すハンズオンも掲載されていて、実装レベルで理解したい・SP を実装する必要があるようなハイレベルな状況にも対応している。それが必要になる日が来るかはわからないが、いつか趣味として実装してみたい。

なかなか良かったので星4。