This documentation is archived and is not being maintained.

Authorization.ProtectionRealm Property

Gets or sets the prefix for uniform resource identifiers (URIs) that can be authenticated with the Message property.

[Visual Basic]
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[]);

Property Value

An array of strings that contains URI prefixes.

Remarks

The ProtectionRealm property contains a list of URI prefixes that the Message property can be used to authenticate. WebRequest and descendants compare a URI to this list to determine if the Authorization is valid for a particular URI.

Example

[Visual Basic, C#, C++] The following example gets or sets the prefix for uniform resource identifiers (URIs) that can be authenticated with the Message property.

[Visual Basic] 
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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

Authorization Class | Authorization Members | System.Net Namespace

Show: