1

IIS 5.1 を使用する Win XP で実行されている ASMX Web サービスに問題があります。IIS は、統合 Windows 認証を使用してセットアップされ、匿名アクセスは無効になっています。(匿名アクセスを有効にすると、すべてがチャームとして機能します。)

ただし、匿名アクセスを無効にして、IIS で統合 Windows 認証のみを使用して実行すると、次の例外が発生します。

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

この例外は、概念をテストするためだけに使用している非常に単純なコンソール アプリケーションから生成されます。

        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; // .None;
        binding.UseDefaultWebProxy = false;

        EndpointIdentity spn = EndpointIdentity.CreateSpnIdentity("WORKGROUP/VirtualXP-91051");
        Uri uri = new Uri("http://169.254.91.91/MyWebSite/MyService.asmx");

        EndpointAddress address = new EndpointAddress(uri, spn);

        MyServiceSoapClient client = new MyServiceSoapClient(binding, address);
        client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;

        String req = "( the request string is blanked out.. ;) )";
        string resp = client.ReqAddressData(req);

        Console.WriteLine(resp);
        Console.ReadLine();

App.config の興味深い部分:

                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>

これはロケット科学ではないので、明らかな何かが欠けているに違いありません。私はここSOでいくつかの検索を行いましたが、多くの同様の質問を見つけることができましたが、私の問題を解決するものは何も見つかりませんでした.

4

0 に答える 0