3

WCF Web サービスと通信する WPF アプリがあります。

私の顧客の 1 人が問題を抱えています。エンドポイント アドレスを IP アドレスに設定するとすべて正常に動作しますが、完全修飾ドメイン名 (FQDN) を使用するとセキュリティ例外がスローされます。

クライアントが Web プロキシとチェックポイント ファイアウォールを介して Web サーバーに 3G 経由で通信する非常に複雑なネットワークがあります。

彼らは、LDAP クエリがポート 389 で行われていることを発見したコンサルタントを採用しました。このポートは閉じられていますが、IP 経由のリクエストは失敗を無視し、ドメイン名によるリクエストが例外をスローする間、続行します。

IPによるリクエストとドメイン名によるリクエストの違いは何ですか? 一方が機能し、もう一方が失敗するのはなぜですか?

スローされるセキュリティ例外は次のとおりです。

HTTP 要求は、クライアント認証方式 'Negotiate' では許可されていません。サーバーから受信した認証ヘッダーは「Negotiate,NTLM」でした。

これが私のクライアント構成設定です:

    <binding 
      name="Windows_Binding" 
      closeTimeout="00:01:00" 
      openTimeout="00:01:00" 
      receiveTimeout="00:10:00" 
      sendTimeout="00:10:00" 
      allowCookies="false" 
      bypassProxyOnLocal="false" 
      hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="2147483647"
      maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      messageEncoding="Text" 
      textEncoding="utf-8" 
      transferMode="Buffered" 
      useDefaultWebProxy="true">
      <readerQuotas 
        maxDepth="2147483647" 
        maxStringContentLength="2147483647" 
        maxArrayLength="2147483647" 
        maxBytesPerRead="2147483647" 
      maxNameTableCharCount="2147483647"/>
      <security 
        mode="Transport">
        <transport 
          clientCredentialType="Windows" 
          proxyCredentialType="None" 
          realm=""/>
        <message 
          clientCredentialType="UserName" 
          algorithmSuite="Default"/>
      </security>
    </binding>
4

2 に答える 2

3

基本的に、Windows 認証に使用できるプロトコルは 2 つあります。最新の Kerberos と従来の NTLMv2 です。Kerberos はより新しいものですが、動作させるにはさらにいくつかのメタデータが必要です。NTLMv2 ははるかに単純です。

推測 (これは単なる推測にすぎません) は、IP アドレスを使用すると、その LDAP クエリでクエリされる追加情報なしで機能する NTLMv2 プロトコルが使用されることです。ドメイン名で Kerberos が使用され、LDAP (Active Directory?) サーバーへの接続がない場合は失敗します。

于 2013-11-12T21:43:59.393 に答える
3

サーバーバインディングを投稿できますか?

これは、Windows セキュリティを使用している場合、WCF セキュリティでかなり一般的なエラーです。いくつかの確認事項

Web サーバーに正しい SPN が作成されているかどうかを確認します。IP アドレスで機能し、FQDN で失敗するため、FQDN の SPN がないことを意味する可能性があり (一般的なこと)、複数のホストがある可能性もありますIIS 上の同じ IP アドレスのヘッダー。

あなたが試すことができる別のこと、それは本当にひどいですが、うまくいきます:

CredentialType="Ntlm" を使用するようにバインド構成を変更し、IIS で統合認証、プロバイダーに移動し、ネゴシエートを削除して NTLM のみを残します

お役に立てれば

于 2013-11-18T18:43:27.740 に答える