6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SAML RequestとResponseの解析方法

Last updated at Posted at 2022-01-16

みんな大好きSAML。
Box等のクラウドサービスをADFSとSAML連携してSSOを実装している企業も多いのでは?
先日SSO絡みでトラブルが発生した際にSAML RequestとResponseの解析方法を調べたので、備忘録として残しておく。

#解析手順
1.Chromeで認証画面を開く
Chromeで、普段通り認証画面(ユーザIDとパスワードを入力する画面)を開く

2.F12キーを押してChrome開発者コンソール(DevTools)を開く
標準だとWebページと同じウインドウ上に立ち上がってしまって見にくい。
下記を押せば、別ウインドウとして切り離すことが出来る。
image.png

3.Networkタブを開き、Preserve logにチェックを入れる
image.png

4.Clearアイコンを押して、ログを一旦クリアする
image.png

5.認証画面でユーザIDとパスワードを入力し、いつも通りサインインする
サインインする事でIdpとSP間で、SAML Request/Responseのやり取りが動く。

6.適当なところを右クリックして、Save all as HAR with contentをクリックして、HAR形式でログを保存する
image.png

7.保存したHARログをテキストエディタ等で開く、SAML Request/Responseを見つける
下記のような形で表示されており、Value部がSAMLメッセージ本体。

"queryString":[
    "name":"SAMLRequest",
    "value":"pojWEDjeofiwjeroigneotgiuhtrg・・・"
],

8.取得したvalueをGoogle Admin ToolboxでSAMLデコードする
image.png

9.デコード結果を調査して、何が問題なのか考える

#SAML Request/Responseが見当たらない
理由はよくわからないけど、MSISSamlRequestやResponseというパラメーターに保管される場合もあるようだ。

"Cookies":[
    "name":"MSISSamlRequest",
    "value":"pojWEDjeofiwjeroigneotgiuhtrg・・・"
    ~以下略~

この場合、上記のvalueをGoogle Admin ToolboxでBse64デコードを行う。
MSISSamlRequestのBase64デコード結果にはSamlRequest以外にも複数のパラメータがバックスラッシュで区切られて格納されているようなので、
バックスラッシュを目印にSamlRequest本体のvalueを取得してSamlデコードすれば解析できる。

#感想
SAMLはめんどい。
IAM製品を検討しよう。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?