Анонимный доступ с помощью WIF

#wcf #wif

#wcf #wif

Вопрос:

После тщательного поиска ответа на SO, на этот раз я должен задать свой первый вопрос навсегда!

Далее:
у меня есть приложение Windows Forms, которое использует дюжину служб WCF для обработки всей бизнес-логики. WIF реализован в каждой отдельной службе WCF, и аутентификация пользователей осуществляется с помощью базовой аутентификации по имени пользователя.
Все работает хорошо, за исключением метода Ping (), который у нас есть.
До внедрения WIF мы вызывали каждую службу WCF с помощью фиктивного метода Ping() во время заставки, чтобы убедиться, что служба запущена, но теперь пользователь не может получить доступ к этому методу, поскольку он еще не вошел в систему.

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

У меня сейчас совсем нет идей, поэтому я был бы очень признателен за любую помощь или просто несколько советов 🙂

Ответ №1:

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

В качестве примера:

 <location path="AnonymousServices">
    <system.webServer>
        <modules>
            <remove name="WSFederationAuthenticationModule" />
            <remove name="SessionAuthenticationModule" />
        </modules>
    </system.webServer>
</location>
  

Я не пробовал это на практике, но это должно сработать.

Комментарии:

1. или просто добавьте раздел авторизации, позволяющий анонимным пользователям (в теге location)