WCF запрещает неаутентифицированным пользователям на определенных конечных точках - PullRequest
0 голосов
/ 29 июля 2010

У меня есть сервисный проект WCF, в котором я реализовал пользовательскую базовую аутентификацию, следуя рекомендациям здесь , и все работает отлично!Однако я не могу найти способ запретить доступ неаутентифицированных пользователей только к определенным конечным точкам.

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

Мой web.config (фрагмент) таков:

  <system.web>
    <customErrors mode="Off"/>
    <authentication mode="None"/>
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
          <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        </assemblies>
    </compilation>
    <httpModules>
      <add name="CustomBasicAuthentication" type="WebServices.Auth.CustomBasicAuthenticationModule, WebServices"/>
    </httpModules>
    <authorization>
      <deny users="?"/>
    </authorization>

    <membership defaultProvider="defaultProvider">
      <providers>
        <add name="defaultProvider" type="WebServices.Auth.WSMembershipProvider, WebServices"/>
      </providers>
    </membership>
</system.web>

Конечные точки довольно просты:

<service name="WebServices.Distance" behaviorConfiguration="defaultBehavior">
  <endpoint address="" binding="webHttpBinding" bindingConfiguration="defaultBinding" contract="WebServices.IDistance" behaviorConfiguration="rest" />
</service>
.... more endpoints below here ....

Таким образом, вместо того, чтобы задавать все конечные точки, могу ли я отказать неаутентифицированным пользователям в конечной точке № 1 (или по имени, или как угодно).

Надеюсь, в этом есть какой-то смысл.Если нет, то не стесняйтесь.:)

1 Ответ

0 голосов
/ 29 июля 2010

Хорошо, простое решение.

Удалите раздел и поместите следующее непосредственно под разделом.

  <location path="Secure">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

Затем просто создайте папку с именем «Secure» и поместите нужные службы вместе с их интерфейсами в эту папку.

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

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