AuthenticationManager.CustomTargetNameDictionary Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá slovník, který obsahuje hlavní názvy služby (SPN), které se používají k identifikaci hostitelů při ověřování protokolem Kerberos pro požadavky prováděné pomocí WebRequest a jeho odvozené třídy.
public:
static property System::Collections::Specialized::StringDictionary ^ CustomTargetNameDictionary { System::Collections::Specialized::StringDictionary ^ get(); };
public static System.Collections.Specialized.StringDictionary CustomTargetNameDictionary { get; }
static member CustomTargetNameDictionary : System.Collections.Specialized.StringDictionary
Public Shared ReadOnly Property CustomTargetNameDictionary As StringDictionary
Hodnota vlastnosti
Zapisovatelný StringDictionary , který obsahuje hodnoty hlavního názvu služby (SPN) pro klíče složené z informací o hostiteli.
Příklady
Následující příklad kódu ukazuje zobrazení obsahu CustomTargetNameDictionary.
public static void RequestResource(Uri resource)
{
// Set policy to send credentials when using HTTPS and basic authentication.
// Create a new HttpWebRequest object for the specified resource.
WebRequest request=(WebRequest) WebRequest.Create(resource);
// Supply client credentials for basic authentication.
request.UseDefaultCredentials = true;
request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
// Determine mutual authentication was used.
Console.WriteLine("Is mutually authenticated? {0}", response.IsMutuallyAuthenticated);
System.Collections.Specialized.StringDictionary spnDictionary = AuthenticationManager.CustomTargetNameDictionary;
foreach (System.Collections.DictionaryEntry e in spnDictionary)
{
Console.WriteLine("Key: {0} - {1}", e.Key as string, e.Value as string);
}
// Read and display the response.
System.IO.Stream streamResponse = response.GetResponseStream();
System.IO.StreamReader streamRead = new System.IO.StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Console.WriteLine(responseString);
// Close the stream objects.
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse.
response.Close();
}
/*
The output from this example will differ based on the requested resource
and whether mutual authentication was successful. For the purpose of illustration,
a sample of the output is shown here:
Is mutually authenticated? True
Key: http://server1.someDomain.contoso.com - HTTP/server1.someDomain.contoso.com
<html>
...
</html>
*/
Poznámky
Hlavní název služby (SPN) je název, kterým klient jednoznačně identifikuje instanci služby nebo aplikace na serveru pro účely vzájemného ověřování. Ve výchozím nastavení se vyžaduje vzájemné ověřování a můžete ho vyžadovat nastavením WebRequest.AuthenticationLevel na MutualAuthRequired vaši žádost.
Pokud vyžaduje vzájemné ověřování, musí hlavní název WebRequest služby (SPN) cíle zadat klient. Pokud hlavní název služby znáte, můžete ho CustomTargetNameDictionary před odesláním požadavku přidat do hlavního názvu služby. Pokud jste do tohoto slovníku nepřidali informace o hlavním názvu služby (SPN), AuthenticationManager použije RequestUri metoda k vytvoření nejpravděpodobnějšího hlavního názvu služby (SPN). Jedná se však o vypočítanou hodnotu a může být nesprávná. Pokud se pokusíte o vzájemné ověřování a selže, můžete zkontrolovat slovník a zjistit vypočítaný hlavní název služby (SPN). Do slovníku není zadán žádný hlavní název služby (SPN), pokud ověřovací protokol nepodporuje vzájemné ověřování.
Pokud chcete do tohoto slovníku přidat hodnotu hlavního názvu služby (SPN), použijte AbsoluteUri jako RequestUri klíč hodnotu. Interně je klíč zkrácen tak, aby zahrnoval Scheme, Hosta Port pokud není výchozím portem.
Poznámka:
Přístup k metodám a vlastnostem vyžaduje CustomTargetNameDictionary neomezené WebPermission.
Poznámka:
Při ověřování protokolem Kerberos prostřednictvím proxy serveru je potřeba přeložit hlavní název hostitele na hlavní název služby (SPN). Překlad názvů proxy serveru je chráněný vypršením časového limitu. Překlad konečného názvu hostitele na hlavní název služby (SPN) vyžaduje vyhledávání DNS a k této operaci není přidružený žádný časový limit. Synchronní operace proto mohou trvat delší dobu vypršení časového limitu. Pokud to chcete překonat, přidejte před žádostmi do mezipaměti hlavního názvu služby (SPN) předponu identifikátoru URI konečného hostitele.
Verze 3.5 SP1 teď ve výchozím nastavení určuje název hostitele použitý v adrese URL požadavku v hlavním názvu služby (SPN) při ověřování NTLM (NT LAN Manager), pokud CustomTargetNameDictionary vlastnost není nastavena. Název hostitele použitý v adrese URL požadavku se může lišit od hlavičky hostitele zadané v System.Net.HttpRequestHeader požadavku klienta. Název hostitele použitý v adrese URL požadavku se může lišit od skutečného názvu hostitele serveru, názvu počítače, IP adresy počítače nebo adresy zpětné smyčky. V těchto případech systém Windows požadavek na ověření nezdaří. Pokud chcete tento problém vyřešit, možná budete muset windows upozornit, že název hostitele použitý v adrese URL požadavku v požadavku klienta (například contoso) je ve skutečnosti alternativním názvem místního počítače.