Core SAML protocol module for encoding and decoding SAML messages.
Ported from the Erlang esaml module. Provides functions for:
- Decoding SAML responses, assertions, logout requests/responses, and IdP metadata
- Validating assertions
- Converting SAML structs to XML
Summary
Functions
Decodes a SAML Assertion XML element into an ExSaml.Core.Assertion struct.
Decodes an IdP metadata XML element into an ExSaml.Core.IdpMetadata struct.
Decodes a SAML LogoutRequest XML element into an ExSaml.Core.LogoutRequest struct.
Decodes a SAML LogoutResponse XML element into an ExSaml.Core.LogoutResponse struct.
Decodes a SAML Response XML element into an ExSaml.Core.Response struct.
Produces cloned XML elements with xml:lang set for multi-locale strings.
Returns the gregorian seconds at which an assertion is considered stale.
Converts a SAML struct to an xmerl XML element.
Validates a SAML assertion XML element.
Functions
@spec decode_assertion(tuple()) :: {:ok, ExSaml.Core.Assertion.t()} | {:error, term()}
Decodes a SAML Assertion XML element into an ExSaml.Core.Assertion struct.
@spec decode_idp_metadata(tuple()) :: {:ok, ExSaml.Core.IdpMetadata.t()} | {:error, term()}
Decodes an IdP metadata XML element into an ExSaml.Core.IdpMetadata struct.
@spec decode_logout_request(tuple()) :: {:ok, ExSaml.Core.LogoutRequest.t()} | {:error, term()}
Decodes a SAML LogoutRequest XML element into an ExSaml.Core.LogoutRequest struct.
@spec decode_logout_response(tuple()) :: {:ok, ExSaml.Core.LogoutResponse.t()} | {:error, term()}
Decodes a SAML LogoutResponse XML element into an ExSaml.Core.LogoutResponse struct.
@spec decode_response(tuple()) :: {:ok, ExSaml.Core.Response.t()} | {:error, term()}
Decodes a SAML Response XML element into an ExSaml.Core.Response struct.
Produces cloned XML elements with xml:lang set for multi-locale strings.
If vals is a keyword list of {locale, string} pairs, generates one element
per locale. Otherwise generates a single element with xml:lang="en".
@spec stale_time(ExSaml.Core.Assertion.t()) :: integer()
Returns the gregorian seconds at which an assertion is considered stale.
Examines the Subject's NotOnOrAfter, the Conditions NotOnOrAfter, and falls back to issue_instant + 5 minutes.
Converts a SAML struct to an xmerl XML element.
Supports AuthnRequest, LogoutRequest, LogoutResponse, and SpMetadata.
@spec validate_assertion(tuple(), String.t(), String.t()) :: {:ok, ExSaml.Core.Assertion.t()} | {:error, term()}
Validates a SAML assertion XML element.
Decodes the assertion and validates:
- Version is "2.0"
- Recipient matches the expected value
- Audience matches (if present in conditions)
- Assertion is not stale