2016-08-19 13 views
0

私はGoogleのサービスアカウントを作成し、erlangを使用してGoogle OAuthサービスアカウントのJWT署名を計算しますか?

JWT should be createdget access tokenprivate_keyclient_emailなど含むJSONファイルを持っています。

私はステップ

ヘッダーの計算以下の続いている

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

クレーム計算:

Claims = jsx:encode(#{ 
    <<"iss">> => <<"[email protected]">>, 
    <<"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を使用してInputのUTF-8表現に署名することができますどのように (SHA-256ハッシュ関数を持つRSASSA-PKCS1-V1_5-SIGNとも呼ばれます)をprivate_keyとcompu JWT署名?

答えて

1

これを行うために既に構築されたライブラリがあります。私が使っているものはErlang JOSEです。

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