0

現在、IBM Connections 4.0 の OAuth2 コンシューマーに取り組んでいます (役立つ場合は、smartcloud でソーシャル ビジネス クイックスタート イメージを使用しています)。

すべてが正しくセットアップされていると思います (アプリが登録され、コールバック URL が HTTPS を実行しています) が、oauth プロセスの途中で 500 エラーが発生します。

基本的に、ユーザーは AuthorizationCode を取得するために次の URL に送信されます。

/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 を使用します

[OK] をクリックします。

[保存/閉じる] をクリックします。

次に、ノードを同期します (環境下で実行できます。次に、接続サーバーを再起動します (この手順を実行する必要がない場合があります))。

oAuth ダンスを再試行します。それが失敗した場合は、SystemOut.log のスニペットを貼り付けます

于 2013-10-10T11:23:22.910 に答える