5

状況:

Web サーバーに .NET asmx Web サービスを展開しています。このサービスは、別のサーバー (該当する場合は SharePoint サーバー) 上のサービスを呼び出します。クライアントの資格情報を使用して、Web サービスから SharePoint サービスへの呼び出しを偽装/委任したいと考えています。

問題:

MY Web サービスを呼び出すと、SharePoint サービスから 401 応答が返され、それが SharePoint を呼び出します。

設定:

  • 私の Web サーバーは IIS 7 を実行しています。アプリケーション プールは「ネットワーク サービス」の下で実行されています。
  • 私の Windows Server 2003 ドメイン コントローラでは、Web サーバーで「委任に対して信頼されている (Kerberos のみ)」が有効になっています。
  • ISS では、アプリで匿名認証が無効、偽装が有効、Windows 認証が有効で、3 つのプロバイダー (ネゴシエート:Kerberos、ネゴシエート、および NTLM) がすべて有効になっています。
  • SharePoint サーバーは、匿名を有効にし、偽装を有効にし、Windows 認証を有効にし、プロバイダー NTLM のみを有効にしてセットアップされています。

SharePoint のログを見ると、Visual Studio でローカルに実行するとユーザー名が渡される (そしてサービスが正しく動作する) ことがわかりますが、Web サーバーで実行するとログ ファイルにユーザー名がなく、401 エラーが発生します。

Kerberos 委任を機能させるには、どのような設定が間違っているのでしょうか?

アイデア?ありがとう!

4

3 に答える 3

1

これを試して:

Negotiateプロバイダーのリストの一番上に移動します。そして、applicationHost.config通常は の下にあるファイルで、次のように、アプリケーションのタグの下にタグをC:\Windows\System32\inetsrv\config追加useKernelMode="true" useAppPoolCredentials="true"します。<windowsAuthentication><location>

<location path="YOUR_APPLICATION_PATH">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
                <windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true">
                    <providers>
                        <clear />
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>
于 2013-08-02T20:08:36.587 に答える