У меня есть 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?Я в тупике.