質問

1台のクライアントコンピューターと5台のサーバーボックスがマシンサブネット上で通信するマシン制御アプリケーションがあります。ドメインコントローラーはありません。 netTcpBinding を使用したい信頼性とトランザクションのサポートを可能にします。

ドメインコントローラーが存在しない場合、このバインディングでユーザー名/パスワード認証を使用できますか?オフィスのLANに接続されない900台のコンピューター(150台のコンピューター)で証明書を管理したくないので、証明書を使用したくないと思います。

役に立ちましたか?

解決

はい、もちろん-ただし、(トランスポートセキュリティではなく)メッセージセキュリティを使用する場合のみ。次のようにバインディング構成を定義します。

  <netTcpBinding>
    <binding name="UserNameSecurity">
      <security mode="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </netTcpBinding>

次に、エンドポイント(サーバーおよびクライアント)でそのバインディング構成を参照します:

 <endpoint address="....."
           binding="netTcpBinding"
           bindingConfiguration="UserNameSecurity"
           contract="IMyService" />

マーク

更新:
ああ、はい、サーバー側では、それを呼び出しているクライアントに対してサービスを認証するために証明書が必要になります。また、メッセージの暗号化と署名にも使用されます。これはサーバー上のみです-クライアントは何もインストールする必要はありません。

構成:

<behaviors>
  <serviceBehavior>
    <behavior name="ServerInternet">
      <serviceCredentials>
        <serviceCertificate
           findValue="MyServiceCertificate"
           storeLocation="LocalMachine"
           storeName="My"
           x509FindType="FindBySubjectName" />
      </serviceCredentials>
    </behavior>
  </serviceBehavior>
</behaviors>
<services>
  <service name="MyServiceInternet"
           behaviorConfiguration="ServerInternet">
     ....
  </service>
</services>

「ローカルマシン」にサーバーの証明書をインストールしてください。サーバー上の「サブジェクト名」の下のフォルダー設定で指定すること。

他のヒント

最初に試すことができるものがあります。 serviceNegotiationCredentialsをtrueに設定します。

<message negotiateServiceCredential="true"/>

これにより、ドメインコントローラーなしでクライアントとサービスの間に安全な会話が作成されます。

ただし、ドメインコントローラーがない場合、クライアントはサービスを信頼しないため、失敗します。

したがって、予想されるサービスのID を設定する必要があります。あなたのサービスのWSDLでそれを見つけることができます。デフォルトでは、IISでホストされている場合、次のようになります。

<client>
    <endpoint>
        <identity>
            <servicePrincipalName value="host/NETWORKSERVICE"></servicePrincipalName>
        </identity>
    </endpoint>
</client>

必要になるとは思いませんが、サービス側で匿名ログオンを許可する必要があるかもしれません:

<serviceBehaviors>
    <behavior>
        <serviceCredentials>
            <windowsAuthentication allowAnonymousLogons="true"/>
        </serviceCredentials>
    </behavior>
</serviceBehaviors>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top