2

私はWCFを初めて使用し、メッセージセキュリティを実行できるかどうかを知りたいと思っていました。メッセージセキュリティでは、サービスにのみx.509証明書を使用し、クライアントセキュリティではWindowsクレデンシャルを実行しますが、これは受け入れられますか?ウェブを検索しようとしましたが、このアプローチについての議論が存在しないか、グーグル検索に間違った言い回しを入れました。助けていただければ幸いです。ありがとうございました。

基本的に、私は私のバインディングにこれを持っているでしょう:

<wsHttpBinding>
    <binding name="msgBinding">
        <security mode="Message">
            <message clientCredentialType="Windows" />
        </security>
    </binding>
</wsHttpBinding>

そして私の行動について:

<behavior name="wsHttpCertificateBehavior">
    ...
    <serviceCredentials>
        <serviceCertificate findValue="MyCert" x509FindType="FindBySubjectName" storeLocation="CurrentUser" storeName="My" />
    </serviceCredentials>
</behavior>
4

2 に答える 2

1

なぜあなたはこれをしようとしているのですか?あなたのセキュリティ要件は何ですか?

サービス証明書を使用してメッセージ転送を保護してから、クライアントの認証と承認にWindowsセキュリティを使用しようとしていますか?

Windowsのセキュリティは、同じドメインにいる場合、または何らかのフェデレーションセキュリティが設定されている場合にのみ機能します。同じドメインにいる場合は、両方にWindowsセキュリティを使用してください。同じドメインにいない場合、サーバーにはWindowsクレデンシャルを検証する方法がないため、クライアントにWindowsクレデンシャルを使用することはできません。サービス側の認証局によって発行されたクライアント証明書を使用するか、カスタム資格情報を使用する必要があります。

ただし、同じドメインにいてもサービス側の証明書が必要な場合は、サービスの構成ファイルでserviceCertificateを指定し、HTTPSを使用してエンドポイントアドレスを定義する必要があります。つまり、スタンドアロンサービスとしてホストしている場合です。IISでホストしている場合は、IISWebサイトのセットアップで証明書を定義します。

この便利なアプリケーション展開シナリオが見つかる場合があります

于 2010-07-13T01:02:53.850 に答える
0

Mogounusを助けてくれてありがとう。私の問題は非常に複雑ですが、要するに、私の要件はサーバー側で証明書を使用することです。さらに調査を行った後、私は今それを理解したと思います。したがって、私が正しく理解していれば、メッセージセキュリティを備えたクライアント/サーバーの両方で証明書を使用する場合、クライアントは秘密鍵でメッセージに署名し、次に公開鍵を添付し、サーバーの公開鍵で暗号化すると、サーバーのみが可能になります復号化して、署名されたメッセージをクライアントのpubキーと一緒に取得し、署名されたデータを検証します。

私の場合、それは機能していました。サービスが署名/暗号化に適切なものを使用していることを確認する必要がありましたが、メッセージがパッケージ化されるまでにすでに暗号化されており、コンテンツが表示されません。

この回答を検索しているときに気付いたもう1つの問題は、すべてのクライアントが同じドメインにあるわけではないため、クライアント側でuser/pwdまたはcertsを使用する必要があることです。

于 2010-07-16T04:26:15.203 に答える