質問: ### 前提・質問内容 WindowsフォームアプリからActiveDirectory認証やWCFサービスの呼び出しを行おうとしています。 ADやWCFサービスへの接続時、接続先のサーバ情報をクライアント側で保管する必要があるかと思いますが、ユーザにサーバ情報を知られたくない場合、どのように保管するのが良いでしょうか。 クライアントPCがADドメインに参加していなる状態、していない状態の両パターンで一般的なケースやこうするべきという方法がありましたらご教示いただきたいです。(どちらか一方だけでもご回答いただければ助かります) ■前提 ・作成したアプリは不特定多数のユーザに配布する前提です。 ・また、ここで指すサーバ情報はホスト名やIPアドレスでユーザ情報は含みません。 ■補足 大前提として知りたいのは、上述のようなアプリを作成しようとした際にどうしたらセキュリティを担保できるかというところになります。 「そもそもサーバ情報(ホスト名やIPアドレス)知られてもXXな理由で問題ない」などあればご意見いただけますと幸いです。 ### 調べたこと 1app.configに記述し、暗号化する 下記サイトを参考に暗号化する方法も検討しましたが、暗号化と複合化するPCが同一である必要があるので難しいのかなと思っています。 【C#プログラミングレッスン】- 暗号化編 configファイルの暗号化 2プログラム内に直接記述する exeを逆コンパイルされる恐れを考えると避けた方が良いのかなと思っています。 ### 補足情報(FW/ツールのバージョンなど) ・開発OS:Windows10 Pro ・開発環境:Visual Studio 2017 Professional ・フレームワーク:.NET Framework 4.6.1
回答: 既に解決されているようですが、自分のために回答を記載しておきます。 個人的な意見であるため、あまり真に受けないようにしてください。 ※WCFについてあまり詳しくないので、誤っていたらごめんなさい。 (組織外に漏れるのは良くないですが)接続先の情報については特に漏れても問題ないと考えています。 それよりも通信している内容が漏れるのは良くない認識です。 WCFにおいて、サーバーコントラクト上で状態を保持できるものがあります。 その中で認証情報を保持させるような場合、通信経路の安全性に配慮する必要があります。 Bindingの種類が多数あり、それぞれに適用できるSecurityがあります。 記憶が確かなら、WSHttpBindingのMessageSecurityでWindows認証を使用することで、環境にとらわれることなく、通信経路をある程度保護することが可能だったと記憶しています。また、クロスドメイン環境でも行けた気がします。 ※MessageSecurityで電文は暗号化された(強度不明)認識です ※TransportSecurityを適用したかったのですが、ドメイン全体で信頼された証明書が必要または、クライアントへの証明書(オレオレ証明書)のインストールが必要(または公的機関による証明書が必要)だったので、あきらめた記憶があります