我目前正在为 IBM Connections 4.0 开发 OAuth2 使用者(如果有帮助,我正在使用 smartcloud 上的社交业务快速入门图像(
我相信我已经正确设置了一切(应用程序已注册并且回调 URL 正在运行 HTTPS(,但我在 oauth 过程中遇到了 500 错误。
基本上,用户被发送到此 URL 以获取授权代码:
/oauth2/endpoint/connectionsProvider/authorize?response_type=code&client_id={appID}&callback_uri={URL}
这将返回一个登录页面。登录后,用户应该被重定向到回调 url,并将授权代码作为 url 参数。
但实际发生的是,在登录后,但在页面重定向之前,IBM Connections 会抛出 500 错误,并显示以下消息:
Error 500: javax.servlet.ServletException: Filter [OAuth20ClientAuthnFilter]: filter is unavailable.
如果用户在点击"/oauth2/endpoint/connectionsProvider/authorize"链接之前登录,则会立即显示 500 错误,而不是连接执行整个页面重定向操作。
所以我很确定这与用户登录无关......这可能与授权代码生成或重定向回我的应用程序有关。
我不确定从这里开始。有没有人对 IBM Connections 有任何了解,可以帮助我指出出错的正确方向?或者更好的是,以前有没有人见过这个,知道我做错了什么?
更新:
这是例外,我认为是系统输出堆栈跟踪的相关部分.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)
打开 WebSphere 控制台
转到安全性
单击 SSL 证书和密钥管理
单击密钥存储和证书
单击单元格默认信任存储
单击签署者证书
单击从端口检索
输入连接服务器的主机名,以及托管 OAUTH 舞蹈的端口,如果是 443,请使用 443
单击"确定
">点击保存/关闭
然后同步节点(您可以在环境下执行此操作。然后重新启动连接服务器(您可能不必执行此步骤(
重新尝试您的 oAuth 舞蹈。 如果失败,请粘贴系统输出的代码段.log