ExSaml.Core.Saml (ex_saml v1.0.2)

Copy Markdown View Source

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

decode_assertion(xml)

@spec decode_assertion(tuple()) :: {:ok, ExSaml.Core.Assertion.t()} | {:error, term()}

Decodes a SAML Assertion XML element into an ExSaml.Core.Assertion struct.

decode_idp_metadata(xml)

@spec decode_idp_metadata(tuple()) ::
  {:ok, ExSaml.Core.IdpMetadata.t()} | {:error, term()}

Decodes an IdP metadata XML element into an ExSaml.Core.IdpMetadata struct.

decode_logout_request(xml)

@spec decode_logout_request(tuple()) ::
  {:ok, ExSaml.Core.LogoutRequest.t()} | {:error, term()}

Decodes a SAML LogoutRequest XML element into an ExSaml.Core.LogoutRequest struct.

decode_logout_response(xml)

@spec decode_logout_response(tuple()) ::
  {:ok, ExSaml.Core.LogoutResponse.t()} | {:error, term()}

Decodes a SAML LogoutResponse XML element into an ExSaml.Core.LogoutResponse struct.

decode_response(xml)

@spec decode_response(tuple()) :: {:ok, ExSaml.Core.Response.t()} | {:error, term()}

Decodes a SAML Response XML element into an ExSaml.Core.Response struct.

lang_elems(base_tag, vals)

@spec lang_elems(tuple(), String.t() | [{atom(), String.t()}]) :: [tuple()]

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".

stale_time(a)

@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.

to_xml(arg1)

@spec to_xml(struct()) :: tuple()

Converts a SAML struct to an xmerl XML element.

Supports AuthnRequest, LogoutRequest, LogoutResponse, and SpMetadata.

validate_assertion(assertion_xml, recipient, audience)

@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

xmlAttribute(args \\ [])

(macro)

xmlAttribute(record, args)

(macro)

xmlElement(args \\ [])

(macro)

xmlElement(record, args)

(macro)

xmlNamespace(args \\ [])

(macro)

xmlNamespace(record, args)

(macro)

xmlText(args \\ [])

(macro)

xmlText(record, args)

(macro)