我目前正在为 IBM Connections 4.0 开发 OAuth2 消费者(如果它有帮助,我正在使用 smartcloud 上的社交业务快速入门图像)
我相信我已经正确设置了所有内容(应用程序已注册并且回调 URL 正在运行 HTTPS),但是我在 oauth 过程中遇到了 500 错误。
基本上,用户被发送到此 URL 以获取 AuthorizationCode:
/oauth2/endpoint/connectionsProvider/authorize?response_type=code&client_id={appID}&callback_uri={URL}
这将返回一个登录页面。登录后,假设用户被重定向到使用 AuthorizationCode 作为 url 参数的回调 url。
但实际发生的是,在登录之后,但在页面重定向之前,IBM Connections 使用此消息引发 500 错误:
Error 500: javax.servlet.ServletException: Filter [OAuth20ClientAuthnFilter]: filter is unavailable.
如果用户在点击“/oauth2/endpoint/connectionsProvider/authorize”链接之前已登录,则立即显示 500 错误,而不是执行整个页面重定向的连接。
所以我很确定这与用户登录无关......这可能与授权代码生成或重定向回我的应用程序有关。
我不确定从这里去哪里。是否有人对 IBM Connections 有任何了解,可以帮助我指出错误的正确方向?或者更好的是,有没有人以前见过这个并且知道我做错了什么?
更新:
这是例外情况,我认为是 SystemOut.log 中堆栈跟踪的相关部分
10/11/13 12:10:43:585 EDT] 00000064 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet OAuth20EndpointServlet in application WebSphereOauth20SP. Exception created : javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: unable to find valid certification path to requested target
at com.ibm.jsse2.o.a(o.java:15)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:460)
at com.ibm.jsse2.kb.a(kb.java:294)
at com.ibm.jsse2.kb.a(kb.java:533)
at com.ibm.jsse2.lb.a(lb.java:55)
at com.ibm.jsse2.lb.a(lb.java:581)
at com.ibm.jsse2.kb.s(kb.java:11)
at com.ibm.jsse2.kb.a(kb.java:394)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44)
at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528)
at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
at com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40)
at com.ibm.ws.security.oauth20.util.TemplateRetriever.getTemplateFromRemote(TemplateRetriever.java:102)
at com.ibm.ws.security.oauth20.util.TemplateRetriever.getTemplate(TemplateRetriever.java:72)
at com.ibm.ws.security.oauth20.form.FormRenderer.renderForm(FormRenderer.java:67)
at com.ibm.ws.security.oauth20.web.OAuth20EndpointServlet.renderConsentForm(OAuth20EndpointServlet.java:557)
at com.ibm.ws.security.oauth20.web.OAuth20EndpointServlet.processAuthorizationRequest(OAuth20EndpointServlet.java:214)
at com.ibm.ws.security.oauth20.web.OAuth20EndpointServlet.doPost(OAuth20EndpointServlet.java:139)
at com.ibm.ws.security.oauth20.web.OAuth20EndpointServlet.doGet(OAuth20EndpointServlet.java:110)