diff --git a/rebar.config b/rebar.config index 5291387..7564d01 100644 --- a/rebar.config +++ b/rebar.config @@ -3,7 +3,7 @@ warnings_as_errors]}. {deps, [{hackney, "~> 1.20.1"}, - {jsx, "~> 2.9"}]}. + {jsx, "2.11.0"}]}. {shell, [{apps, [augle]}]}. diff --git a/rebar.lock b/rebar.lock index 75b131f..2c82c4d 100644 --- a/rebar.lock +++ b/rebar.lock @@ -2,7 +2,7 @@ [{<<"certifi">>,{pkg,<<"certifi">>,<<"2.12.0">>},1}, {<<"hackney">>,{pkg,<<"hackney">>,<<"1.20.1">>},0}, {<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},1}, - {<<"jsx">>,{pkg,<<"jsx">>,<<"2.8.2">>},0}, + {<<"jsx">>,{pkg,<<"jsx">>,<<"2.11.0">>},0}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},1}, {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},1}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.4.1">>},1}, @@ -13,7 +13,7 @@ {<<"certifi">>, <<"2D1CCA2EC95F59643862AF91F001478C9863C2AC9CB6E2F89780BFD8DE987329">>}, {<<"hackney">>, <<"8D97AEC62DDDDD757D128BFD1DF6C5861093419F8F7A4223823537BAD5D064E2">>}, {<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>}, - {<<"jsx">>, <<"7ACC7D785B5ABE8A6E9ADBDE926A24E481F29956DD8B4DF49E3E4E7BCC92A018">>}, + {<<"jsx">>, <<"08154624050333919B4AC1B789667D5F4DB166DC50E190C4D778D1587F102EE0">>}, {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>}, {<<"mimerl">>, <<"67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3">>}, {<<"parse_trans">>, <<"6E6AA8167CB44CC8F39441D05193BE6E6F4E7C2946CB2759F015F8C56B76E5FF">>}, @@ -23,7 +23,7 @@ {<<"certifi">>, <<"EE68D85DF22E554040CDB4BE100F33873AC6051387BAF6A8F6CE82272340FF1C">>}, {<<"hackney">>, <<"FE9094E5F1A2A2C0A7D10918FEE36BFEC0EC2A979994CFF8CFE8058CD9AF38E3">>}, {<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>}, - {<<"jsx">>, <<"B4C5D3230B397C8D95579E4A3D72826BB6463160130CCF4182F5BE8579B5F44C">>}, + {<<"jsx">>, <<"EED26A0D04D217F9EECEFFFB89714452556CF90EB38F290A27A4D45B9988F8C0">>}, {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>}, {<<"mimerl">>, <<"F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323">>}, {<<"parse_trans">>, <<"620A406CE75DADA827B82E453C19CF06776BE266F5A67CFF34E1EF2CBB60E49A">>}, diff --git a/src/augle_conf.erl b/src/augle_conf.erl new file mode 100644 index 0000000..989ca1d --- /dev/null +++ b/src/augle_conf.erl @@ -0,0 +1,27 @@ +%%%------------------------------------------------------------------- +%%% @author Sito +%%% @copyright (C) 2024, Nomasystems +%%% @doc +%%% +%%% @end +%%% Created : 16 Aug 2024 by Sito +%%%------------------------------------------------------------------- +-module(augle_conf). + +%%% EXTERNAL EXPORTS +-export([ + auth_host/0, + auth_path/0 +]). + +-define(AUTH_HOST, <<"https://www.googleapis.com">>). +-define(AUTH_PATH, <<"/oauth2/v4/token">>). + +%%%----------------------------------------------------------------------------- +%%% EXTERNAL EXPORTS +%%%----------------------------------------------------------------------------- +auth_host() -> + application:get_env(augle, auth_host, ?AUTH_HOST). + +auth_path() -> + application:get_env(augle, auth_path, ?AUTH_PATH). \ No newline at end of file diff --git a/src/augle_jwt.erl b/src/augle_jwt.erl index dab746a..d30dc51 100644 --- a/src/augle_jwt.erl +++ b/src/augle_jwt.erl @@ -12,17 +12,15 @@ -include_lib("public_key/include/public_key.hrl"). --define(HOST, "https://www.googleapis.com"). --define(TOKEN_PATH, "/oauth2/v4/token"). - --define(AUD, <<"https://www.googleapis.com/oauth2/v4/token">>). -define(URLENCODED_CONTENT_TYPE, <<"application/x-www-form-urlencoded">>). -define(JWT_HEADER, [{alg, <<"RS256">>}, {typ, <<"JWT">>}]). access_token(Iss, Scopes, EncodedPrivateKey) -> Jwt = jwt(Iss, Scopes, EncodedPrivateKey), Uri = <<"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=">>, - case hackney:post(<>, + AuthHost = augle_conf:auth_host(), + AuthPath = augle_conf:auth_path(), + case hackney:post(<>, [{<<"Content-Type">>, ?URLENCODED_CONTENT_TYPE}], <>, []) of {ok, 200, _RespHeaders, Client} -> @@ -55,9 +53,12 @@ asn1_decode(Der) -> Der. jwt_claim_set(Iss, Scopes) -> + AuthHost = augle_conf:auth_host(), + AuthPath = augle_conf:auth_path(), + Aud = <>, [{iss, Iss}, {scope, Scopes}, - {aud, ?AUD}, + {aud, Aud}, {exp, calendar:datetime_to_gregorian_seconds(calendar:universal_time()) - 62167219200 + 3600}, {iat, calendar:datetime_to_gregorian_seconds(calendar:universal_time()) - 62167219200}].