2016-08-19 3 views
0

Ich habe Google-Dienstkonto erstellt und haben JSON-Datei mit private_key, client_email usw.Berechnen der JWT-Signatur für das Google OAuth-Dienstkonto mithilfe von Erlang?

JWT should be created-get access token.

Ich habe folgenden Schritt gefolgt

Header-Berechnung:

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

Ansprüche Berechnung:

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} 

Und Wie wir die UTF-8-Darstellung des Input unterzeichnen kann SHA256withRSA mit (auch bekannt als RSASSA-PKCS1-V1_5-SIGN mit der Hash-Funktion SHA-256) mit der private_key zu compu te JWT Unterschrift?

Antwort

1

Es gibt Bibliotheken, die bereits dafür gebaut wurden. Eine (die ich verwende) ist Erlang JOSE.

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