みんな大好きSAML。
Box等のクラウドサービスをADFSとSAML連携してSSOを実装している企業も多いのでは?
先日SSO絡みでトラブルが発生した際にSAML RequestとResponseの解析方法を調べたので、備忘録として残しておく。
#解析手順
1.Chromeで認証画面を開く
Chromeで、普段通り認証画面(ユーザIDとパスワードを入力する画面)を開く
2.F12キーを押してChrome開発者コンソール(DevTools)を開く
標準だとWebページと同じウインドウ上に立ち上がってしまって見にくい。
下記を押せば、別ウインドウとして切り離すことが出来る。
3.Networkタブを開き、Preserve logにチェックを入れる
5.認証画面でユーザIDとパスワードを入力し、いつも通りサインインする
サインインする事でIdpとSP間で、SAML Request/Responseのやり取りが動く。
6.適当なところを右クリックして、Save all as HAR with contentをクリックして、HAR形式でログを保存する
7.保存したHARログをテキストエディタ等で開く、SAML Request/Responseを見つける
下記のような形で表示されており、Value部がSAMLメッセージ本体。
"queryString":[
"name":"SAMLRequest",
"value":"pojWEDjeofiwjeroigneotgiuhtrg・・・"
],
8.取得したvalueをGoogle Admin ToolboxでSAMLデコードする
9.デコード結果を調査して、何が問題なのか考える
#SAML Request/Responseが見当たらない
理由はよくわからないけど、MSISSamlRequestやResponseというパラメーターに保管される場合もあるようだ。
"Cookies":[
"name":"MSISSamlRequest",
"value":"pojWEDjeofiwjeroigneotgiuhtrg・・・"
~以下略~
この場合、上記のvalueをGoogle Admin ToolboxでBse64デコードを行う。
MSISSamlRequestのBase64デコード結果にはSamlRequest以外にも複数のパラメータがバックスラッシュで区切られて格納されているようなので、
バックスラッシュを目印にSamlRequest本体のvalueを取得してSamlデコードすれば解析できる。
#感想
SAMLはめんどい。
IAM製品を検討しよう。