SAML パーサー
SAML(Security Assertion Markup Language)は、IDプロバイダー(IdP)とサービスプロバイダー(SP)間で認証・認可データを交換するためのXMLベースの標準です。このツールはURLからSAMLメッセージをデコードし、Base64とDEFLATEエンコーディングを処理し、検査のためにXMLを整形出力します。
仕様
よくあるユースケース
- エンタープライズシングルサインオン(SSO)認証フローのデバッグ
- IDプロバイダー(Okta、Azure AD、ADFS)からのSAMLアサーションの検査
- サービス間のSAML統合のトラブルシューティング
- アサーション属性とNameID値の検証
- AuthnContextとセッションパラメータの分析
- セキュリティレビューのためのSAML設定の監査
機能
- SAML AuthnRequestメッセージの解析(SPからIdP)
- SAML ResponseとAssertionのデコード(IdPからSP)
- URLクエリパラメータからSAMLRequestとSAMLResponseを抽出
- Base64エンコーディングとDEFLATE圧縮の処理(HTTP-Redirectバインディング)
- シンタックスハイライト付きのXML構造の整形出力
- メッセージ概要の表示(タイプ、ID、IssueInstant、Destination、Status)
- Issuer、Subject/NameID、Conditionsの抽出
- AttributeStatementからアサーション属性を表示
- 署名存在インジケーター
例
SAML Response URL
試してみる →クエリ文字列にBase64エンコードされたSAML Responseを含むURL。
https://sp.example.com/acs?SAMLResponse=PHNhbWxwOlJlc3BvbnNlLz4=ヒント
- SAMLは2つの主要なバインディングを使用します:HTTP-Redirect(deflate+base64によるGET)とHTTP-POST(base64によるPOST)。
- RelayStateパラメータはSSOフロー全体を通じて元のリクエストURLを保持します。
- SAMLアサーションは署名、暗号化、またはその両方が可能です。このツールはデコードされた内容を表示します。
- NotBeforeとNotOnOrAfter条件を確認してアサーションの時間的妥当性を検証してください。
解説 SAML パーサー
SAML(Security Assertion Markup Language)は、IDプロバイダー(IdP)とサービスプロバイダー(SP)間で認証・認可データを交換するためのXMLベースのオープン標準です。2005年にOASISによって公開されたSAML 2.0は、エンタープライズシングルサインオン(SSO)の主要プロトコルとして、従業員が一度の認証で複数のアプリケーションにアクセスできるようにします。
SAML SSOフローは次のように動作します:ユーザーがサービスプロバイダーにアクセスしようとすると、SPがAuthnRequestを生成してブラウザをIdPにリダイレクトし、IdPがユーザーを認証してAssertionを含むSAML Responseを作成し、ブラウザがこのResponseをPOSTでSPに送り返します。アサーションにはユーザーのID(NameID)、属性(メール、グループ、ロール)、条件(有効期間、オーディエンス制限)が含まれます。
SAMLメッセージはバインディングを使用して転送されます。HTTP-RedirectバインディングはDEFLATE圧縮とBase64エンコーディングを使用してXMLをURLクエリパラメータにエンコードします。HTTP-POSTバインディングはBase64のみを使用し、自動送信フォームを介して送信します。SAMLのデバッグには、これらのレイヤーをデコードして基盤となるXMLを検査する必要があります。
SAMLアサーションは署名(IdPから来たことを証明するため)、暗号化(中間者が内容を読むことを防ぐため)、またはその両方が可能です。SSOの問題をトラブルシューティングする際の最初のステップは、常にSAML Responseをデコードして、アサーションの条件、オーディエンス、タイムスタンプ、属性値を確認することです。
SAMLとOAuth 2.0/OpenID Connectは異なる目的を果たします。SAMLはブラウザリダイレクトを介して転送されるXMLベースのアサーションを使用するエンタープライズSSO向けに設計されており、ADFSやOktaのようなIDプロバイダーを持つエンタープライズ環境で最も一般的です。OAuth 2.0はJSONトークンを使用するAPI アクセスのための認可フレームワークであり、OpenID ConnectはJWTを使用してOAuthの上に認証レイヤーを追加します。OIDCはモダンなWebおよびモバイルアプリケーションでより一般的であり、SAMLは企業IT環境で引き続き主流です。
SAMLメッセージは転送のためにエンコードされているため、理解しづらい文字列として表示されることがよくあります。HTTP-POSTバインディングでは、XMLはBase64エンコードされます。HTTP-Redirectバインディングでは、XMLはまずDEFLATE圧縮され、次にBase64エンコードされ、さらにURLエンコードされます。元のXMLを読むには、これらのレイヤーを正しい順序で元に戻す必要があります。このツールは使用されたバインディングに関係なく、すべてのデコード手順を自動的に処理します。
SAMLエラーのトラブルシューティングでは、いくつかの一般的な原因を確認してください:IdPとSP間のクロックスキューによりアサーションのタイムスタンプが検証に失敗する可能性があります。Audience要素はSPで設定されたエンティティIDと正確に一致する必要があります。アサーションがNotOnOrAfter時間を過ぎている場合があります。Destination属性はSPのAssertion Consumer Service(ACS)URLと一致する必要があります。IdPの署名証明書が最近ローテーションされた場合、SPが最新の証明書を持っていない可能性があります。RelayStateパラメータもSSOフローで重要な役割を果たします。認証リダイレクトを通じてユーザーが最初にリクエストしたURLを保持し、認証成功後にSPがユーザーを最初にアクセスしようとしたページにリダイレクトできるようにします。