Packages
oidcc
3.8.0
3.8.0
3.8.0-beta.1
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/authorization.ex
# SPDX-FileCopyrightText: 2023 Erlang Ecosystem Foundation
# SPDX-License-Identifier: Apache-2.0
defmodule Oidcc.Authorization do
use TelemetryRegistry
telemetry_event(%{
event: [:oidcc, :par_request, :start],
description: "Emitted at the start of executing a PAR request",
measurements: "%{system_time: non_neg_integer(), monotonic_time: integer()}",
metadata: "%{issuer: :uri_string.uri_string(), client_id: String.t()}"
})
telemetry_event(%{
event: [:oidcc, :par_request, :stop],
description: "Emitted at the end of executing a PAR request",
measurements: "%{duration: integer(), monotonic_time: integer()}",
metadata: "%{issuer: :uri_string.uri_string(), client_id: String.t()}"
})
telemetry_event(%{
event: [:oidcc, :par_request, :exception],
description: "Emitted at the end of executing a PAR request",
measurements: "%{duration: integer(), monotonic_time: integer()}",
metadata: "%{issuer: :uri_string.uri_string(), client_id: String.t()}"
})
@moduledoc """
Functions to start an OpenID Connect Authorization
## Telemetry
#{telemetry_docs()}
"""
@moduledoc since: "3.0.0"
alias Oidcc.ClientContext
@doc """
Create Auth Redirect URL
For a high level interface using `Oidcc.ProviderConfiguration.Worker`
see `Oidcc.create_redirect_url/4`.
## Examples
iex> {:ok, pid} =
...> Oidcc.ProviderConfiguration.Worker.start_link(%{
...> issuer: "https://accounts.google.com"
...> })
...>
...> {:ok, client_context} =
...> Oidcc.ClientContext.from_configuration_worker(
...> pid,
...> "client_id",
...> "client_secret"
...> )
...>
...> {:ok, _redirect_uri} =
...> Oidcc.Authorization.create_redirect_url(
...> client_context,
...> %{redirect_uri: "https://my.server/return"}
...> )
"""
@doc since: "3.0.0"
@spec create_redirect_url(
client_context :: ClientContext.t(),
opts :: :oidcc_authorization.opts()
) :: {:ok, :uri_string.uri_string()} | {:error, :oidcc_authorization.error()}
def create_redirect_url(client_context, opts),
do:
client_context
|> ClientContext.struct_to_record()
|> :oidcc_authorization.create_redirect_url(opts)
end