Ошибка Docusign OAuth getAccessToken для приложения Java - PullRequest
0 голосов
/ 04 июня 2018

У меня есть Java-приложение, которое Docusigning прекрасно, пока оно не сломалось где-то на прошлой неделе (возможно, было в любое время в последние пару недель).

С моей стороны ничего не изменилось, поэтому я подозреваю, что некоторые изменения на фронте Docusign.

Симптомы очень удивительные и следующие:

Вход с помощью OAuthработает нормально до стадии, когда он пытается получить токен доступа, после чего он зависает до истечения времени ожидания.Начальные этапы (вход в систему, обратный вызов с генерируемым кодом oauth, который затем вызывает компонент getAccesCode) работают нормально, и вот кикер - если я вставлю точные значения из зависшего вызова getAccessToken в curl и выполню его с того же сервера, онработает нормально.

Вот подробности зависшего вызова:

 getAccessToken request location='https://account-d.docusign.com/oauth/token'
getAccessToken request body=grant_type=authorization_code&code=<many characters>'
getAccessToken Request header  : Authorization:Basic Y2E1ZWM3N2UtMGQ4 + MORE

Так что это определенно связано с библиотеками Java, однако получить отладочную трассировку невозможночасть OAuth на сервере Docusing (хотя я знаю, что вы можете отследить фактические вызовы API, включив журналы Docusign, которые, по-видимому, не отслеживают шаги oauth)

Что удивительно, так это то, что он работал нормально в течение нескольких месяцев,И теперь отлично работает с curl, но просто зависает на Java.Я подозревал SSL, но если это так, почему начальные шаги работают?

Это трассировка стека Java, что интересно, не всегда сбрасывается (но зависание всегда происходит)

 java.net.SocketException: Connection timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:152)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
    at sun.security.ssl.InputRecord.read(InputRecord.java:480)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
    at org.apache.oltu.oauth2.client.URLConnectionClient.execute(URLConnectionClient.java:98)

Как уже упоминалось, запуск curl для https://account -d.docusign.com / oauth / token с параметрами grant_type = authorization_code и сгенерированным code = blah с соответствующим заголовком auth работает нормально, возвращая правильный ответ json.

Есть идеи у кого-нибудь?Как я могу отследить сторону Docusign, чтобы узнать, почему она висит?Что изменилось за последнее время?Новые сертификаты SSL?Я в тупике.

1 Ответ

0 голосов
/ 04 июня 2018

Per Amit и DS Support , DocuSign прекратил поддержку TLS1.0 в демоверсии с 29 мая 2018 года и вскоре также прекратит поддержку в PROD.Пожалуйста, проверьте соединение на вашем конце, если вы используете TLS1.0, если да, то вам нужно обновить его до TLS1.1+, чтобы снова начать использовать DS API.Я предполагаю, что если вы не сделали никаких изменений в коде, то это проблема, которую вы видите в своем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...