Oauth 2.0 IBM Connections在OAuth2授权期间抛出500错误。([OAuth20ClientAuthFilter]:过滤器不可用)

Oauth 2.0 IBM Connections在OAuth2授权期间抛出500错误。([OAuth20ClientAuthFilter]:过滤器不可用),oauth-2.0,ibm-connections,Oauth 2.0,Ibm Connections,我目前正在为IBM Connections 4.0开发OAuth2消费者(如果有帮助的话,我正在smartcloud上使用social business quickstart映像) 我相信我所有的设置都是正确的(应用程序已注册,回调URL运行HTTPS),但我在oauth进程中遇到了500个错误 基本上,用户被发送到此URL以获取授权代码: /oauth2/endpoint/connectionsProvider/authorize?响应类型=代码和客户端id={appID}和回调uri={UR

我目前正在为IBM Connections 4.0开发OAuth2消费者(如果有帮助的话,我正在smartcloud上使用social business quickstart映像)

我相信我所有的设置都是正确的(应用程序已注册,回调URL运行HTTPS),但我在oauth进程中遇到了500个错误

基本上,用户被发送到此URL以获取授权代码:

/oauth2/endpoint/connectionsProvider/authorize?响应类型=代码和客户端id={appID}和回调uri={URL}

这将返回一个登录页面。登录后,假定用户被重定向到回调url,并使用AuthorizationCode作为url参数

但实际发生的情况是,在登录之后,但在页面重定向之前,IBM Connections会抛出一个500错误,其中包含以下消息:

Error 500: javax.servlet.ServletException: Filter [OAuth20ClientAuthnFilter]: filter is unavailable.
如果用户在点击“/oauth2/endpoint/connectionsProvider/authorize”链接之前登录,则会立即显示500错误,而不是执行整个页面重定向操作的连接

所以我很确定这与用户登录无关。。。这可能与生成授权码或重定向回我的应用程序有关

我不太确定从这里到哪里去。是否有人了解IBM连接,这有助于为我指出错误所在的正确方向?或者更好的是,以前有没有人看到过,知道我做错了什么

更新

这里有一个例外,我认为是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)

打开WebSphere控制台

去保安局

单击SSL证书和密钥管理

单击密钥存储和证书

单击CellDefaultTrustStore

单击签名者证书

单击从端口检索

输入连接服务器的主机名和承载OAUTH舞蹈的端口,如果是443,请使用443

单击“确定”

单击保存/关闭

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


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

很可能意味着您有一个不受信任的SSL连接,它正在杀死oAuth筛选器并等待答复。我按照您的步骤进行操作,但仍然看到问题。回调uri指向具有有效签名证书的服务器。但是,smartcloud Instance我运行的IBM Connections上没有。我绝不是IT专家…因此,如果这是一个愚蠢的问题,请原谅我,但是我的Connections实例上未签名的证书是否会导致此问题?对,这就是问题所在…应该很清楚,这就是您必须将证书导入信任存储的地方。
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)