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