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

Client Configuration for authorization, token exchange and userinfo

For most projects, it makes sense to use oidcc_provider_configuration_worker and the high-level interface of oidcc. In that case direct usage of this module is not needed.

To use the record, import the definition:

  -include_lib(["oidcc/include/oidcc_client_context.hrl"]).

Link to this section Summary

Link to this section Types

-type error() :: provider_not_ready.
-type t() ::
    #oidcc_client_context{provider_configuration :: oidcc_provider_configuration:t(),
                          jwks :: jose_jwk:key(),
                          client_id :: binary(),
                          client_secret :: binary()}.

Link to this section Functions

Link to this function

from_configuration_worker(ProviderName, ClientId, ClientSecret)

View Source
-spec from_configuration_worker(ProviderName, ClientId, ClientSecret) -> {ok, t()} | {error, error()}
                             when
                                 ProviderName :: gen_server:server_ref(),
                                 ClientId :: binary(),
                                 ClientSecret :: binary().

Create Client Context from a oidcc_provider_configuration_worker

examples

Examples

  {ok, Pid} =
    oidcc_provider_configuration_worker:start_link(#{
      issuer => <<"https://login.salesforce.com">>
    }),
 
  {ok, #oidcc_client_context{}} =
    oidcc_client_context:from_configuration_worker(Pid,
                                                   <<"client_id">>,
                                                   <<"client_secret">>).
  {ok, Pid} =
    oidcc_provider_configuration_worker:start_link(#{
      issuer => <<"https://login.salesforce.com">>,
      name => {local, salesforce_provider}
    }),
 
  {ok, #oidcc_client_context{}} =
    oidcc_client_context:from_configuration_worker(salesforce_provider,
                                                   <<"client_id">>,
                                                   <<"client_secret">>).
Link to this function

from_manual(Configuration, Jwks, ClientId, ClientSecret)

View Source
-spec from_manual(Configuration, Jwks, ClientId, ClientSecret) -> t()
               when
                   Configuration :: oidcc_provider_configuration:t(),
                   Jwks :: jose_jwk:key(),
                   ClientId :: binary(),
                   ClientSecret :: binary().

Create Client Context manually

examples

Examples

  {ok, Configuration} =
    oidcc_provider_configuration:load_configuration(<<"https://login.salesforce.com">>,
                                               []),
 
  #oidcc_provider_configuration{jwks_uri = JwksUri} = Configuration,
 
  {ok, Jwks} = oidcc_provider_configuration:load_jwks(JwksUri, []).
 
  #oidcc_client_context{} =
    oidcc_client_context:from_manual(Metdata,
                                     Jwks,
                                     <<"client_id">>,
                                     <<"client_secret">>).