2015-11-19 5 views
0

В настольном приложении я использую службу REST.Перенаправление проверки подлинности вручную при использовании службы REST в .NET.

Услуга выполняет пользовательскую аутентификацию. Когда URI вызывается в браузере (запрос GET), в браузере появляется страница аутентификации, и вы должны ввести свои учетные данные. После успешной проверки подлинности вы будете перенаправлены обратно на исходный адрес. Запрос GET снова отправляется браузером, и вы получаете ответ службы (документ JSON).

Моя цель - каждый раз, когда вызывается служба, и учетные данные пользователя не предоставляются (coockie после успешной проверки подлинности), маска входа должна отображаться в веб-элементе управления в рабочем приложении, а не в новом окне браузера.

Моя реализация довольно примитивно:

var proxy = new WebClient(); 
var str = proxy.DownloadString("https://mycompany.net/myservice/Entity/123"); 

Моя проблема заключается в том, что в случае, если не предусмотрены учетные данные пользователя, запрос не сгенерирует исключение ни событие, не увольняют. Но в строке ответа я вижу содержимое HTML на странице аутентификации. Таким образом, перенаправление происходит как-то внутри, и я не мог знать, является ли возвращенная строка объектом JSON или некоторой HTML-страницей.

Можете ли вы рассказать мне, использую ли я правильный класс для этой задачи и как я могу перехватить запрос, чтобы знать, что должна быть предоставлена ​​аутентификация?

ответ

1

Что вы делаете, это использование механизма проверки подлинности веб-приложений (переадресация браузера на страницу входа) для веб-службы, что приведет к проблемам, которые вы испытываете. У вас возникли бы аналогичные проблемы, если бы вы пытались использовать эту услугу у мобильного клиента или из JavaScript (вызов AJAX).

Вы не указываете, управляете ли вы службой REST, но если вы это сделаете, вы должны изменить механизм аутентификации, чтобы ожидать токен-носитель и вернуть ответ , когда заголовок отсутствует.

Клиент (настольное приложение в вашем случае) должен аутентифицировать пользователя и получить токен JWT для отправки в заголовке Authorization при вызове службы REST.

+0

Я использую услугу из мобильного приложения. Служба REST не находится под моим контролем, поэтому я не могу ее изменить, но я понял, что на странице аутентификации есть маркер входа в URL. Это я буду использовать в качестве проверки, был ли я перенаправлен на страницу входа в систему, а затем я покажу содержимое URL-адреса в WebControl. Спасибо за ваш ответ! ;-) – llasarov

 Смежные вопросы

  • Нет связанных вопросов^_^