Учетная запись службы Google "Недопустимая подпись JWT" - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь написать код в webDNA для подключения к API Google Drive.Использование учетной записи службы, кажется, лучшее решение для данной проблемы.Из того, что я прочитал, процесс заключается в том, что ... создайте JWT, отправьте JWT в Google, чтобы получить ответ токена, а затем отправьте полученный ответ для вызова методов api. Я считаю, что моя проблема связана с закрытым ключом.

Я создаю и шифрую заголовок:

[text]header={"alg":"RS256","typ":"JWT"}[/text]
[text]header=[encrypt method=Base64][header][/encrypt][/text]
[text]header=[db_base64URL varName=header][/text][!]custom function to deal with special characters[/!]

Следующая сборка и шифрует заявку (добавлен пробел для удобства чтения):

[text]claim={
"iss":"xxx",
"scope":"https://www.googleapis.com/auth/drive",
"aud":"https://www.googleapis.com/oauth2/v4/token",
"exp":[Math][cTime]+3600[/Math],
"iat":[cTime]
}[/text]
[text]claim=[encrypt method=Base64][claim][/encrypt][/text]
[text]claim=[db_base64URL varName=claim][/text]

Эти разделы кажутсяправильно, теперь для создания подписи:

[text]p_key=-----BEGIN PRIVATE KEY-----xxxx-----END PRIVATE KEY-----\n[/text]
[text]sig=[encrypt method=SHA256][header].[claim].[p_key][/encrypt][/text]
[text]sig=[encrypt method=Base64][sig][/encrypt][/text]
[text]sig=[db_base64URL varName=sig][/text]

Я пытался переместить [p_key] вокруг, вне шифрования sha256 и внутри, с и без '.', я не получаю ошибку доЯ пытаюсь отправить его в Google, используя [TCPConnect] и [TCPSend] здесь:

[text show=T]response=[!]
[/!][TCPconnect host=accounts.google.com&SSL=T&port=443][!]
[/!][TCPsend skipheader=T]POST /o/oauth2/token HTTP/1.1[crlf][!]
[/!]Host: accounts.google.com[crlf][!]
[/!]Content-Type: application/x-www-form-urlencoded[crlf][!]
[/!]Content-Length: [countchars][sendData][/countChars][crlf][!]
[/!]Connection: close[crlf][!]
[/!][crlf][!]
[/!][sendData][crlf][!]
[/!][/TCPsend][!]
[/!][/TCPconnect][/text]

Когда отображается ответ, он отображается как:

{
  "error": "invalid_grant",
  "error_description": "Invalid JWT Signature."
}

Это сообщение об ошибке меньшеэто полезно, из того, что я прочитал, это может означать одну (или более) из любого количества вещей, и документация Google по этому вопросу не совсем полезна.Если у кого-то есть опыт использования google apis через webDNA, я был бы признателен за любую помощь, которую вы могли бы оказать!

...