簡體   English   中英

使用 erlang 計算 Google OAuth 服務帳戶的 JWT 簽名?

[英]Computing the JWT signature for Google OAuth Service Account using erlang?

我已經創建了 google 服務帳戶並有包含private_keyclient_email等的 JSON 文件。

應該創建 JWT獲取訪問令牌

我遵循了以下步驟

標頭計算:

Header = jsx:encode(#{<<"alg">> => <<"RS256">>,<<"typ">> => <<"JWT">>}).
Base64Header = base64:encode(Header).

理賠計算:

Claims = jsx:encode(#{
  <<"iss">> => <<"google-123@some-test.iam.gserviceaccount.com">>,
  <<"scope">> => <<"https://www.googleapis.com/auth/cloud-platform">>,
  <<"aud">> => <<"https://www.googleapis.com/oauth2/v4/token">>,
  <<"exp">> => 1471629262,
  <<"iat">> => 1471627282
}).
Base64Claims = base64:encode(Claims).


Input = {Base64Header}.{Base64Claim}

而且,我們如何使用 SHA256withRSA(也稱為具有 SHA-256 哈希函數的 RSASSA-PKCS1-V1_5-SIGN)和private_keyInput的 UTF-8 表示進行簽名以計算 JWT 簽名?

已經建立了一些庫來做到這一點。 一個(我正在使用)是Erlang JOSE

%% In OTP 17 or later
Signed = jose_jwt:sign(RSAPrivate, #{ <<"alg">> => <<"RS256">> }, Payload),
{_JWS, Token} = jose_jws:compact(Signed).

請查看https://github.com/kivra/oauth2_client從 1.4.0 版開始,它支持使用服務帳戶憑據 JSON 文件進行授權,我使用示例https://github.com創建了一個拉取請求/kivra/oauth2_client/pull/26

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM