英語で読む

次の方法で共有


HttpWebRequest.Credentials プロパティ

定義

要求の認証情報を取得または設定します。

C#
public override System.Net.ICredentials Credentials { get; set; }
C#
public override System.Net.ICredentials? Credentials { get; set; }

プロパティ値

要求に関連付けられている認証資格情報を含む ICredentials。 既定値は nullです。

次のコード例では、要求の資格情報を設定します。

C#
using System;
using System.Net;
using System.Text;
using System.IO;

    public class Test
    {
        // Specify the URL to receive the request.
        public static void Main (string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);

            // Set some reasonable limits on resources used by this request
            request.MaximumAutomaticRedirections = 4;
            request.MaximumResponseHeadersLength = 4;
            // Set credentials to use for this request.
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Console.WriteLine("Content length is {0}", response.ContentLength);
            Console.WriteLine("Content type is {0}", response.ContentType);

            // Get the stream associated with the response.
            Stream receiveStream = response.GetResponseStream();

            // Pipes the stream to a higher level stream reader with the required encoding format.
            StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

            Console.WriteLine("Response stream received.");
            Console.WriteLine(readStream.ReadToEnd());
            response.Close();
            readStream.Close();
        }
    }

/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/

注釈

注意事項

WebRequestHttpWebRequestServicePointWebClient は廃止されており、新しい開発には使用しないでください。 代わりに HttpClient を使用してください。

Credentials プロパティには、要求の作成者を識別するための認証情報が含まれています。 Credentials プロパティは、NetworkCredential(NetworkCredential オブジェクトに含まれるユーザー、パスワード、およびドメイン情報を使用して要求を認証する場合)、または CredentialCacheにすることができます。この場合、要求の URI (Uniform Resource Identifier) を使用して、要求の認証に使用するユーザー、パスワード、およびドメイン情報を決定できます。

ほとんどのクライアント シナリオでは、現在ログオンしているユーザーの資格情報を含む DefaultCredentials プロパティを使用する必要があります。 これを行うには、このプロパティを設定するのではなく、UseDefaultCredentials プロパティを true に設定します。

HttpWebRequest クラスが ASP.NET アプリケーションなどの中間層アプリケーションで使用されている場合、DefaultCredentials プロパティの資格情報は、ASP ページを実行しているアカウント (サーバー側の資格情報) に属します。 通常、このプロパティは、要求が行われるクライアントの資格情報に設定します。

注意

NTLM 認証スキームを使用して別のユーザーを偽装することはできません。 偽装をサポートするには、Kerberos を特別に構成する必要があります。

HttpWebRequest を 1 つ以上の認証方法に制限するには、CredentialCache クラスを使用し、資格情報を 1 つ以上の認証スキームにバインドします

サポートされている認証スキームには、ダイジェスト、ネゴシエート、Kerberos、NTLM、Basic が含まれます。

セキュリティ上の理由から、リダイレクトを自動的に実行する場合は、リダイレクトに含める資格情報を CredentialCache に格納し、このプロパティに割り当てます。 このプロパティは、CredentialCache以外のものが含まれている場合、リダイレクト時に自動的に null に設定されます。 これらの条件下でこのプロパティ値を自動的に null に設定すると、意図しない宛先に資格情報が送信されなくなります。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0