Packages
samly
1.2.0
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.10.1
retired
0.10.0
retired
0.9.3
retired
0.9.2
retired
0.9.1
retired
0.9.0
retired
0.8.4
retired
0.8.3
retired
0.8.2
retired
0.8.1
retired
0.8.0
retired
0.7.2
retired
0.7.1
retired
0.7.0
retired
0.6.3
retired
0.6.2
retired
0.6.1
retired
0.6.0
retired
0.5.0
retired
0.4.0
retired
0.1.2
retired
SAML Single-Sign-On Authentication for Plug/Phoenix Applications
Current section
Files
Jump to
Current section
Files
lib/samly/state/session.ex
defmodule Samly.State.Session do
@moduledoc """
Stores SAML assertion in Plug session.
This provider uses Plug session to save the authenticated SAML
assertions from IdP. The session key name in the configuration is optional.
## Options
+ `:key` - Session key name used when saving the assertion (optional)
Value is either a binary or an atom
## Configuration Example
config :samly, Samly.State,
store: Samly.State.Session,
opts: [key: :my_assertion]
"""
alias Plug.Conn
alias Samly.Assertion
@behaviour Samly.State.Store
@session_key "samly_assertion"
@impl Samly.State.Store
def init(opts) do
opts |> Map.new() |> Map.put_new(:key, @session_key)
end
@impl Samly.State.Store
def get_assertion(conn, assertion_key, opts) do
%{key: key} = opts
case Conn.get_session(conn, key) do
{^assertion_key, %Assertion{} = assertion} -> assertion
_ -> nil
end
end
@impl Samly.State.Store
def put_assertion(conn, assertion_key, assertion, opts) do
%{key: key} = opts
Conn.put_session(conn, key, {assertion_key, assertion})
end
@impl Samly.State.Store
def delete_assertion(conn, _assertion_key, opts) do
%{key: key} = opts
Conn.delete_session(conn, key)
end
end