次の方法で共有


IAuthenticationModule.Authenticate メソッド

サーバーからの認証チャレンジに応答して、 Authorization クラスのインスタンスを返します。

Function Authenticate( _
   ByVal challenge As String, _   ByVal request As WebRequest, _   ByVal credentials As ICredentials _) As Authorization
[C#]
Authorization Authenticate(
   stringchallenge,WebRequestrequest,ICredentialscredentials);
[C++]
Authorization* Authenticate(
   String* challenge,WebRequest* request,ICredentials* credentials);
[JScript]
function Authenticate(
   challenge : String,request : WebRequest,credentials : ICredentials) : Authorization;

パラメータ

  • challenge
    サーバーが送信する認証チャレンジ。
  • request
    チャレンジと関連付けられる WebRequest インスタンス。
  • credentials
    チャレンジと関連付けられる資格情報。

戻り値

要求の認証メッセージを格納する Authorization インスタンス。またはチャレンジを処理できない場合は null 参照 (Visual Basic では Nothing) 。

解説

Authenticate メソッドは、サーバーとの認証処理を実行し、 Authorization インスタンスを AuthenticationManager に返します。

実装時の注意: AuthenticationManager は、登録された認証モジュールで Authenticate メソッドを呼び出し、チャレンジを処理するモジュールを決定します。認証モジュールがチャレンジを処理できない場合、 Authenticate メソッドは null 参照 (Visual Basic では Nothing) を返す必要があります。認証処理の実行中に認証モジュールにエラーが発生した場合、 Authenticate は例外をスローする必要があります。

使用例

[Visual Basic, C#, C++] Authenticate メソッドを使用する方法を次の例に示します。詳細については、 AuthenticationManager クラスのトピックを参照してください。

 
' Authenticate is the core method for this custom authentication.
' When an Internet resource requests authentication, the WebRequest.GetResponse 
' method calls the AuthenticationManager.Authenticate method. This method, in 
' turn, calls the Authenticate method on each of the registered authentication
' modules, in the order in which they were registered. When the authentication is 
' complete an Authorization object is returned to the WebRequest.
Public Function Authenticate(ByVal challenge As String, ByVal request As WebRequest, ByVal credentials As ICredentials) As Authorization _
    Implements IAuthenticationModule.Authenticate


  Dim ASCII As Encoding = Encoding.ASCII

  ' Get the username and password from the credentials
  Dim MyCreds As NetworkCredential = credentials.GetCredential(request.RequestUri, "Basic")

  If PreAuthenticate(request, credentials) Is Nothing Then
    Console.WriteLine(ControlChars.Lf + " Pre-authentication is not allowed.")
  Else
    Console.WriteLine(ControlChars.Lf + " Pre-authentication is allowed.")
  End If
  ' Verify that the challenge satisfies the authorization requirements.
  Dim challengeOk As Boolean = checkChallenge(challenge, MyCreds.Domain)

  If Not challengeOk Then
    Return Nothing
  End If

  ' Create the encrypted string according to the Basic authentication format as
  ' follows:
  ' a)Concatenate the username and password separated by colon;
  ' b)Apply ASCII encoding to obtain a stream of bytes;
  ' c)Apply Base64 encoding to this array of bytes to obtain the encoded 
  ' authorization.
  Dim BasicEncrypt As String = MyCreds.UserName + ":" + MyCreds.Password

  Dim BasicToken As String = "Basic " + Convert.ToBase64String(ASCII.GetBytes(BasicEncrypt))

  ' Create an Authorization object using the encoded authorization above.
  Dim resourceAuthorization As New Authorization(BasicToken)

  ' Get the Message property, which contains the authorization string that the 
  ' client returns to the server when accessing protected resources.
  Console.WriteLine(ControlChars.Lf + " Authorization Message:{0}", resourceAuthorization.Message)

  ' Get the Complete property, which is set to true when the authentication process 
  ' between the client and the server is finished.
  Console.WriteLine(ControlChars.Lf + " Authorization Complete:{0}", resourceAuthorization.Complete)

  Console.WriteLine(ControlChars.Lf + " Authorization ConnectionGroupId:{0}", resourceAuthorization.ConnectionGroupId)


  Return resourceAuthorization
End Function 'Authenticate
    End Class 'CustomBasic 

[C#] 
// Authenticate is the core method for this custom authentication.
// When an Internet resource requests authentication, the WebRequest.GetResponse 
// method calls the AuthenticationManager.Authenticate method. This method, in 
// turn, calls the Authenticate method on each of the registered authentication
// modules, in the order in which they were registered. When the authentication is 
// complete an Authorization object is returned to the WebRequest.
public Authorization Authenticate(String challenge, WebRequest request, ICredentials credentials) 
{
  Encoding ASCII = Encoding.ASCII;        

  // Get the username and password from the credentials
  NetworkCredential MyCreds = credentials.GetCredential(request.RequestUri, "Basic");        

  if (PreAuthenticate(request, credentials) == null)
    Console.WriteLine("\n Pre-authentication is not allowed.");
  else
    Console.WriteLine("\n Pre-authentication is allowed.");

  // Verify that the challenge satisfies the authorization requirements.
  bool challengeOk = checkChallenge(challenge, MyCreds.Domain);

  if (!challengeOk)
    return null;

  // Create the encrypted string according to the Basic authentication format as
  // follows:
  // a)Concatenate the username and password separated by colon;
  // b)Apply ASCII encoding to obtain a stream of bytes;
  // c)Apply Base64 encoding to this array of bytes to obtain the encoded 
  // authorization.
  string BasicEncrypt = MyCreds.UserName + ":" + MyCreds.Password;

  string BasicToken = "Basic " + Convert.ToBase64String(ASCII.GetBytes(BasicEncrypt));

  // Create an Authorization object using the encoded authorization above.
  Authorization resourceAuthorization = new Authorization(BasicToken);

  // Get the Message property, which contains the authorization string that the 
  // client returns to the server when accessing protected resources.
  Console.WriteLine("\n Authorization Message:{0}",resourceAuthorization.Message);

  // Get the Complete property, which is set to true when the authentication process 
  // between the client and the server is finished.
  Console.WriteLine("\n Authorization Complete:{0}",resourceAuthorization.Complete);

  Console.WriteLine("\n Authorization ConnectionGroupId:{0}",resourceAuthorization.ConnectionGroupId);


  return resourceAuthorization;
}

[C++] 
// Authenticate is the core method for this custom authentication.
// When an internet resource requests authentication, the WebRequest::GetResponse
// method calls the AuthenticationManager::Authenticate method. This method, in
// turn, calls the Authenticate method on each of the registered authentication
// modules, in the order they were registered. When the authentication is
// complete an Authorization object is returned to the WebRequest, as
// shown by this routine's retun type.
Authorization * Authenticate(String* challenge, WebRequest* request, ICredentials* credentials) {
   Encoding*  ASCII = Encoding::ASCII;

   // Get the username and password from the credentials
   NetworkCredential * MyCreds = credentials->GetCredential(request->RequestUri, S"Basic");

   if (PreAuthenticate(request, credentials) == 0)
      Console::WriteLine(S"\n Pre-authentication is not allowed.");
   else
      Console::WriteLine(S"\n Pre-authentication is allowed.");

   // Verify that the challenge satisfies the authorization requirements.
   bool challengeOk = checkChallenge(challenge, MyCreds->Domain);

   if (!challengeOk)
      return 0;

   // Create the encrypted string according to the Basic authentication format as
   // follows:
   // a)Concatenate username and password separated by colon;
   // b)Apply ASCII encoding to obtain a stream of bytes;
   // c)Apply Base64 Encoding to this array of bytes to obtain the encoded
   // authorization.
   String* BasicEncrypt = String::Concat(MyCreds->UserName, S":", MyCreds->Password);

   String* BasicToken = 
      String::Concat(S"Basic ", Convert::ToBase64String(ASCII->GetBytes(BasicEncrypt)));

   // Create an Authorization object using the above encoded authorization.
   Authorization* resourceAuthorization = new Authorization(BasicToken);

   // Get the Message property which contains the authorization string that the
   // client returns to the server when accessing protected resources
   Console::WriteLine(S"\n Authorization Message: {0}", resourceAuthorization->Message);

   // Get the Complete property which is set to true when the authentication process
   // between the client and the server is finished.
   Console::WriteLine(S"\n Authorization Complete: {0}", 
      __box(resourceAuthorization->Complete));

   Console::WriteLine(S"\n Authorization ConnectionGroupId: {0}", 
      resourceAuthorization->ConnectionGroupId);
   return resourceAuthorization;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

IAuthenticationModule インターフェイス | IAuthenticationModule メンバ | System.Net 名前空間