Mint version updated
This commit is contained in:
parent
96222a99a3
commit
62c62f01df
@ -1,5 +1,5 @@
|
|||||||
defmodule YandexTranslate.Auth.IAMToken do
|
defmodule YandexTranslate.Auth.IAMToken do
|
||||||
alias YandexTranslate.Auth.JWTTokenConfig
|
alias YandexTranslate.Auth.SignerConfig
|
||||||
|
|
||||||
def get_auth_value() do
|
def get_auth_value() do
|
||||||
"Bearer " <> get_iam_token()
|
"Bearer " <> get_iam_token()
|
||||||
@ -8,12 +8,19 @@ defmodule YandexTranslate.Auth.IAMToken do
|
|||||||
def get_iam_token() do
|
def get_iam_token() do
|
||||||
# Rewrite needed, signing process not worked. Fucking PS256 and hash length optoins on my opinion
|
# Rewrite needed, signing process not worked. Fucking PS256 and hash length optoins on my opinion
|
||||||
# Pluged by old IAMToken
|
# Pluged by old IAMToken
|
||||||
"CggVAgAAABoBMRKABDnO1uw1a7U-AIlRglhz8yQVQzXaKjXt1saXk5VDXHH41mlPpMpK3V9-GUgthtdposNYva9hj0DaaHE1YDZfBcZkiZU7T_45ilhFtouG5rARRP8E6GqR4-dMutrYo69XQ3Uj4-KPa0IkOa2HrCTJEePhDHGlz-iW_YnN0QXFIlKN7NMIrZQyYRJ1dvQExx29TARcy_OVWOO8234rU_Vi5BRBKXTfp7NFB589bMe6UhEoYTF-1PdOEtxDJ2DLMdqMiYw4BZnyhOwn81u8kAetHpC-R6kizR8P2omcMyZORk4zwMfgdWlDzAhrIGq4ev8aOpcQH2vH8xh8ZMTgqbRZ9rezOflEZ3bDdDVdcQWjMq4ZYABY1n278pzhucbiTZJl6uxxTXg9Ucbg7_9mpA8DOIBn72wx8dTmrJgXWTstSJ6aShpg_1VJE48gUSenO1AjXWnat9hcvhgrBGKdQFlmhqnrRTptnvhgdNctwvD_tjpjC9ZWa5pBPyE9pKdiZzYUkhSEKEpRKFAh7oGv4i0w5gCHDzQrQfrrMFxFUUPJCg8Hx0tUbLqMgF9sYXYS4vhJFWFtBl_x0dd3KMPy33Fg4oDxlbZwsolyrVI9QnT9Es2qXGp1Sw9TLMM3pAI8G8JOD7O8eTRCJalRrrFOgybbK8LjK7AKLBhI0MNtQs0A_QS-GnYKIGIxODQ5YTljMmQ4ZjRiNjQ5YTU1MzhhN2E1OTdkNDU3ELTgzugFGPSx0egFIj4KFGFqZTB1czQyMWdoNG9idmJwcW5iEg5leGNoYW5nZXJzNGRldioUYjFnbmw5N3VkNzltYXA3bmhnM2wwAjAFOAFQAVoA"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_jwt_token() do
|
def get_jwt_token() do
|
||||||
signer = Joken.Signer.create("PS256", %{"pem" => get_rsa_key(:private)}, get_headers())
|
signer = Joken.Signer.create("PS256", %{"pem" => get_rsa_key(:private)}, get_headers())
|
||||||
JWTTokenConfig.generate_and_sign(%{}, signer) |> elem(1)
|
{:ok, token, _payload} = SignerConfig.generate_and_sign(%{}, signer)
|
||||||
|
token
|
||||||
|
|
||||||
|
# {:ok, payload_map} = SignerConfig.generate_claims()
|
||||||
|
# {:ok, payload} = Jason.encode(payload_map)
|
||||||
|
# headers = Map.merge(get_headers(), %{"alg" => "PS256", "typ" => "JWT"})
|
||||||
|
# key = get_rsa_key(:private) |> JOSE.JWK.from_pem()
|
||||||
|
# {_alg, jwt} = JOSE.JWS.sign(key, payload, headers) |> JOSE.JWS.compact()
|
||||||
|
# jwt
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_headers(kid \\ Application.get_env(:yandex_translate, :authorized_key_id)),
|
defp get_headers(kid \\ Application.get_env(:yandex_translate, :authorized_key_id)),
|
||||||
@ -31,7 +38,9 @@ defmodule YandexTranslate.Auth.IAMToken do
|
|||||||
|> elem(1)
|
|> elem(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp fetch_key("-----BEGIN" <> _ = key_content), do: key_content
|
defp fetch_key("-----BEGIN" <> _ = key_content) do
|
||||||
|
key_content
|
||||||
|
end
|
||||||
|
|
||||||
defp fetch_key(key_file), do: File.read!(key_file) |> fetch_key()
|
defp fetch_key(key_file), do: File.read!(key_file) |> fetch_key()
|
||||||
end
|
end
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
defmodule YandexTranslate.Auth.JWTTokenConfig do
|
|
||||||
@iam_token_url "https://iam.api.cloud.yandex.net/iam/v1/tokens"
|
|
||||||
|
|
||||||
use Joken.Config
|
|
||||||
|
|
||||||
@impl Joken.Config
|
|
||||||
def token_config() do
|
|
||||||
default_claims(
|
|
||||||
iss: Application.get_env(:yandex_translate, :service_account_id),
|
|
||||||
default_exp: 60 * 60,
|
|
||||||
skip: [:jti, :nbf],
|
|
||||||
aud: Application.get_env(:yandex_translate, :iam_token_url) || @iam_token_url
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
22
lib/yandex_translate/auth/signer_config.ex
Normal file
22
lib/yandex_translate/auth/signer_config.ex
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
defmodule YandexTranslate.Auth.SignerConfig do
|
||||||
|
@iam_token_url "https://iam.api.cloud.yandex.net/iam/v1/tokens"
|
||||||
|
|
||||||
|
use Joken.Config
|
||||||
|
|
||||||
|
# defp iss, do: Application.get_env(:yandex_translate, :service_account_id)
|
||||||
|
# defp aud, do: Application.get_env(:yandex_translate, :iam_token_url) || @iam_token_url
|
||||||
|
|
||||||
|
@impl Joken.Config
|
||||||
|
def token_config() do
|
||||||
|
default_claims(
|
||||||
|
iss: Application.get_env(:yandex_translate, :service_account_id),
|
||||||
|
default_exp: 59 * 60,
|
||||||
|
skip: [:jti, :nbf],
|
||||||
|
aud: Application.get_env(:yandex_translate, :iam_token_url) || @iam_token_url
|
||||||
|
)
|
||||||
|
|
||||||
|
# default_claims(skip: [:aud, :iss, :jti, :nbf])
|
||||||
|
# |> add_claim("aud", nil, &(&1 == iss()))
|
||||||
|
# |> add_claim("iss", nil, &(&1 == aud()))
|
||||||
|
end
|
||||||
|
end
|
9
mix.exs
9
mix.exs
@ -2,7 +2,7 @@ defmodule YandexTranslate.MixProject do
|
|||||||
use Mix.Project
|
use Mix.Project
|
||||||
|
|
||||||
@name "YandexTranslate"
|
@name "YandexTranslate"
|
||||||
@version "0.4.0"
|
@version "0.4.1"
|
||||||
# @repo_url "https://github.com/negrienko/yandex_translate"
|
# @repo_url "https://github.com/negrienko/yandex_translate"
|
||||||
@repo_url "https://gl.negrienko.com/negrienko/yandex_translate"
|
@repo_url "https://gl.negrienko.com/negrienko/yandex_translate"
|
||||||
@homepage_url "https://negrienko.com/all/yandex-translate/"
|
@homepage_url "https://negrienko.com/all/yandex-translate/"
|
||||||
@ -44,9 +44,10 @@ defmodule YandexTranslate.MixProject do
|
|||||||
defp deps do
|
defp deps do
|
||||||
[
|
[
|
||||||
{:joken, "~> 2.2.0"},
|
{:joken, "~> 2.2.0"},
|
||||||
{:jason, "~> 1.2.0"},
|
{:jose, "~> 1.10.1"},
|
||||||
{:mint, "~> 1.0.0"},
|
{:jason, "~> 1.2.1"},
|
||||||
{:castore, "~> 0.1.5"},
|
{:mint, "~> 1.1.0"},
|
||||||
|
{:castore, "~> 0.1.6"},
|
||||||
{:ex_spec, "~> 2.0.1", only: :test},
|
{:ex_spec, "~> 2.0.1", only: :test},
|
||||||
{:ex_doc, "~> 0.21.3", only: :dev},
|
{:ex_doc, "~> 0.21.3", only: :dev},
|
||||||
{:remix, "~> 0.0.2", only: :dev}
|
{:remix, "~> 0.0.2", only: :dev}
|
||||||
|
6
mix.lock
6
mix.lock
@ -1,6 +1,6 @@
|
|||||||
%{
|
%{
|
||||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
||||||
"castore": {:hex, :castore, "0.1.5", "591c763a637af2cc468a72f006878584bc6c306f8d111ef8ba1d4c10e0684010", [:mix], [], "hexpm", "6db356b2bc6cc22561e051ff545c20ad064af57647e436650aa24d7d06cd941a"},
|
"castore": {:hex, :castore, "0.1.6", "2da0dccb3eacb67841d11790598ff03cd5caee861e01fad61dce1376b5da28e6", [:mix], [], "hexpm", "f874c510b720d31dd6334e9ae5c859a06a3c9e67dfe1a195c512e57588556d3f"},
|
||||||
"certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
|
"certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"},
|
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"},
|
||||||
"ex_doc": {:hex, :ex_doc, "0.21.3", "857ec876b35a587c5d9148a2512e952e24c24345552259464b98bfbb883c7b42", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "0db1ee8d1547ab4877c5b5dffc6604ef9454e189928d5ba8967d4a58a801f161"},
|
"ex_doc": {:hex, :ex_doc, "0.21.3", "857ec876b35a587c5d9148a2512e952e24c24345552259464b98bfbb883c7b42", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "0db1ee8d1547ab4877c5b5dffc6604ef9454e189928d5ba8967d4a58a801f161"},
|
||||||
@ -8,14 +8,14 @@
|
|||||||
"hackney": {:hex, :hackney, "1.15.1", "9f8f471c844b8ce395f7b6d8398139e26ddca9ebc171a8b91342ee15a19963f4", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
|
"hackney": {:hex, :hackney, "1.15.1", "9f8f471c844b8ce395f7b6d8398139e26ddca9ebc171a8b91342ee15a19963f4", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"httpoison": {:hex, :httpoison, "1.5.1", "0f55b5b673b03c5c327dac7015a67cb571b99b631acc0bc1b0b98dcd6b9f2104", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
|
"httpoison": {:hex, :httpoison, "1.5.1", "0f55b5b673b03c5c327dac7015a67cb571b99b631acc0bc1b0b98dcd6b9f2104", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"jason": {:hex, :jason, "1.2.0", "10043418c42d2493d0ee212d3fddd25d7ffe484380afad769a0a38795938e448", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "116747dbe057794c3a3e4e143b7c8390b29f634e16c78a7f59ba75bfa6852e7f"},
|
"jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"},
|
||||||
"joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"},
|
"joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"},
|
||||||
"jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"},
|
"jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"},
|
||||||
"makeup": {:hex, :makeup, "1.0.1", "82f332e461dc6c79dbd82fbe2a9c10d48ed07146f0a478286e590c83c52010b5", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "49736fe5b66a08d8575bf5321d716bac5da20c8e6b97714fec2bcd6febcfa1f8"},
|
"makeup": {:hex, :makeup, "1.0.1", "82f332e461dc6c79dbd82fbe2a9c10d48ed07146f0a478286e590c83c52010b5", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "49736fe5b66a08d8575bf5321d716bac5da20c8e6b97714fec2bcd6febcfa1f8"},
|
||||||
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"},
|
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"},
|
||||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
|
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
|
||||||
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm"},
|
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm"},
|
||||||
"mint": {:hex, :mint, "1.0.0", "ca5ab33497ba2bdcc42f6cdd3927420a6159116be87c8173658e93c8746703da", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "b8943ef1e630879538dd6620bfc189d4d75fab3ad39f3fe9c50539879f7efd84"},
|
"mint": {:hex, :mint, "1.1.0", "1fd0189edd9e3ffdbd7fcd8bc3835902b987a63ec6c4fd1aa8c2a56e2165f252", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bfd316c3789340b682d5679a8116bcf2112e332447bdc20c1d62909ee45f48d"},
|
||||||
"mojito": {:hex, :mojito, "0.3.0", "806cd3c1832333a9ee784e7ea2799863fbe4de55ecb4623a8f4ef870c2844cc6", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: false]}, {:mint, "~> 0.2.1", [hex: :mint, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm"},
|
"mojito": {:hex, :mojito, "0.3.0", "806cd3c1832333a9ee784e7ea2799863fbe4de55ecb4623a8f4ef870c2844cc6", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: false]}, {:mint, "~> 0.2.1", [hex: :mint, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"},
|
"nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"},
|
||||||
"ojson": {:hex, :ojson, "1.0.0", "fd28614eadaec00a15cdb2f53f29d8717a812a508ddb80d202f2f2e2aaeabbcc", [:mix, :rebar3], [], "hexpm"},
|
"ojson": {:hex, :ojson, "1.0.0", "fd28614eadaec00a15cdb2f53f29d8717a812a508ddb80d202f2f2e2aaeabbcc", [:mix, :rebar3], [], "hexpm"},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user