View Source oidcc_authorization (Oidcc v3.0.0-alpha.4)

Functions to start an OpenID Connect Authorization

Link to this section Summary

Types

Configure authorization redirect url

Configure PKCE for authorization

Link to this section Types

-type error() :: {grant_type_not_supported, authorization_code}.
-type opts() ::
    #{scopes => oidcc_scope:scopes(),
      state => binary(),
      nonce => binary(),
      pkce => pkce() | undefined,
      redirect_uri := uri_string:uri_string(),
      url_extension => oidcc_http_util:query_params()}.

Configure authorization redirect url

See https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest

parameters

Parameters

  • scopes - list of scopes to request (defaults to [<<"openid">>])
  • state - state to pass to the provider
  • nonce - nonce to pass to the provider
  • pkce - pkce arguments to pass to the provider
  • redirect_uri - redirect target after authorization is completed
  • url_extension - add custom query parameters to the authorization url
-type pkce() :: #{challenge := binary(), method := binary()}.

Configure PKCE for authorization

See https://datatracker.ietf.org/doc/html/rfc7636#section-4.3

Link to this section Functions

Link to this function

create_redirect_url(ClientContext, Opts)

View Source
-spec create_redirect_url(ClientContext, Opts) -> {ok, Uri} | {error, error()}
                       when
                           ClientContext :: oidcc_client_context:t(),
                           Opts :: opts(),
                           Uri :: uri_string:uri_string().

Create Auth Redirect URL

For a high level interface using oidcc_provider_configuration_worker see oidcc:create_redirect_url/4.

examples

Examples

  {ok, ClientContext} =
      oidcc_client_context:from_configuration_worker(provider_name,
                                                     <<"client_id">>,
                                                     <<"client_secret">>),
 
  {ok, RedirectUri} =
      oidcc_authorization:create_redirect_url(ClientContext,
                                              #{redirect_uri: <<"https://my.server/return"}),
 
  %% RedirectUri = https://my.provider/auth?scope=openid&response_type=code&client_id=client_id&redirect_uri=https%3A%2F%2Fmy.server%2Freturn