WCF の設定の泥沼を処理しようとすると、次の問題が発生します...
NetTcp バインディングを使用して WCF クライアント サーバー サービスを作成しました。セキュリティ設定に変更を加えていないため、1 台のマシンで実行すると非常にうまく機能します。しかし、別のマシンからクライアントを実行すると、送信されたセキュリティ資格情報がサーバーに不適切であると報告されました。
NetTCPはデフォルトで「保護」されており、クライアントが間違ったセキュリティの詳細、つまり、Windows のユーザー名とパスワード (または何らかの形式のドメイン認証) をサーバー上で実行していないため、サーバーに渡していたことがわかります。好まなかったであろう同じドメイン。
しかし、私が理解していないのは次のとおりです。
バインディングでセキュリティを指定していません。標準設定では、Windows ユーザー名またはパスワードが送信されることを想定していますか?
サーバーに証明書がインストールされていません-NetTCPバインディングには資格情報を保護するために何らかの形式の公開秘密鍵が必要であることを理解しています-それでも、クライアントとサーバーの両方が同じマシン上にある場合、これは機能するように見えました-データはどのように取得されましたか暗号化?それとも、同じマシン上にあり、暗号化が不要であることを WCF が認識していたので、それを望んでいますか?
クライアントとサーバーのセキュリティモードを「なし」に設定する必要がありましたが、うまく接続されています。しかし、証明書なしでデータを暗号化する方法はありますか?
最後に...トランスポートとメッセージのセキュリティの違いは何ですか?
私の理解を確認するために (シナリオを許してください!) メッセージのセキュリティは、A さんから B さんに手紙を送り、手書きをエンコードして、誰かがそれを傍受した場合に読めないようにするようなものですか? 輸送セキュリティとは、手紙を武装輸送で送ることに決めた場合に、途中でだれも手に入れることができないようにすることですか?
証明書なしで WCF で任意の形式の暗号化を行うことは可能ですか? 私のプロジェクトはプライベート プロジェクトであり、証明書を購入したくありません。とにかく、データはそれほど機密ではないので、それは私自身の知識のためです。