Недопустимый токен доступа для подписи документа

#jwt

Вопрос:

Все еще только начинаю работать с API DocuSign eSig. Запись в VB.Нет, но я могу читать и переводить код C# в VB. Я не думаю, что это проблема. Я думаю, что сделал это правильно.

Ситуация:

Я определил, что выполняю авторизацию JWT.

Я выполнил шаг «получить согласие на авторизацию» с областью действия «олицетворение».

Мой шаг MakeEnvelope (), кажется, работает (ошибок не отмечено)

Моя функция для создания токена JWT возвращает токен, который проверяет ок при JWT.io (когда я даю ему открытый ключ)

Однако, когда я перехожу к команде CreateEnvelope (), я получаю следующую ошибку:


Документальный знак.Эсин.Клиент.Исключение ApiException: ‘Ошибка при вызове CreateEnvelope: {«Код ошибки»:»AUTHORIZATION_INVALID_TOKEN»,»сообщение»:»Срок действия предоставленного маркера доступа истек, отменен или неправильно сформирован».}’

Я знаю, что упускаю что-то фундаментальное, но я не хочу тратить больше часов, пытаясь это выяснить.

Вот моя функция для получения маркера доступа:


 Private Function GetaccessToken() As String
    Dim PrivateKey As String = "MIIEowIBAAKCAQEAhwBq<<<etc etc etc >>>JhUfXtJHQv/gvmR5bc"
    Dim ar1 As JObject = New JObject()
    ar1.Add("typ", "JWT")
    ar1.Add("alg", "RS256")
    Dim header As String = Base64UrlEncoder.Encode(ar1.ToString)

    Dim ar2 As JObject = New JObject()
    ar2.Add("iss", "<integration key>")
    ar2.Add("sub", "<user id>")
    ar2.Add("iat", DateDiff(DateInterval.Second, New Date(1970, 1, 1), Now().ToUniversalTime))
    ar2.Add("exp", DateDiff(DateInterval.Second, New Date(1970, 1, 1), DateAdd(DateInterval.Hour, 1, Now().ToUniversalTime)))
    ar2.Add("aud", "account-d.docusign.com")
    ar2.Add("scope", "signature")
    Dim body As String = Base64UrlEncoder.Encode(ar2.ToString)

    Dim stringToSign As String = header amp; "." amp; body
    Dim bytesToSign() As Byte = Encoding.UTF8.GetBytes(stringToSign)

    Dim keyBytes() As Byte = Convert.FromBase64String(PrivateKey)
    Dim privKeyObj = Asn1Object.FromByteArray(keyBytes)
    Dim privStruct = RsaPrivateKeyStructure.GetInstance(privKeyObj)

    Dim sig As ISigner = SignerUtilities.GetSigner("SHA256withRSA")
    sig.Init(True, New RsaKeyParameters(True, privStruct.Modulus,
                                privStruct.PrivateExponent))
    sig.BlockUpdate(bytesToSign, 0, bytesToSign.Length)
    Dim signature() As Byte = sig.GenerateSignature()

    Dim sign As String = Base64UrlEncoder.Encode(signature)

    Return header amp; "." amp; body amp; "." amp; sign
End Function
 

As I say, this returns a token that validates at JWT.io.

My process to create the envelope is:


 Public Shared Function SendEnvelopeViaEmail(ByVal signerEmail As String,
                                            ByVal signerName As String,
                                            ByVal ccEmail As String,
                                            ByVal ccName As String,
                                            ByVal accessToken As String,
                                            ByVal basePath As String,
                                            ByVal accountId As String,
                                            ByVal docDocx As String,
                                            ByVal docPdf As String,
                                            ByVal envStatus As String) As String
    Dim env As EnvelopeDefinition = MakeEnvelope(signerEmail, signerName, ccEmail, ccName, docDocx, docPdf, envStatus)
    Dim apiClient As ApiClient = New ApiClient(basePath)
    apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " amp; accessToken)
    Dim envelopesApi As EnvelopesApi = New EnvelopesApi(apiClient)
    Dim results As EnvelopeSummary = envelopesApi.CreateEnvelope(accountId, env)
    Return results.EnvelopeId
End Function
 

Используемый базовый путь-это «https://demo.docusign.net/restapi»

Я проверил идентификатор интеграции, идентификатор клиента, идентификатор учетной записи. они правы.

Ошибка возникает в строке
с тусклыми результатами В виде EnvelopeSummary = envelopesApi.CreateEnvelope(учетная запись, env)

Может ли кто-нибудь указать мне правильное направление? Спасибо!