Authorization.ProtectionRealm 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定可以使用 Message 屬性進行驗證的統一資源識別元 (URI) 前置詞。
public:
property cli::array <System::String ^> ^ ProtectionRealm { cli::array <System::String ^> ^ get(); void set(cli::array <System::String ^> ^ value); };
public string[]? ProtectionRealm { get; set; }
public string[] ProtectionRealm { get; set; }
member this.ProtectionRealm : string[] with get, set
Public Property ProtectionRealm As String()
屬性值
String[]
包含 URI 前置詞的字串陣列。
範例
下列程式代碼範例會取得或設定可使用 屬性驗證之 URI 的 Message 前置詞。
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;
}
}
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
備註
屬性 ProtectionRealm 包含可用來驗證屬性的 URI 前置詞 Message 清單。 WebRequest 及其子系會比較 URI 與這份清單,以判斷 是否 Authorization 對特定 URI 有效。