問題タブ [usernametoken]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - WS-Security Web サービスを呼び出す WCF エラー: X509SecurityToken のトークン認証子が見つかりません
WCF クライアントを使用して、https 経由で WS-Security が有効になっている外部 Java Web サービスに接続しようとしています。サービスは UserNameToken 認証を使用します。
クライアントがサービスを呼び出すと、次の例外が発生します:
「System.IdentityModel.Tokens.X509SecurityToken」トークン タイプのトークン認証子が見つかりません。そのタイプのトークンは、現在のセキュリティ設定に従って受け入れることができません。
この構成でカスタム バインディングを使用し
ます。
バインディング:
このリンクhttp://webservices20.blogspot.co.uk/2010/10/wcf-cannot-find-token-authenticator.htmlを読み、allowSerializedSigningTokenOnReply 値を構成しましたが、失敗しました。
これは、WCF によって生成されたメッセージです。
そして、これは応答です:
WSE 3.0 で Web サービスを試してみましたが、動作しますが、Windows Server 2008 であり、インストールに失敗したため、パッケージをサーバーにインストールできません。
wcf - WCF SOAP1.1およびWS-Security1.0、クライアント証明書トランスポート認証、メッセージ本文署名のサービス証明書、UsernameToken、Password Digest、Nonce
概要: 私は.NET 4.0 WCFクライアントで作業しており、SOAP1.1とWS-Security1.0を使用してWebサービス(DataPower、もう一方の端ではJavaサービス)を利用しています。WCFクライアントは、トランスポート層での相互認証用のクライアント証明書を実装する必要があります。メッセージ本文は、別のサービス/署名証明書を使用して署名する必要があります。また、SOAPヘッダーには、パスワードダイジェストを含むユーザー名トークンが含まれ、NonceタグとCreatedタグが含まれている必要があります。
BasicHTTPBindingでWSE3.0を使用して、このWebサービスを利用できます。しかし、私はこれまで、WSHttpBindingまたはCustomBindingのいずれかを使用してWCFで同じものを実装することに成功していません。私はすべてのセキュリティバインディング要素を試しましたが、今のところ運がありません。
ここからusernametokenライブラリ(http://blogs.msdn.com/b/aszego/archive/2010/06/24/usernametoken-profile-vs-wcf.aspx)も使用しているので、パスワードダイジェスト/nonceを追加できます。 /SOAPヘッダーのUsernameTokenに作成されます。
私は現在SecurityBindingElement.CreateMutualCertificateBindingElementを使用しています。AsymmetricSecurityBindingElement、TransportSecurityBindingElementなどの他のいくつかも試しました(以下のコードでコメント化されています)
CERTS: クライアント証明書とサービス証明書の両方をMMCを使用して証明書ストアにロードしています(私はWindows 7を使用しています)。クライアント証明書とサービス証明書の両方に秘密鍵があります。両方のPFXファイルをLocalMachine/Personal、LocalMachine / Root、およびLocalMachine/TrustedPeopleにロードしました。また、FindPrivateKey / ICACLSを実行して、「IISアプリプール/DefaultAppPool」アカウントにアクセス許可を付与しました。自分のマシンからWSE3.0コードを実行でき、証明書の問題なしで動作するため、これは問題にはなりません。
コマンドの実行:
WCFの問題: 現在、DataPowerゲートウェイから「権限'xxcom'でSSL/TLSのセキュリティで保護されたチャネルを確立できませんでした」というメッセージが表示されます。これは、ゲートウェイがサービス証明書を取得し、送信しているクライアント証明書を使用する代わりに、それをクライアント認証に使用していることが原因である可能性があります。これは、エンドポイントのDNS IDを指定しないと、ゲートウェイがDNSIDが「{サービスのサブジェクト名/署名証明書}」であることを期待しているというメッセージが返されるためです。
上記のエラーを発生させているWCFによって生成されたSOAPリクエストは次のとおりです。WCF SOAP要求は、WSESOAP要求と非常によく似ています。上記のエラーは、SSL/トランスポート層での証明書の問題が原因で発生している可能性があります。
WCF SOAP要求:
WSE 3.0 SOAPリクエスト(これは機能します):
これがすべての設定です。私が間違っていることを教えてください!
WCF web.config:コードですべての構成を行っているため、web.configからすべてを削除しました。
コード内のWCF構成:
メッセージ本文に署名するだけでよいので、ServiceContractとOperationContractsにProtectionLevel.Signを追加しました。私はまだそれを確認するためにここまで得ていません。
以下をweb.configに追加して、piiデータを含むsoap全体のログを記録できるようにしました。
===============
WSE 3.0(動作する構成とコード): web.config:
...およびWSE3コード:
==========
では、上記のWSE 3.0コードをWCFに変換するにはどうすればよいですか?
soap - UsernameToken 認証および暗号化なしの ws-security (Apache Rampart/C) のセットアップ エラー
UsernameToken の Apache Rampart/C 1.3.0 で AXIS2/C Web サービス (axis2/c 1.6.0) をセットアップする際に問題があります (Java の対応するもの、別名「axis2」と「rampart」と混同しないでください)。認証。最初に SoapUI でこれをテストしようとしているので、暗号化は必要ありません。これが機能するようになったら、暗号化を追加します (セキュリティ ポリシーなしで Rampart/c をセットアップすることもできませんでした。構成エラーが発生するだけです)。Web サービスは、Rampart がなくても問題なく動作します。しかし、Rampart をセキュリティ用に構成しようとすると、応答に次のエラーが表示されます。
Axis2 ログに移動すると、次のエラーが見つかります。
セキュリティ ヘッダーがまったく見つからなかったかのように、これは非常に奇妙です。SOAP リクエストに何か問題があるのではないかと疑っていますが、それが何であるかはわかりません。あるいは、珍しい Rampart/c のバグを見つけたのでしょうか?
ユーザー名とパスワードには、Rampart サンプルで提供されているコールバック .so を使用し、ユーザー名「Alice」とパスワード「abcd!1234」を使用しました。
関連ファイルの完全なリストは次のとおりです (IP アドレスは編集されています)。
サービス.xml:
services.xml (代替; 同じエラーが発生します):
SOAPUI リクエスト:
応答:
axis2.log (関連部分):
wss4j - wss4j-1.6.10 の WSDoAllSender クラスの置き換え?
wssj4-1.5.12 でうまく動作する WSDD があります。次のようになります。
しかし、wss4j-1.6.10 に切り替えた後、ClassNotFoundException が発生します。
WSDoAllSender が wss4j-1.6.4 API に含まれなくなったようです。しかし、私はその代わりを見つけることができないようです。wss4j は SOAP 接続用の UsernameToken を引き続きサポートしていますか? WSDoAllSender の代替クラスは何ですか?
ありがとうございました。
web-services - Web サービスの開発 - パスワード ダイジェスト認証を使用した UsernameToken ヘッダー
クライアント証明書とメッセージ認証を使用して、ABC サーバーでサービスをホストしようとしています。
クライアントは、サービスが理解する必要がある WSSE UsernameToken Security ヘッダーを提供し、適切な認証を行う必要があります。
2 つのオプションがあります -<br> 1. WCF サービス - ただし、そのままではダイジェストされたパスワードをサポートしていないため、カスタム バインドまたはその他の微調整を使用する方法を見つける必要がある場合があります。
2. WSE 3.0 を使用した Web サービス - サービス WSE 3.0 を開発し、それを利用して次のセキュリティ ヘッダーを処理する方法を見つける必要があります。
WSE 3.0 の前提条件は何ですか? また、そのために必要なツールとライブラリは何ですか?
どんな助けでも大歓迎です。
リクエストには、次の SOAP ヘッダーが必要です。
ありがとうございました、
axis2 - UsernameToken の下の ws-security では、有効な主張ではありませんか?
Apache Axis2 を使用して Web サービスを実装し、WS-Security (Apache Rampart モジュールを使用) と統合しています。
データベースに対してユーザー名のみを検証するため、コンシューマーに Usernametoken でパスワードを送信することを強制しないWs-Security ポリシーを定義しようとしてい ます。実際の認証はキー交換 (非対称バインディング) メカニズムによって実行されます。
以下のアサーションを試したところ、Axis2 は単純に NoPassword を無視しました。
Ws-Securityでは、NoPasswordは有効なアサーションではありませんか?
フレームワーク:
アパッチ Axis2 v1.6.2
アパッチ ランパート v1.6.2
timestamp - WSSecurity - タイムスタンプまたは wsu:created なしで UsernameToken ヘッダーを受け入れる
私は Webservice Security に比較的慣れていないので、セキュリティ ヘッダーに問題があります。
セキュリティヘッダーが次のように受け入れられるようにします。
タイムスタンプまたは wsu:Created なし。
しかし、私はこれを達成することができませんでした。
このヘッダーでリクエストを送信すると、タイムスタンプが欠落していることを知らせる WSSecurityException が常に表示されます。「ヘッダーにタイムスタンプを含める」オプションを false に設定すると、wsu:Created 要素が UsernameToken セクションで予期されるため、FailedAuthentication が返されます。
UsernameToken-section が Created 部分を予期しないようにするには、どのような構成が必要ですか?
これは可能ですか?
ありがとう
java - SOAP ヘッダー認証を wsdl2java 生成コードに追加する
wsdl から Java Web サービス クライアントを作成中です。Eclipses の Dynamic Web Project と新しい Web Services Client を使用して、wsdl2java と Apache Axis 1.4 でコードを生成しました。このコードをサービスと連携させるには、SOAP 認証をこのコードに追加する必要があります。生成されたコードでそれを行う場所が見つかりませんでした。大量の調査の後、これを見つけました。これは、これまでコードのバックボーンとして使用してきました。
wsdl2java 生成クラスへの ws-security の追加
「メッセージのセキュリティの処理中にエラーが発生しました」などのメッセージが表示される前に。今、私は得ています
「例外: 「MustUnderstand」ヘッダーを理解できませんでした:{ http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd }セキュリティ メッセージ:ヌル"
この例外を乗り越えるために、私は多くのことを試みました。これが今たどり着いたコードです。
このコードは、Binding_ServiceStub クラス (その createCall メソッド内) にあります。
この wsdl を使用して C# と VB の両方でクライアントを作成しましたが、生成されたプロキシ クラスの拡張である ClientCredentials 変数を変更するだけで簡単に作成できます。私はここで似たようなものを望んでいました。
これも wsdl コードのセキュリティ ポリシーです。
ここで他に何ができるか知っている人はいますか?なぜこの例外が発生するのですか? プレフィックスと setProcesses および setMustUnderstand 値のさまざまな組み合わせをすべて試しましたが、すべて無駄でした (この例外の調査に基づいています)。
また、Soap ヘッダー認証を wsdl2java コードに追加する方法を知っている人がいれば、私もそれを採用します。これが機能する必要があるだけで、このようなものはもう少し簡単であるか、少なくともより多くの例があると思うでしょう。
更新 - SOAPUI を使用して渡された同じヘッダーが正常に機能することを確認しました。フレームワークで何かする必要がありますか?SOAP メッセージを処理するカスタム ハンドラを作成しましたが、役に立ちませんでした。Axis 1.4 と JAX-RPC が問題ですか? (時代遅れなのはわかっていますが、それでも...)
web-services - soapUI を使用した WS セキュリティのテスト - メッセージ ペイロードでのセキュリティ ヘッダーの使用
Web サービスと WS セキュリティは初めてです。CFX インターセプターを使用したサンプル Web サービスがあります。以下は私が持っている設定ファイルです。
Cfx サーブレット.xml:
soapUI ツールを使用して (メッセージ ペイロードではなく) HTTP ヘッダーにセキュリティ属性を生成すると、機能しました。ただし、メッセージ ペイロードで wsse:security 属性を渡す必要があります (以下のようなもの)。
石鹸リクエスト:
障害メッセージが返されます:
石鹸応答:
ログ ファイルには次の例外があります。
ヘッダーに何か問題があるかどうか教えてもらえますか? どんな助けでも大歓迎です。
ありがとう