はじめに
この記事は、SAMLResponseの中身を取り出して、シングルサインオン(SSO)の問題を解決したい方向けの記事です。
認証が上手くいかない原因を解決するために、認証サーバーから送られてきたSAMLResponseの詳細を解析するための方法をまとめました。
- 認証サーバー宛てにRequestは送れておりResponseが返ってきているものの、サービス側で認証ができない
- 原因を追究するためにSAMLResponseの中身を具体的に確認したい
上記で悩んでいる人の手助けになればと思い、記事を書きました。
細かい仕様やIT用語は所々省いていますが、ご了承ください。
SAMLResponseのデータを取り出そう
何はともあれSAMLResponseのデータを取得する必要があります。
- ブラウザの開発者ツールを開き、Networkタブを表示
- 事象を再現し、通信内容を確認
- 画像のようにpayloadタブを選択しておく
- 「SAMLResponse:」があるやりとりを見つけ、画像のようにpayloadにSAMLResponseが表示されていることを確認
文字列の上で右クリックを押すと「Copy value」が表示されます。クリックすることで、SAMLResponseデータを全文コピーできます。
これでSAMLResponseのデータを取得できました。
が、このままでは何が何やらわからないので、VSCodeを使ってエンコードしていきます。
VSCodeの設定
VSCodeのインストール方法は調べれば出てくるので、頑張ってください。
必要な拡張機能をインストールしましょう
これで準備完了です!
SAMLResponseの中身を見てみよう
1. 新しいテキストファイルを開く(フォルダとか好きにしてください。とりあえず最短の手順を言います)
2. SAMLResponseデータを貼り付け
3. Ctrl + A
で全選択、Ctrl + Shift + P
でコマンドパレットを表示
4. SAML: Decode element
を選択
これでSAMLResponseデータが読めるようになりました!ただこのままだと見にくいので、XML Toolsを使ってFormatしましょう。
5. Ctrl + A
で全選択、Ctrl + Shift + P
でコマンドパレットを表示し、XML Tools: Format as XML
を選択
6. これでSAMLResponseが見やすくなりました!
うまくエンコードできないときは…
SAMLResponseデータがURLエンコードされているものをコピーすると、エンコードできません。
データに%2
などがないことを確認してみてください。
SAMLRequestもエンコード可能
ここでは詳細書きませんが、同じようにSAMLRequestも確認することができます。
SAML: Decode and inflate element
を選択すればOKです。
おわり
自分はこの方法でSSOに関する問い合わせ調査をやっています。個人情報が含まれるのでくれぐれも取り扱いに注意してくださいね。
SAML-tracerというchromeの拡張機能を使えばもっとわかりやすいとのことですが、社用PCではブロックされました。。。