Поддержка нескольких политик аутентификации в веб-приложении ASP.NET 4 - PullRequest
2 голосов
/ 14 февраля 2011

Рассмотрим приложение, которое включает в себя набор веб-служб ReST, созданных с использованием ASP.NET 4 и собственных модулей C ++ IIS.

Нам необходимо иметь возможность поддерживать 2 политики проверки подлинности:

  • внутренние пользователи могут вызывать наши конечные точки ReST напрямую из другого клиентского приложения (скажем, реализованного в Silverlight или Java), где они уже аутентифицированы по внутреннему провайдеру единого входа, предоставляя маркер безопасностикак часть HTTP-вызова.

  • для тестирования, мы хотим разрешить пользователям доступ к конечной точке ReST через браузер, поэтому нам нужно разрешить им проходить аутентификацию, введя имя пользователя / пароль(который мы будем проверять по единому входу на веб-сервере).Для этого мы рассматриваем возможность использования ASP.NET Forms или Digest.

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

Вопрос в том, как поддержать эти 2 сценария.

Я не могу найти решение, которое будет работать в обоих случаях:

  • Если я получаю звонок из приложения (не из браузера) и токен отсутствует, я не могу перенаправить их в login.aspx, так как вызывающее нас приложение не знает, что делатьсделать с кучей HTML (форма входа).Мне нужно вернуть код ответа 401.

  • Однако, если мне позвонят из веб-браузера, который не прошел проверку подлинности, я не смогу вернуть 401, не предложив пользователю возможность вводаих учетные данные.

Кто-нибудь сталкивался с этой проблемой раньше?

Заранее спасибо.

PS Тот факт, что некоторые веб-сервисы будут реализованы на C ++усложняет ситуацию, но если мы пойдем с аутентификацией форм, по крайней мере, я смогу использовать интегрированный конвейер и использовать формы для собственного модуля.

1 Ответ

0 голосов
/ 18 февраля 2011

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

Например:

  • клиент запрашивает ресурс
  • сервер отвечает с 401 и WWW-Authenticate: Basic, Custom Realm: защищенная область
  • браузеры могут отвечать учетными данными в соответствии с базовой аутентификацией доступа (например)
  • вызовы отв других приложениях, которые уже прошли проверку подлинности, пользователи будут предоставлять токен с использованием «пользовательской» схемы проверки подлинности.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...