2

現在、SSL と Windows 認証を使用して保護するために取り組んでいる (IIS を使用しない) Windows サービスの下で自己ホストされる WCF データ サービスがあります。

netsh とサーバー証明書でしばらく遊んだ後、サービスが SSL で保護され、app.config の webHttpBinding で Windows 認証も有効になりました - ただし、特定のユーザーを認証しようとすると、奇妙な動作が見られるようになりました -正常にログインできる人もいれば、資格情報が拒否され、HTTP 400 エラーが表示される人もいます。

いくつかのテストと掘り下げた後、この問題が発生している可能性があるように見えます. IIS の文書化された回避策では、自己ホスト型サービスまたは app.config に使用できる同等の設定がないようです-何かが欠けていない限り? maxReceivedMessageSize フィールドと maxBufferSize フィールドを最大値に設定して、違いが生じるかどうかを確認しましたが、明らかに違いはありませんでした。

バインディング構成:

  <webHttpBinding>
    <binding name="DataServicesBinding"
             maxReceivedMessageSize="2147483647"
             maxBufferSize="2147483647">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </webHttpBinding>

バインディングで clientCredentialType を代わりに Ntlm を使用するように設定することで、この問題を一時的に回避することができましたが、明らかな理由から、可能であれば Kerberos を機能させたいと考えています。

4

2 に答える 2

2

結局のところ、これはサービスが SPN (サービス プリンシパル名) で構成されていないことが原因でした。これは、Windows Server で setspn ツールを使用して行うことができます。(詳細については、この MSDN の記事を参照してください。)

SPN が適用されると、Kerberos 認証が期待どおりに機能し始めました。

于 2013-09-11T08:21:51.047 に答える
0

クライアントの送信内容を確認するには、wireshark を使用します。この入力が正しいことを確認してから戻ってください。

于 2013-08-14T06:41:10.717 に答える