Как включить базовую аутентификацию в службе WCF 4.0 REST? - PullRequest
3 голосов
/ 28 июня 2011

Прежде всего, есть много статей в сети, но большинство из них для WCF 3.5.Я использую некоторые функции WCF 4.0, что делает сценарий немного другим.

Ниже приведен мой контракт:

[ServiceContract]
    public interface IService1
    {

        [OperationContract]
        [WebGet(UriTemplate="x?v={value}")]
        string GetData(int value);
    }

Ниже приведен мой класс обслуживания:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }

Ниже приведен мой web.config

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint automaticFormatSelectionEnabled="true" />
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
    <handlers>
      <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd"/>
    </handlers>
  </system.webServer>

Я не использую svc-файл, поэтому в Global.asax я написал следующую строку кода, чтобы представить мой сервис по пути 'blah'

protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.Add(new ServiceRoute("blah", new WebServiceHostFactory(), typeof(Service1)));
        }

Теперь для включения базовой аутентификации, если я изменяю стандартную конечную точку в web.config следующим образом:

<standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint automaticFormatSelectionEnabled="true">
          <security mode="Transport">
            <transport clientCredentialType="Basic" />
          </security>
        </standardEndpoint>
      </webHttpEndpoint>
    </standardEndpoints>

Я получаю следующую ошибку:

Не удалосьнайти базовый адрес, который соответствует схеме https для конечной точки с привязкой WebHttpBinding.Схемы зарегистрированных базовых адресов: [http].

Что я должен сделать с этого момента, чтобы он заработал?И где я буду проверять имя пользователя / пароль, предоставляемые при каждом запросе?

1 Ответ

2 голосов
/ 28 июня 2011

Это нельзя проверить в ASP.NET Development Server, и для работы в IIS 7.5 нам нужно установить базовую аутентификацию, а также нам нужно создать сертификат и связать привязку ssl с этим приложением.

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

Нет способа изменить его, чтобы аутентифицировать его самостоятельно.

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