curl --request POST \
--url https://api.iotools.cloud/v1/tool/saml-response-decoder \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"samlInput": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9Il84ZThkYzVmNi1iNTdhLTRlZDktYTRmYy01MGY5MmI3YjVmZTEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgRGVzdGluYXRpb249Imh0dHBzOi8vc3AuZXhhbXBsZS5jb20vU1NPL1BPU1QiIEluUmVzcG9uc2VUbz0iX3JlcWlkXzk5ODgiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiBJRD0iX2Q3MWEzYThlOWZjYzQ1YzllOWQyNDhlZjcwNDkzOTNmIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyNC0wMS0xNVQxMDozMDowMFoiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDI0LTAxLTE1VDEwOjM1OjAwWiIgUmVjaXBpZW50PSJodHRwczovL3NwLmV4YW1wbGUuY29tL1NTTy9QT1NUIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMjQtMDEtMTVUMTA6MjU6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMjQtMDEtMTVUMTA6MzU6MDBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3AuZXhhbXBsZS5jb208L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgU2Vzc2lvbkluZGV4PSJfc2Vzc2lvbl9pZF8wMDEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZT51c2VyQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+Sm9objwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+",
"referenceTime": "2024-01-15T10:30:00Z"
}
'{
"tool": "saml-response-decoder",
"tool_version": "1.0.1",
"outputs": {
"notes": [
{
"level": "Binding",
"message": "HTTP-POST (plain base64, no compression)"
},
{
"level": "OK",
"message": "Assertion is within its validity window at the reference time."
},
{
"level": "Signature",
"message": "No XML signature element found in this document."
}
],
"summary": [
{
"field": "Document Type",
"value": "Response"
},
{
"field": "ID",
"value": "_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1"
},
{
"field": "Version",
"value": "2.0"
},
{
"field": "IssueInstant",
"value": "2024-01-15T10:30:00Z"
},
{
"field": "Destination",
"value": "https://sp.example.com/SSO/POST"
},
{
"field": "InResponseTo",
"value": "_reqid_9988"
},
{
"field": "Issuer",
"value": "https://idp.example.com/SSO"
},
{
"field": "StatusCode",
"value": "urn:oasis:names:tc:SAML:2.0:status:Success"
},
{
"field": "NameID",
"value": "user@example.com"
},
{
"field": "NameID Format",
"value": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
},
{
"field": "Conditions NotBefore",
"value": "2024-01-15T10:25:00Z"
},
{
"field": "Conditions NotOnOrAfter",
"value": "2024-01-15T10:35:00Z"
},
{
"field": "Audience",
"value": "https://sp.example.com"
},
{
"field": "Recipient",
"value": "https://sp.example.com/SSO/POST"
},
{
"field": "SubjectConfirmation NotOnOrAfter",
"value": "2024-01-15T10:35:00Z"
},
{
"field": "AuthnInstant",
"value": "2024-01-15T10:30:00Z"
},
{
"field": "SessionIndex",
"value": "_session_id_001"
},
{
"field": "AuthnContextClassRef",
"value": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"
},
{
"field": "Attribute: Email",
"value": "user@example.com"
},
{
"field": "Attribute: FirstName",
"value": "John"
},
{
"field": "Attribute: LastName",
"value": "Doe"
}
],
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\" Destination=\"https://sp.example.com/SSO/POST\" InResponseTo=\"_reqid_9988\">\n <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n <samlp:Status>\n <samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/>\n </samlp:Status>\n <saml:Assertion ID=\"_d71a3a8e9fcc45c9e9d248ef7049393f\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\">\n <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n <saml:Subject>\n <saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">user@example.com</saml:NameID>\n <saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\">\n <saml:SubjectConfirmationData NotOnOrAfter=\"2024-01-15T10:35:00Z\" Recipient=\"https://sp.example.com/SSO/POST\"/>\n </saml:SubjectConfirmation>\n </saml:Subject>\n <saml:Conditions NotBefore=\"2024-01-15T10:25:00Z\" NotOnOrAfter=\"2024-01-15T10:35:00Z\">\n <saml:AudienceRestriction>\n <saml:Audience>https://sp.example.com</saml:Audience>\n </saml:AudienceRestriction>\n </saml:Conditions>\n <saml:AuthnStatement AuthnInstant=\"2024-01-15T10:30:00Z\" SessionIndex=\"_session_id_001\">\n <saml:AuthnContext>\n <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>\n </saml:AuthnContext>\n </saml:AuthnStatement>\n <saml:AttributeStatement>\n <saml:Attribute Name=\"Email\">\n <saml:AttributeValue>user@example.com</saml:AttributeValue>\n </saml:Attribute>\n <saml:Attribute Name=\"FirstName\">\n <saml:AttributeValue>John</saml:AttributeValue>\n </saml:Attribute>\n <saml:Attribute Name=\"LastName\">\n <saml:AttributeValue>Doe</saml:AttributeValue>\n </saml:Attribute>\n </saml:AttributeStatement>\n </saml:Assertion>\n</samlp:Response>"
},
"credits_used": 3,
"credits_remaining": null
}SAML Response Decoder
Decode a base64-encoded SAML Response or Assertion and inspect it. Auto-detects the HTTP-POST (plain base64) and HTTP-Redirect (DEFLATE-compressed) bindings, extracts a summary of key fields (Issuer, Destination, NameID, Conditions window, AudienceRestriction, attributes, StatusCode) and pretty-prints the decoded XML. A debugging tool for SSO troubleshooting — it does not verify signatures.
curl --request POST \
--url https://api.iotools.cloud/v1/tool/saml-response-decoder \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"samlInput": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9Il84ZThkYzVmNi1iNTdhLTRlZDktYTRmYy01MGY5MmI3YjVmZTEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgRGVzdGluYXRpb249Imh0dHBzOi8vc3AuZXhhbXBsZS5jb20vU1NPL1BPU1QiIEluUmVzcG9uc2VUbz0iX3JlcWlkXzk5ODgiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiBJRD0iX2Q3MWEzYThlOWZjYzQ1YzllOWQyNDhlZjcwNDkzOTNmIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyNC0wMS0xNVQxMDozMDowMFoiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDI0LTAxLTE1VDEwOjM1OjAwWiIgUmVjaXBpZW50PSJodHRwczovL3NwLmV4YW1wbGUuY29tL1NTTy9QT1NUIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMjQtMDEtMTVUMTA6MjU6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMjQtMDEtMTVUMTA6MzU6MDBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3AuZXhhbXBsZS5jb208L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgU2Vzc2lvbkluZGV4PSJfc2Vzc2lvbl9pZF8wMDEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZT51c2VyQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+Sm9objwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+",
"referenceTime": "2024-01-15T10:30:00Z"
}
'{
"tool": "saml-response-decoder",
"tool_version": "1.0.1",
"outputs": {
"notes": [
{
"level": "Binding",
"message": "HTTP-POST (plain base64, no compression)"
},
{
"level": "OK",
"message": "Assertion is within its validity window at the reference time."
},
{
"level": "Signature",
"message": "No XML signature element found in this document."
}
],
"summary": [
{
"field": "Document Type",
"value": "Response"
},
{
"field": "ID",
"value": "_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1"
},
{
"field": "Version",
"value": "2.0"
},
{
"field": "IssueInstant",
"value": "2024-01-15T10:30:00Z"
},
{
"field": "Destination",
"value": "https://sp.example.com/SSO/POST"
},
{
"field": "InResponseTo",
"value": "_reqid_9988"
},
{
"field": "Issuer",
"value": "https://idp.example.com/SSO"
},
{
"field": "StatusCode",
"value": "urn:oasis:names:tc:SAML:2.0:status:Success"
},
{
"field": "NameID",
"value": "user@example.com"
},
{
"field": "NameID Format",
"value": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
},
{
"field": "Conditions NotBefore",
"value": "2024-01-15T10:25:00Z"
},
{
"field": "Conditions NotOnOrAfter",
"value": "2024-01-15T10:35:00Z"
},
{
"field": "Audience",
"value": "https://sp.example.com"
},
{
"field": "Recipient",
"value": "https://sp.example.com/SSO/POST"
},
{
"field": "SubjectConfirmation NotOnOrAfter",
"value": "2024-01-15T10:35:00Z"
},
{
"field": "AuthnInstant",
"value": "2024-01-15T10:30:00Z"
},
{
"field": "SessionIndex",
"value": "_session_id_001"
},
{
"field": "AuthnContextClassRef",
"value": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"
},
{
"field": "Attribute: Email",
"value": "user@example.com"
},
{
"field": "Attribute: FirstName",
"value": "John"
},
{
"field": "Attribute: LastName",
"value": "Doe"
}
],
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\" Destination=\"https://sp.example.com/SSO/POST\" InResponseTo=\"_reqid_9988\">\n <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n <samlp:Status>\n <samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/>\n </samlp:Status>\n <saml:Assertion ID=\"_d71a3a8e9fcc45c9e9d248ef7049393f\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\">\n <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n <saml:Subject>\n <saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">user@example.com</saml:NameID>\n <saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\">\n <saml:SubjectConfirmationData NotOnOrAfter=\"2024-01-15T10:35:00Z\" Recipient=\"https://sp.example.com/SSO/POST\"/>\n </saml:SubjectConfirmation>\n </saml:Subject>\n <saml:Conditions NotBefore=\"2024-01-15T10:25:00Z\" NotOnOrAfter=\"2024-01-15T10:35:00Z\">\n <saml:AudienceRestriction>\n <saml:Audience>https://sp.example.com</saml:Audience>\n </saml:AudienceRestriction>\n </saml:Conditions>\n <saml:AuthnStatement AuthnInstant=\"2024-01-15T10:30:00Z\" SessionIndex=\"_session_id_001\">\n <saml:AuthnContext>\n <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>\n </saml:AuthnContext>\n </saml:AuthnStatement>\n <saml:AttributeStatement>\n <saml:Attribute Name=\"Email\">\n <saml:AttributeValue>user@example.com</saml:AttributeValue>\n </saml:Attribute>\n <saml:Attribute Name=\"FirstName\">\n <saml:AttributeValue>John</saml:AttributeValue>\n </saml:Attribute>\n <saml:Attribute Name=\"LastName\">\n <saml:AttributeValue>Doe</saml:AttributeValue>\n </saml:Attribute>\n </saml:AttributeStatement>\n </saml:Assertion>\n</samlp:Response>"
},
"credits_used": 3,
"credits_remaining": null
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Tool output
Show child attributes
Show child attributes
The tool's slug, echoing the {slug} in the request path.
Output-contract version for this tool.
Credits this call consumed, after any settlement refund. 0 when metering is disabled.
Credits left in the current monthly allowance, or null when metering is disabled.
Correlation id, also sent as x-request-id.
Was this page helpful?