Я пытаюсь вызвать веб-службу, размещенную в IIS, с применением безопасности проверки подлинности Windows.INDY TIdHttp Интегрированная проверка подлинности безопасности с помощью SSPI
Я использую Delphi XE с INDY 10 и компонентом TIdHttp.
Я могу успешно позвонить в веб-службу, если я передаю действительное имя пользователя и пароль, но я хотел бы использовать Integrated Security, чтобы он автоматически использовал учетные данные из вызывающего потока и не требует, чтобы пользователь вручную вводил свои данные ,
Я включил IdAuthenticationSSPI в пункте изез и вызовите запрос HTTP, как:
IdHttp1.Request.BasicAuthentication := False;
IdHttp1.HTTPOptions := [hoInProcessAuth];
// IdHttp1.Request.Username := '...'; // including this works
// IdHttp1.Request.Password := '...'; // including this works
IdHttp1.Get(myURL, myOutputStream);
Я понимаю, что с IdAuthenticationSSPI он будет выдавать себя за пользователя вызывающего потока, если не передаются полномочия.
Я видел комментарии на сайте atozedsoftware.newsgroups, которые предполагают, что это возможно, но, к сожалению, я получаю «HTTP/1.1 401 Unauthorized».
Есть ли у кого-нибудь предложения?
вы попробуйте URL с помощью браузера (IE, FF)? Если они работают, вы можете использовать Fiddler, чтобы сравнить их HTTP-связь с Indy. – mjn
Да. С помощью скрипача я вижу результаты 401, которые ведут переговоры в разделе авторизации. Браузер и приложение Delphi (с именем пользователя/пароль) меняются от Negotiate до NTLM, а затем возвращают 200. С именем пользователя, пароль прокомментировал это, он никогда не пропустит 401 записей переговоров. – Mattl
'IdAuthenticationSSPI' в настоящее время не выполняет проверку подлинности« Переговоры ». Это [известная проблема] (http://code.google.com/p/indyproject/issues/detail?id=236&start=100), которая еще не исправлена. –