インターネット認証
System.Net クラスは、標準的なインターネット認証方法である基本認証、ダイジェスト認証、ネゴシエート認証、NTLM 認証、Kerberos 認証のほか、ユーザーが作成するカスタムの方法まで、さまざまなクライアント認証機構をサポートします。
認証資格情報は、ICredentials インターフェイスを実装する NetworkCredential クラスと CredentialCache クラスに格納されます。どちらかのクラスが資格情報を照会されると、そのクラスは NetworkCredential クラスのインスタンスを返します。認証プロセスは AuthenticationManager クラスによって管理されます。実際の認証プロセスは、IAuthenticationModule インターフェイスを実装する認証モジュール クラスによって実行されます。カスタム認証モジュールは、使用する前に AuthenticationManager に登録する必要があります。基本認証、ダイジェスト認証、ネゴシエート認証、NTLM 認証、Kerberos 認証のための各モジュールは、既定で登録されます。
NetworkCredential は、URI によって識別される 1 つのインターネット リソースに関連付けられた資格情報のセットを格納し、GetCredential メソッドが呼び出されたときにそれらの資格情報を返します。NetworkCredential クラスは、通常、一定数以下のインターネット リソースにアクセスするアプリケーション、またはすべての場合に同じ資格情報セットを使用するアプリケーションで使用されます。
CredentialCache クラスは、各種の Web リソースのための資格情報のコレクションを格納します。GetCredential メソッドが呼び出されると、CredentialCache は、Web リソースの URI と要求された認証方式によって決まる資格情報セットを返します。認証方式の異なるさまざまなインターネット リソースを使用するアプリケーションの場合は、CredentialCache クラスを使用すると、すべての資格情報をこのクラスに格納して、要求に応じて返すことができます。
インターネット リソースが認証を要求する場合、WebRequest.GetResponse メソッドは資格情報の要求と共に WebRequest を AuthenticationManager に送信します。要求は次の手順に従って認証されます。
AuthenticationManager は、登録されている各認証モジュールの Authenticate メソッドをモジュールの登録順に呼び出します。AuthenticationManager は、null を返さない最初のモジュールを使用して認証プロセスを行います。認証プロセスの細部は、使用される認証モジュールの種類によって異なります。
認証プロセスが完了すると、認証モジュールは Authorization を WebRequest に返します。このインスタンスには、インターネット リソースへのアクセスに必要な情報が格納されています。
認証方式によっては、最初にリソースの要求を出さずにユーザーを認証できます。リソースに対してユーザーを事前認証すると、サーバーとのやり取りが少なくとも 1 往復分だけ省略されるため、処理時間を短縮できます。また、プログラムの起動時に認証を実行して、起動後のユーザーへの応答を速くすることもできます。事前認証を使用できる認証方式は、CanPreAuthenticate プロパティを true に設定します。
参照
概念
基本認証とダイジェスト認証
NTLM 認証と Kerberos 認証