Skip to content

Commit

Permalink
Allow to pass body_extension for token retrieval (#305)
Browse files Browse the repository at this point in the history
  • Loading branch information
maennchen authored Dec 13, 2023
1 parent 55be4b3 commit 0ff2569
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
10 changes: 8 additions & 2 deletions src/oidcc_token.erl
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
redirect_uri := uri_string:uri_string(),
request_opts => oidcc_http_util:request_opts(),
url_extension => oidcc_http_util:query_params(),
body_extension => oidcc_http_util:query_params(),
quirks => quirks()
}.
%% Options for retrieving a token
Expand All @@ -129,6 +130,7 @@
refresh_jwks => oidcc_jwt_util:refresh_jwks_for_unknown_kid_fun(),
request_opts => oidcc_http_util:request_opts(),
url_extension => oidcc_http_util:query_params(),
body_extension => oidcc_http_util:query_params(),
quirks => quirks()
}.
%% See {@link refresh_opts_no_sub()}
Expand All @@ -140,6 +142,7 @@
expected_subject := binary(),
request_opts => oidcc_http_util:request_opts(),
url_extension => oidcc_http_util:query_params(),
body_extension => oidcc_http_util:query_params(),
quirks => quirks()
}.
%% Options for refreshing a token
Expand All @@ -161,6 +164,7 @@
request_opts => oidcc_http_util:request_opts(),
kid => binary(),
url_extension => oidcc_http_util:query_params(),
body_extension => oidcc_http_util:query_params(),
quirks => quirks()
}.

Expand All @@ -169,6 +173,7 @@
refresh_jwks => oidcc_jwt_util:refresh_jwks_for_unknown_kid_fun(),
request_opts => oidcc_http_util:request_opts(),
url_extension => oidcc_http_util:query_params(),
body_extension => oidcc_http_util:query_params(),
quirks => quirks()
}.

Expand Down Expand Up @@ -893,7 +898,8 @@ retrieve_a_token(QsBodyIn, PkceVerifier, ClientContext, Opts, TelemetryOpts, Aut

Header0 = [{"accept", "application/jwt, application/json"}],

Body0 = add_pkce_verifier(QsBodyIn, PkceVerifier),
QsBody0 = QsBodyIn ++ maps:get(body_extension, Opts, []),
QsBody = add_pkce_verifier(QsBody0, PkceVerifier),

SupportedAuthMethods =
case AuthenticateClient of
Expand All @@ -904,7 +910,7 @@ retrieve_a_token(QsBodyIn, PkceVerifier, ClientContext, Opts, TelemetryOpts, Aut
maybe
{ok, {Body, Header}} ?=
oidcc_auth_util:add_client_authentication(
Body0, Header0, SupportedAuthMethods, SigningAlgs, Opts, ClientContext
QsBody, Header0, SupportedAuthMethods, SigningAlgs, Opts, ClientContext
),
Request =
{Endpoint, Header, "application/x-www-form-urlencoded", uri_string:compose_query(Body)},
Expand Down
9 changes: 7 additions & 2 deletions test/oidcc_token_test.erl
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ retrieve_none_test() ->
#{
<<"grant_type">> := <<"authorization_code">>,
<<"code">> := AuthCode,
<<"redirect_uri">> := LocalEndpoint
<<"redirect_uri">> := LocalEndpoint,
<<"foo">> := <<"bar">>
},
maps:from_list(uri_string:dissect_query(Body))
),
Expand All @@ -103,7 +104,11 @@ retrieve_none_test() ->
oidcc_token:retrieve(
AuthCode,
ClientContext,
#{redirect_uri => LocalEndpoint, url_extension => [{<<"foo">>, <<"bar">>}]}
#{
redirect_uri => LocalEndpoint,
url_extension => [{<<"foo">>, <<"bar">>}],
body_extension => [{<<"foo">>, <<"bar">>}]
}
)
),

Expand Down

0 comments on commit 0ff2569

Please sign in to comment.