gpt4 book ai didi

java - Java 应用程序的 Docusign OAuth getAccessToken 失败

转载 作者:行者123 更新时间:2023-11-30 02:08:55 26 4
gpt4 key购买 nike

我有一个 Java 应用程序,它一直很好地进行文档签名,直到上周的某个时候(可能是过去几周的任何时候)崩溃了。

我这边没有任何改变,所以我怀疑 Docusign 方面发生了一些变化。

症状非常令人费解,如下:

使用 OAuth 登录在尝试获取访问 token 的阶段之前工作正常,此时它会挂起直到超时。初始阶段(登录,使用生成的 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 库有关,但是不可能在 Docusing 服务器上获得 OAuth 部分的调试跟踪(尽管我知道您可以通过启用 Docusing 日志来跟踪实际的 API 调用)似乎没有跟踪 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)

如上所述,针对 https://account-d.docusign.com/oauth/token 运行curl使用参数 grant_type=authorization_code 和生成的 code=blah 以及适当的 auth header 可以正常工作,返回正确的 json 响应。

大家有什么想法吗?如何追踪 Docusign 一侧以找出其挂起的原因?最近发生了什么变化?新的 SSL 证书?我被难住了。

最佳答案

AmitDS Support ,DocuSign 已于 2018 年 5 月 29 日在 Demo 中终止对 TLS1.0 的支持,并将很快终止在 PROD 中的支持。如果您使用的是 TLS1.0,请测试您端的连接,如果是,则需要将其升级到 TLS1.1+ 才能再次开始使用 DS API。我假设如果您没有进行任何代码更改,那么这就是您在应用程序中看到的问题。

关于java - Java 应用程序的 Docusign OAuth getAccessToken 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50674265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com