Аутентификация с помощью BasicHttpBinding - PullRequest
1 голос
/ 22 сентября 2010

Я преобразовал свой веб-сервис в службу wcf, сохранив расширение службы wcf как asmx, поскольку у меня большая клиентская база и я не хочу просить пользователей изменить расширение. В настоящее время у меня есть аутентификация по имени пользователя / pwd для моих клиентов, из которой я хочу, чтобы они были удалены. Поскольку моя база пользователей вызывает мой веб-сервис со всех видов компьютеров и операционных систем, я не могу получить тип аутентификации, на который я могу их переместить.

Сертификат X509, выданные токены, имя пользователя pwd или что-то еще ..? Буду признателен за любую помощь или руководство с некоторыми примерами блоков кода или URL-адресов.

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

Если вы заменяете службу ASMX службой WCF, вы используете BasicHttpBinding (и, возможно, также AspNetCompatibility).В этом случае у вас не так много вариантов.Вы можете использовать Транспортную безопасность (HTTPS) с сертификатами клиента или TransportWithMessageSecurity (профиль токена HTTPS + UserName).Если вы не хотите использовать HTTPS и все еще хотите использовать профиль токена UserName, вам необходим .NET 4.0, и вам необходимо создать пользовательскую привязку, например:

<customBinding>
  <binding name="InsecureCredentials">
    <security mode="UserNameOverTransport" allowInsecureTransport="true" />
    <textMessageEncoding messageVersion="Soap11" />
    <httpTransport />
  </binding>
</customBinding>
0 голосов
/ 22 сентября 2010

В конечном счете, это зависит от того, кто обращается к вашему сервису, IMO.

Если это в первую очередь B-to-B, что означает, что ваши клиенты - это какой-то автоматизированный процесс, а не, скажем, приложение Silverlight, я бы предпочел удостоверения личности (т.е. x509). Если это пользовательский вызов, такой как приложение silverlight, то я буду придерживаться имени пользователя / пароля, но рассмотрим федеративную идентификацию.

Тем не менее, учитывая тот факт, что у вас много разных типов клиентов, даже если это b-to-b, нет никакой гарантии, что вы сможете обслуживать каждого клиента с x509. По моему опыту, слишком много магазинов просто недостаточно гибки, чтобы принять «более новые» стандарты (хотя x509 существует уже давно, он все еще «новый» для многих людей, совершающих звонки через веб-службы). Поэтому вам лучше придерживаться имени пользователя / пароля.

Вы могли бы предложить все три, однако. WCF очень, очень хорош в этом смысле; довольно просто настроить реализацию единой службы, которая только что поддерживает имя пользователя / пароль auth или x509 или федеративный идентификатор Почти все это обрабатывается конфигурацией привязки; вам может понадобиться некоторый код плагина для аутентификации имени пользователя / пароля (в зависимости от того, как вы настроены), но код аутентификации полностью отделен от кода сервиса.

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