0

我目前正在为 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)
4

1 回答 1

0

打开您的 WebSphere 控制台

转到安全

单击 SSL 证书和密钥管理

单击密钥库和证书

单击 CellDefaultTrustStore

单击签名者证书

单击从端口检索

输入连接服务器的主机名,以及托管 OAUTH 的端口,如果是 443,请使用 443

点击确定

点击保存/关闭

然后同步节点(您可以在环境下进行。然后重新启动连接服务器(您可能不必执行此步骤)

重试您的 oAuth 舞蹈。如果失败,请粘贴您的 SystemOut.log 的片段

于 2013-10-10T11:23:22.910 回答