2

netTcpBinding バインディングを使用したセルフホステッド WCF サービスがあります。サーバーとクライアントの両方がすべて同じドメインにあるため、Windows 認証を使用したいのですが、クライアントにもサーバーの資格情報を確認してもらいたい (内部の中間者/DNS 改ざんを避けるため)攻撃)。これを行う方法はSPNを使用することだと読みましたが、それを機能させることができないようです。spn がクライアントに設定されていても動作します (つまり、サーバーとクライアントは一致しませんが、クライアントはとにかく接続します)。明らかに、ある種の構成エラーがありますが、どこにあるのかわかりません。サーバーのサービス構成は次のとおりです。

<system.serviceModel>
<services>
  <service name="AaaAuthService.AaaAuthService" behaviorConfiguration="AaaAuthServiceBehavior">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IAaaAuth" contract="AAA.IAaaAuthService">
      <!--
      <identity>            
        <servicePrincipalName value="AaaShlkjhlkjjjjhhhhjjpn/justink-pc.sgasdf1.allamericanasphaltasdf.casdfom"/>
      </identity>
      -->
    </endpoint>
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:9000/IAaaAuthService"/>
      </baseAddresses>
    </host>
    </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="AaaAuthServiceBehavior">
      <serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentInstances="2147483647" maxConcurrentSessions="2147483647"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <netTcpBinding>
    <binding name="NetTcpBinding_IAaaAuth" closeTimeout="00:00:20" openTimeout="00:00:10" receiveTimeout="00:00:10" sendTimeout="00:00:10" hostNameComparisonMode="StrongWildcard" maxConnections="2147483647">
      <security mode="Transport">
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
        <message clientCredentialType="Windows"/>
      </security>
    </binding>
  </netTcpBinding>
</bindings>

Windows資格情報が渡されるようです-OperationContext.Current.ServerSecurityContext.WindowsIdentityにアカウント情報が入力されます。

ここで何が欠けていますか?

4

0 に答える 0