2012-04-09 17 views
1

フロントエンド開発チームに公開されているさまざまなWebサービスで構成されたWebアプリケーションがあります。私たちは小さな店ですので、セキュリティは一度も心配することはありませんでしたが、まだ実装方法を知りたいです。WebサービスにSSLを追加すると無効なセキュリティヘッダー

Netbeans 7.0.1、Glassfish 3.1.1 b12、およびSOAPを使用しています。私たちはNetbeansのウィザードを使って基本的なセキュリティを設定し、それを有効にしました。次に、Transport Securityを追加しようとしましたが、WSDLファイルに追加されていることを確認しました。サーバー側で

:それは、我々は次のエラーを取得しているSSLを追加しようとしたときである

SEVERE:WSS1601:セキュリティ要件が満たされていない - 交通がポリシーで構成されたバインディングが、着信メッセージはありませんでしたSSL有効 重大度:WSITPVD0035:受信メッセージのセキュリティを確認中にエラーが発生しました。 com.sun.xml.wss.impl.XWSSecurityRuntimeException:WSS1601:セキュリティ要件が満たされていない - 交通がポリシーで設定バインディングが、着信メッセージはSSLをcom.sun.xml.wss.impl.policy.verifier.MessagePolicyVerifierで を有効になりませんでした。 verifyPolicy(MessagePolicyVerifier.java:125) (com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.createMessage(SecurityRecipient.java:983) 、com.sun.xml.ws.security.opt)。 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.verifyInboundMessage(WSITServerAuthContext.java:586) com.sun.xml.wss.providerでimpl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:232)を返します。 wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:360) at com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateReques (CommonServerSecurityPipe.java:173) com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:173)

09:36:16464 com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)クライアント側

における144) 警告[org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor](http-127.0.0.1-443-1)リクエストにセキュリティヘッダーが含まれていませんが、それはです。 09:36:16467 ERROR [org.jboss.ejb3.invocation](HTTP - 127.0.0.1-443-1)JBAS014134:EJB呼び出しがメソッドpublic JA va.util.Listのcom.enginsol用成分ActivityEJBに失敗しました。 ActivityEJB.getActivities(int):javax.ejb.EJBException:javax.xml.ws.soap.SOAPFExceptionException:無効なセキュリティヘッダー at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166)[jboss -as-ejb3-7.1.0.Final.jar:7.1.0.Final] org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTxで(CMTTxInterceptor.java:230)のJBoss-AS-ejb3-7.1。 0.Final.jar:org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)で7.1.0.Final] [JBossの-AS-ejb3-7.1.0.Final.jar:7.1 7.1.0:org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)のJBoss-AS-ejb3-7.1.0.Final.jarで.0.Final] 。 org.jboss.as.ejb3.componentで1.1.1.Final] :org.jboss.invocation.InterceptorContext.proceedの最終] (InterceptorContext.java:288)のJBoss-呼び出し-1.1.1.Final.jar .interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java :288)[jboss-invocation-1.1.1.Final.jar:1.1.1。最終的に をorg.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)[jboss-as-ejb3-7.1.0.Final.jar:7。 1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)[jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as。 ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)[jboss-as-ee-7.1.0.Final.jar:7 .1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext。 java:288)[jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)[jboss-as- ee-7.1.0.Final.jar:7.1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)[jboss-invocation-1.1.1.Final.jar:1.1.1 .Final] at org.jboss.invocation.ChainedInterceptor.processInvoc ation(ChainedInterceptor.java:61)[jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as.ee.component.ViewService $ View.invoke(ViewService.java:165) )[jboss-as-ee-7.1.0.Final.jar:7.1.0.Final] at org.jboss.as.ee.component.ViewDescription $ 1.processInvocation(ViewDescription.java:173)[jboss-as- ee-7.1.0.Final.jar:7.1.0.Final] at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)[jboss-invocation-1.1.1.Final.jar:1.1.1 .Final] at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)[jboss-invocation-1.1.1.Final.jar:1.1.1.Final] at org.jboss.as.ee。 component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72)[jboss-as-ee-7.1.0.Final.jar:7.1.0.Final]

私たちが関連付けられて起動エラーをクリアしたので、証明書のセットアップが正しく行われている、私はかなり確信している

<ejb> 
     <ejb-name>ActivityWS</ejb-name> 
     <webservice-endpoint> 
      <port-component-name>ActivityWS</port-component-name> 
      <login-config> 
       <auth-method>BASIC</auth-method> 
      </login-config> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </webservice-endpoint> 
    </ejb> 

各Webサービスは、基本的には、太陽のejb-jar.xmlで同じように保護されていますキーストアが不足していて、キーストアのパスワードが正しくありません。また、最近追加されたRESTfulサービスはうまく動作します(ユーザー名/パスワードのダイアログボックスが表示され、SSLを実行します)。クライアントとサーバーは、もともとGlassfishに配備されていましたが、サービスの小さなコンシューマーを作成し、JBoss 7.1に配備してGlassfishのバグを排除しました。

これは私たちがSOで見つけることができる最も近い答えであり、OPが与えた答えはあいまいであったため、解決策はまだありません。 Java Glassfish - How to consume SSL web service?

UPDATE:

私が通過したとジムによって投稿さガイドを踏襲し、(http://www.ryandelaplante.com/2007/06/ssl-and-http-basic-authentication-with.html)と私のセットアップビットを微調整。 sun-ejb-jarにセキュリティロールを追加し、Webサービスに付与されたロールのアノテーションを追加しました(以前は、sun-application.xmlと別のejb-jar.xmlでロールが処理されていました)。私たちのサービスはEJBエンドポイントなので、ガイドの関連情報を調べましたが、同じエラーが表示されます。

答えて

0

どこに証明書を追加しましたか? glassfish内のdomain1/configディレクトリのkeystore.jks?あなたのSSL httpリスナーが新しい証明書のエイリアスを指していましたか? sslポート(デフォルトで8181)でglassfishに接続しましたか?

+0

はい、certがデフォルトのglassfishキーストアに挿入されました。オリジナルを削除して生成し、完全修飾名で新しいものを作成しました。クライアント側では、新しいキーストアを作成し、その証明書をインポートしました。クライアントがJava SEアプリケーションの場合、同じエラーメッセージで$ JAVA_HOME/jre/lib/securityにあるキーストアにcertをインポートしました。 – MikeG

+0

新しい証明書は古い証明書と同じエイリアスを使用していますか?私はあなたが言っていることだと思います。 – Jim

+0

また、あなたの証明書について、あなたはそれを生成しましたか、またはあなたは委託証拠、弁護士、または預託金のようなものからそれを得ましたか? – Jim

関連する問題