Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak przekazać poświadczenia uwierzytelniania systemu Windows z klienta do usługi interfejsu API sieci Web


W moim środowisku korporacyjnym IIS7.5 obsługuje zarówno usługę interfejsu API sieci Web, jak i oddzielną witrynę internetową, która wywołuje tę usługę za pośrednictwem biblioteki RestSharp. Oba są obecnie skonfigurowane z uwierzytelnianiem systemu Windows.
Jeśli przejdę do dowolnej z nich za pomocą przeglądarki, zostanie poproszony o podanie swoich poświadczeń systemu Windows, a wszystko będzie działać idealnie ... Dostaję strony internetowe, których potrzebuję, a usługa odpoczynku wypluwa moje dane. Część, którą walczę, aby zrozumieć, jest używanie niektórych poświadczeń do uwierzytelnienia obu. Nie mogę zrozumieć, jak przenieść usługę poświadczeń strony internetowej (próbowałem dać sobie dla niej, ale nie działa) lub ręcznie poprosi o nazwę/hasło użytkownika od użytkownika, a następnie uwierzytelnić je za pomocą "Windows".
Pomóż noobowi się okazuje?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Ustawienia internetowego interfejsu API

  • Włącz
    uwierzytelnianie systemu Windows


Ustawienia aplikacji internetowej

  • Włącz
    uwierzytelnianie systemu Windows
  • Dodaj
    & < identity impersonate = "true"/& >
    do
    & < system.web & >
    z web.config
  • Dodaj następujące elementy do web.config:
    <system.webServer> <validation validateIntegratedModeConfiguration="false"/> </system.webServer>
  • Włącz
    Windows Authentication
    i
    ASP.NET Impersonation
    w IIS

Możesz użyć poniższego kodu, aby POST dane do internetowego interfejsu API (i GET jest również oczywiste)
using (var client = new WebClient { UseDefaultCredentials = true })
{
client.Headers.Add(HttpRequestHeader.ContentType, "application/xml; charset=utf-8");
byte[] responseArray = client.UploadData("URL of web API", "POST", Encoding.UTF8.GetBytes(XMLText));
string response = Encoding.ASCII.GetString(responseArray);
}
NOTE
: jeśli nadal otrzymujesz błędy 401, może być konieczne użycie adresu IP zamiast zwykłej nazwy domeny dla adresu URL (np. 155.100.100.10 zamiast mycompany.com)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz w swojej witrynie podszywania się pod inne osoby, a interfejs API działa na tym samym serwerze, powinno działać.
http://msdn.microsoft.com/en-us/ library/aa292118(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx
Jeśli jednak przeniesiesz interfejs API na inny serwer z witryny, przestanie to działać. Instalacja dwuserwerowa wymaga delegowania protokołu Kerberos.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się