Я создал самообслуживаемую службу WCF REST (с некоторыми дополнительными средствами из WCF REST Starter Kit Preview 2). Это все работает нормально.
Теперь я пытаюсь добавить базовую проверку подлинности в службу. Но я попадаю в довольно большие блокпосты в стеке WCF, который мешает мне это делать.
Похоже, что HttpListener
(которые самообслуживаемые службы WCF используют внутри себя на низком уровне в стеке WCF) блокирует мои попытки вставить заголовок WWW-Authenticate
в самогенерируемый ответ 401 Unauthorized
. Почему?
Я могу заставить аутентификацию работать, если я забуду об этом заголовке WWW-Authenticate
(что, похоже, и Microsoft). Но это вопрос. Если я не отправлю назад заголовок WWW-Authenticate
, тогда веб-браузер не отобразит свой стандартный диалог входа в систему. Пользователь просто столкнется с страницей ошибок 401 Unauthorized
без возможности входа в систему.
Услуги REST должны быть доступны как для компьютеров, так и для людей (по крайней мере, на уровне запроса GET). Поэтому я чувствую, что WCF REST не выполняет основную часть REST здесь. Кто-нибудь согласен со мной?
Кто-нибудь получил обычную проверку подлинности с помощью автономной службы WCF REST? Если да, то как вы это сделали?
PS: Очевидно, что мои намерения использовать небезопасную обычную проверку подлинности основаны на том, что я также получаю HTTPS/SSL для моего сервиса. Но это другое дело.
PPS: я пробовал WCF REST Contrib (http://wcfrestcontrib.codeplex.com/), и это имеет точно такую же проблему. Похоже, что эта библиотека не была протестирована в сценариях самостоятельно.
Спасибо.