wcf wsHttpBinding и отключение анонимного доступа - PullRequest
5 голосов
/ 23 октября 2008

http://blogs.msdn.com/drnick/archive/2007/03/23/preventing-anonymous-access.aspx

Может кто-нибудь уточнить, можно ли использовать wsHttpBinding в WCF и отключить анонимный доступ в IIS без необходимости транспорта (ssl) или защиты сообщений?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2008

вы правы, afaik в описываемом вами сценарии wsHttpBinding требует от нас использования внутреннего стека безопасности WCF. Так что вы обычно делаете

  • оставить анонимный доступ включенным
  • создать служебное поведение с помощью
  • комментирует каждую конкретную реализацию метода службы с использованием PrincipalPermissionAttribute, который является довольно мощным инструментом с множеством различных опций для контроля доступа

Будет ли это приемлемым решением для вас или есть другие вопросы, которые стоит рассмотреть?

Базовый пример:

public class TestService : ITestService
{
  [PrincipalPermission(SecurityAction.Demand, Name = "testdomain\\administrator")]
  public string DoWork()
  {   
    return "Hello World " + Thread.CurrentPrincipal.Identity.Name;
  }
}

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfSecurity.Www.TestServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="WcfSecurity.Www.TestServiceBehavior" name="WcfSecurity.Www.TestService">
        <endpoint address="" binding="wsHttpBinding" contract="WcfSecurity.Www.ITestService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>    
  </system.serviceModel>
0 голосов
/ 24 октября 2008

мы хотим использовать встроенную безопасность Windows. Если вы отключите анонимный доступ в IIS и разрешите только окна, вы не сможете использовать wsHttpBinding с WCF без использования какого-либо режима безопасности (например, безопасность transrot, которая требует ssl).

Мы хотим использовать только аутентификацию Windows, но не обязательно использовать ssl для безопасности транспорта.

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

Мы не хотим переходить на basicHttpBinding, который бы поддерживал только аутентификацию Windows.

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