Проблема
У меня есть веб-служба WCF, которую я размещаю в качестве веб-службы в IIS7.5. Я хочу, чтобы эта услуга была доступна только двум группам. Веб-служба работает успешно, хотя, похоже, аутентификация не выполняется.
У меня сложилось впечатление (прочитав кучу страниц MSDN, подтверждающих это), что все, что действительно нужно было сделать, это включить аутентификацию Windows на сайте приложений, отключить анонимную аутентификацию, установить режим для окон в файле web.config и Добавьте правила Разрешить / Запретить в раздел авторизации, как показано ниже:
<system.web>
<authentication mode="Windows" />
<compilation debug="false" strict="false" explicit="true" targetFramework="4.0" />
<pages /> <!-- Omitted -->
<authorization>
<allow roles="Managers" />
<allow roles="Operations" />
<deny users="*" />
<deny users="?" />
</authorization>
</system.web>
После выполнения вышеуказанных шагов и внесения изменений в web.config после перехода на страницу авторизации в IIS и перезагрузки правил аутентификации вызов службы через WCFTestclient показывает, что она работает без сбоев. За исключением того, что я не являюсь частью ни одной из этих двух групп ...
Вопросы
Похоже, он просто впускает кого-то. Мои вопросы:
- Есть ли способ увидеть пройденные и не пройденные проверки подлинности на веб-сервисе? (Если так, я могу видеть, происходит ли какая-либо аутентификация).
- Вышеупомянутое выглядит правильно? Это кажется немного простым, но, учитывая метод Microsoft, не так уж и далеко, что нечто столь стандартное было бы довольно просто настроить.
Нижняя линия
У меня есть служба с вышеуказанным файлом web.config и экземпляр IIS7.5 с установленной и включенной аутентификацией Windows. Анонимная аутентификация отключена. Правила аутентификации определены для двух групп, чтобы иметь доступ, и для всех остальных должно быть отказано, и все же, несмотря на то, что я нахожусь в этих группах, я могу получить доступ к сервису.
EDIT:
Итак, похоже, у меня работает аутентификация. Если у меня есть только правило «Разрешить всем пользователям», у меня есть доступ к веб-сервису. Если я приму правило «Запретить всем пользователям», у меня больше не будет доступа. Однако, если я добавлю свою учетную запись («домен \ MyAccount» в качестве разрешения (независимо от позиции в web.config), у меня все равно не будет доступа.
Что я изменил, чтобы попасть сюда,
В определение сервиса добавлено следующее:
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Required)> _
В web.config добавлено следующее:
<system.web>
<authentication mode="Windows"/>
<authorization>
<deny users="*"/>
<allow users="sierra\cblissittekeps"/>
</authorization>
</system.web>
и
<system.servicemodel>
<bindings>
<basicHttpBinding>
<binding name="ADServiceBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<system.servicemodel>