Tôi đang viết một số mã để cố lấy mã thông báo để sử dụng từ Google trong OAuth2. Đây là một tài khoản dịch vụ, vì vậy các hướng dẫn đang ở đây:JWT "invalid_grant" trong Chữ ký trong Google OAuth2
https://developers.google.com/identity/protocols/OAuth2ServiceAccount
tôi tiếp tục nhận được lỗi này khi tôi đăng JWT đến Google:
{ "lỗi": "invalid_grant", "ERROR_DESCRIPTION ":" Chữ ký JWT không hợp lệ ". }
Đây là mã:
try{
var nowInSeconds : Number = (Date.now()/1000);
nowInSeconds = Math.round(nowInSeconds);
var fiftyNineMinutesFromNowInSeconds : Number = nowInSeconds + (59 * 60);
var claimSet : Object = {};
claimSet.iss = "{{RemovedForPrivacy}}";
claimSet.scope = "https://www.googleapis.com/auth/plus.business.manage";
claimSet.aud = "https://www.googleapis.com/oauth2/v4/token";
claimSet.iat = nowInSeconds;
claimSet.exp = fiftyNineMinutesFromNowInSeconds;
var header : Object = {};
header.alg = "RS256";
header.typ = "JWT";
/* Stringify These */
var claimSetString = JSON.stringify(claimSet);
var headerString = JSON.stringify(header);
/* Base64 Encode These */
var claimSetBaseSixtyFour = StringUtils.encodeBase64(claimSetString);
var headerBaseSixtyFour = StringUtils.encodeBase64(headerString);
var privateKey = "{{RemovedForPrivacy}}";
/* Create the signature */
var signature : Signature = Signature();
signature = signature.sign(headerBaseSixtyFour + "." + claimSetBaseSixtyFour, privateKey , "SHA256withRSA");
/* Concatenate the whole JWT */
var JWT = headerBaseSixtyFour + "." + claimSetBaseSixtyFour + "." + signature;
/* Set Grant Type */
var grantType = "urn:ietf:params:oauth:grant-type:jwt-bearer"
/* Create and encode the body of the token post request */
var assertions : String = "grant_type=" + dw.crypto.Encoding.toURI(grantType) + "&assertion=" + dw.crypto.Encoding.toURI(JWT);
/* Connect to Google And Ask for Token */
/* TODO Upload Certs? */
var httpClient : HTTPClient = new HTTPClient();
httpClient.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=utf-8");
httpClient.timeout = 30000;
httpClient.open('POST', "https://www.googleapis.com/oauth2/v4/token");
httpClient.send(assertions);
if (httpClient.statusCode == 200) {
//nothing
} else {
pdict.errorMessage = httpClient.errorText;
}
}
catch(e){
Logger.error("The error with the OAuth Token Generator is --> " + e);
}
Có ai biết lý do tại sao JWT được không?
Cảm ơn bạn rất nhiều! Brad
Kiểm tra xem khóa riêng tư của tài khoản dịch vụ của bạn vẫn hợp lệ từ bảng điều khiển đám mây –
Đó có phải là Typecript không? Bạn có thể gắn thẻ câu hỏi bằng ngôn ngữ được sử dụng không? –
@Brad Bạn đã tìm thấy giải pháp chưa? – bibscy