Mám problém s autentifikáciou NTLM na webových aplikáciách spoločnosti Owin, ktoré sa nachádzajú na internete. NTLM je povolené na strane servera i na strane klienta. V klientovi používam RestSharp.
Zákazník
_client = new RestClient(ConfigurationManager.AppSettings["UserAccessApi"]);
_client.Timeout = 5000;
_client.Authenticator = new NtlmAuthenticator();
služba
var listener =
(System.Net.HttpListener)app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.IntegratedWindowsAuthentication;
app.UseWebApi(config);
Ak pristupujem k tomuto rozhraniu API prostredníctvom prehliadača IP alebo prehliadača Chromepráve funguje, zatiaľ čo ak ho sprístupníte prostredníctvom názvu hostiteľa alebo internetového prehliadača, nie. Predpokladám, že to súvisí s restsharp pomocou httpclient, ktorý používa IE engine, ktorý v našej spoločnosti má niektoré nastavenia zabezpečenia lokálnych / verejných sietí, ktoré sa dostávajú do cesty pre IE. Ktokoľvek mal podobnú otázku a mal nejaký nápad, ako ho prekonať bez toho, aby ste prešli nastavením "Zmeniť nastavenia IE"?
Názov hlavičky hostiteľa
Hlavička hovorov založená na IP
Fiddler log, 1. dávka - volanie hostiteľa, 2. dávka - ip
odpovede:
1 pre odpoveď č. 1Použitie funkcie AuthenticationSchemes.Ntlm by malo pomôcť. Ale je to viac ako riešenie, pretože to bude nútiť Ntlm.
0 pre odpoveď č. 2
Môžete vynútiť restsharp používať NTLM pomocou poverenia vyrovnávacej pamäte.
var url = ConfigurationManager.AppSettings["UserAccessApi"];
var credential = new CredentialCache
{
{
new Uri(url),
"NTLM",
new NetworkCredential(username, password)
}
};
_client = new RestClient(url)
{
Authenticator = new NtlmAuthenticator(credentials)
};
NetworkCredential
, čo je predvolené poverenie pre NTLM, nezdá sa, že by pracoval v takomto prípade.