次の方法で共有


Authorization.ProtectionRealm プロパティ

Message プロパティで認証できる URI (Uniform Resource Identifier) のプリフィックスを取得または設定します。

Public Property ProtectionRealm As String ()
[C#]
public string[] ProtectionRealm {get; set;}
[C++]
public: __property String* get_ProtectionRealm();public: __property void set_ProtectionRealm(String* __gc[]);
[JScript]
public function get ProtectionRealm() : String[];
public function set ProtectionRealm(String[]);

プロパティ値

URI プリフィックスを格納する文字列の配列。

解説

ProtectionRealm プロパティは、認証のために Message プロパティで使用できる URI プリフィックスのリストを格納します。 WebRequest とその派生クラスは、URI をこのリストと比較して、 Authorization が特定の URI で有効かどうかを判断します。

使用例

[Visual Basic, C#, C++] Message プロパティで認証できる URI (Uniform Resource Identifier) のプリフィックスを取得または設定する例を次に示します。

 
Function Authenticate(ByVal challenge As String, ByVal request As WebRequest, ByVal credentials As ICredentials) As Authorization Implements IAuthenticationModule.Authenticate
    Try
        Dim message As String
        ' Check if Challenge string was raised by a site which requires 'CloneBasic' authentication.
        If challenge Is Nothing Or Not challenge.StartsWith("CloneBasic") Then
            Return Nothing
        End If
        Dim myCredentials As NetworkCredential
        If TypeOf credentials Is CredentialCache Then
            myCredentials = credentials.GetCredential(request.RequestUri, "CloneBasic")
            If myCredentials Is Nothing Then
                Return Nothing
            End If
        Else
            myCredentials = CType(credentials, NetworkCredential)
        End If
        ' Message encryption scheme : 
        ' a)Concatenate username and password seperated by space
        ' b)Apply ASCII encoding to obtain a stream of bytes
        ' c)Apply Base64 Encoding to this array of bytes to obtain our encoded authorization message
        message = myCredentials.UserName + " " + myCredentials.Password
        ' Apply AsciiEncoding to 'message' string to obtain it as an array of bytes.
        Dim ascii As Encoding = Encoding.ASCII
        Dim byteArray(ascii.GetByteCount(message)) As Byte
        byteArray = ascii.GetBytes(message)

        ' Performing Base64 transformation.
        message = Convert.ToBase64String(byteArray)
        Dim myAuthorization As New Authorization("CloneBasic " + message, True)
        Dim protectionRealm() As String = {request.RequestUri.AbsolutePath}
        myAuthorization.ProtectionRealm = protectionRealm

        Return myAuthorization
    Catch e As Exception
        Console.WriteLine("The following exception was raised in Authenticate method:{0}", e.Message)
        Return Nothing
    End Try
End Function 'Authenticate


[C#] 
public Authorization Authenticate( string challenge,WebRequest request,ICredentials credentials)
{
    try
    {
        string message;
        // Check if Challenge string was raised by a site which requires 'CloneBasic' authentication.
        if ((challenge == null) || (!challenge.StartsWith("CloneBasic")))
            return null; 
        NetworkCredential myCredentials;
        if (credentials is CredentialCache)
        {
            myCredentials = credentials.GetCredential(request.RequestUri,"CloneBasic");
            if (myCredentials == null)
                return null;
        }
        else    
            myCredentials = (NetworkCredential)credentials;  
        // Message encryption scheme : 
        //   a)Concatenate username and password seperated by space;
        //   b)Apply ASCII encoding to obtain a stream of bytes;
        //   c)Apply Base64 Encoding to this array of bytes to obtain our encoded authorization message.
         
        message = myCredentials.UserName + " " + myCredentials.Password;
        // Apply AsciiEncoding to 'message' string to obtain it as an array of bytes.
        Encoding ascii = Encoding.ASCII;
        byte[] byteArray = new byte[ascii.GetByteCount(message)];
        byteArray = ascii.GetBytes(message);

        // Performing Base64 transformation.
        message = Convert.ToBase64String(byteArray);
        Authorization myAuthorization = new Authorization("CloneBasic " + message,true);
        string[] protectionRealm = new string[]{request.RequestUri.AbsolutePath};
        myAuthorization.ProtectionRealm = protectionRealm;

        return myAuthorization;
    }
    catch(Exception e)
    {
        Console.WriteLine("The following exception was raised in Authenticate method:{0}",e.Message);
        return null;
    }
  }


[C++] 
Authorization * Authenticate(String* challenge, WebRequest * request, ICredentials* credentials)
{
   try
   {
      String* message;
      // Check if Challenge String* was raised by a site which requires 'CloneBasic' authentication.
      if ((challenge == 0) || (!challenge->StartsWith(S"CloneBasic")))
         return 0;
      NetworkCredential* myCredentials;
      if (dynamic_cast<CredentialCache*>(credentials) == 0)
      {
         myCredentials = credentials->GetCredential(request->RequestUri, S"CloneBasic");
         if (myCredentials == 0)
            return 0;
      }
      else
         myCredentials = dynamic_cast<NetworkCredential*>(credentials);
      // Message encryption scheme :
      //   a)Concatenate username and password seperated by space;
      //   b)Apply ASCII encoding to obtain a stream of bytes;
      //   c)Apply Base64 Encoding to this array of bytes to obtain our encoded authorization message.

      message = String::Concat(myCredentials->UserName, S" ", myCredentials->Password);
      // Apply AsciiEncoding to 'message' String* to obtain it as an array of bytes.
      Encoding*  ascii = Encoding::ASCII;
      Byte byteArray[] = new Byte[ascii->GetByteCount(message)];
      byteArray = ascii->GetBytes(message);

      // Performing Base64 transformation.
      message = Convert::ToBase64String(byteArray);
      Authorization* myAuthorization =
         new Authorization(String::Concat(S"CloneBasic ", message, __box(true)));
      String* protectionRealm[] = new String*[1];
      protectionRealm[0] =request->RequestUri->AbsolutePath;
      myAuthorization->ProtectionRealm = protectionRealm;

      return myAuthorization;
   }
   catch (Exception* e)
   {
      Console::WriteLine(S"The following exception was raised in Authenticate method: {0}", e->Message);
      return 0;
   }
};

[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

参照

Authorization クラス | Authorization メンバ | System.Net 名前空間