Packages
oidcc
3.7.2
3.7.2
3.7.1
3.7.0
3.6.0
3.5.2
3.5.1
3.5.0
retired
3.4.0
3.3.0
3.2.6
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.2.0-beta.3
3.2.0-beta.2
retired
3.2.0-beta.1
retired
3.1.2
3.1.2-beta.1
retired
3.1.1
retired
3.1.0
retired
3.1.0-beta.2
retired
3.1.0-beta.1
retired
3.0.2
3.0.1
retired
3.0.0
retired
3.0.0-rc.6
retired
3.0.0-rc.5
retired
3.0.0-rc.4
retired
3.0.0-rc.3
retired
3.0.0-rc.2
retired
3.0.0-rc.1
retired
3.0.0-alpha.5
retired
3.0.0-alpha.4
retired
3.0.0-alpha.3
retired
3.0.0-alpha.2
retired
3.0.0-alpha.1
retired
2.0.0-alpha.2
retired
2.0.0-alpha.1
retired
1.8.1
retired
1.8.0
retired
1.7.0
retired
1.6.0
retired
1.5.1
retired
1.5.0
retired
1.4.0
retired
1.3.0
retired
1.2.1
retired
1.2.0
retired
1.1.0
retired
1.0.1
retired
1.0.0
retired
OpenID Connect client library for the BEAM.
Current section
Files
Jump to
Current section
Files
lib/oidcc/logout.ex
# SPDX-FileCopyrightText: 2023 Erlang Ecosystem Foundation
# SPDX-License-Identifier: Apache-2.0
defmodule Oidcc.Logout do
@moduledoc """
Logout from the OpenID Provider
"""
@moduledoc since: "3.0.0"
alias Oidcc.ClientContext
alias Oidcc.Token
@doc """
Initiate URI for Relaying Party initiated Logout
See https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout
For a high level interface using `Oidcc.ProviderConfiguration.Worker`
see `Oidcc.initiate_logout_url/4`.
## Examples
iex> {:ok, pid} =
...> Oidcc.ProviderConfiguration.Worker.start_link(%{
...> issuer: "https://erlef-test-w4a8z2.zitadel.cloud"
...> })
...>
...> {:ok, client_context} =
...> Oidcc.ClientContext.from_configuration_worker(
...> pid,
...> "client_id",
...> :unauthenticated
...> )
...>
...> # Get `token` from `Oidcc.retrieve_token/5`
...> token = "token"
...>
...> {:ok, _redirect_uri} =
...> Oidcc.Logout.initiate_url(
...> token,
...> client_context,
...> %{post_logout_redirect_uri: "https://my.server/return"}
...> )
"""
@doc since: "3.0.0"
@spec initiate_url(
token :: id_token | Token.t() | :undefined,
client_context :: ClientContext.t(),
opts :: :oidcc_logout.initiate_url_opts()
) ::
{:ok, :uri_string.uri_string()}
| {:error, :oidcc_logout.error()}
when id_token: String.t()
def initiate_url(token, client_context, opts \\ %{}) do
client_context = ClientContext.struct_to_record(client_context)
token =
case token do
token when is_binary(token) -> token
%Token{} = token -> Token.struct_to_record(token)
end
:oidcc_logout.initiate_url(token, client_context, opts)
end
end